Advertisement

PV qspinlock 的基本原理是什么?

阅读量:

1 前言

自旋锁(spinlock)是一种专为多处理器系统设计的同步机制。当进程管理单元(PMU)检测到自旋锁状态为unlocked时,则会尝试获取该锁并继续执行当前操作;反之,在另一台CPU运行的相关PMU检测到目标锁处于locking状态时,则会进入"旋转"状态,在周围持续执行一段优化设计的指令循环直至目标锁被释放。自旋锁的核心逻辑基于一个假设:即持有该锁的任务主线程与等待该锁的任务主线程均无法被抢占资源。然而,在虚拟化环境中由于虚拟化技术的发展使得虚拟核心处理器(vCPU)可能随时受到hypervisor调度的影响而出现以下两个关键问题:一是已锁定资源的相关主线程可能会因其他vCPU上的相关主线程长时间停滞不前而引发Lock Holder Preemption(LHP)问题;二是处于等待状态的相关主线程可能会因其他vCPU上的相关主线程长时间停滞不前而引发Lock Waiter Preemption(LWP)问题。

  • LHP:虚拟机中的lock持有者线程遭到抢占后不再能执行当前任务,在此期间其他lock等待线程陷入忙碌等待状态直至该lock持有者线程重新被调度并释放对应的lock之后这些lock等待线程才能重新获得所需的资源从line hold者的line被抢占到其重新被调度获取line的过程中其余line wait line threads的忙碌等待实际上是在浪

全部评论 (0)

还没有任何评论哟~