spinlock

需要帮助来理解 armhf 内核 5.4 中的内核“死锁”
spinlock

需要帮助来理解 armhf 内核 5.4 中的内核“死锁”

我正在努力理解一种很少发生的情况(MTBF 以几周到几个月为单位测量),但一旦发生就会导致致命的内核锁定。 该环境是内核 5.4.0,在 AMD/Xilinx Zynq 7020 SoC 中的双核 ARM A9 32 位 (armhf) 处理器上运行。我已经能够使用 Xilinx Vitis 系统调试器检查两个故障设备上的堆栈跟踪。在这两种情况下,两个内核都在等待(尝试锁定)同一个自旋锁。自旋锁是与线程 IRQ 处理程序关联的结构pi_lock的成员。struct task_struct 核心 #0 正在运行空闲进程,响应中断,尝试唤醒 IRQ 处理程序线程...

Admin

自旋锁如何防止上下文切换?
spinlock

自旋锁如何防止上下文切换?

我使用此代码是为了直观地了解自旋锁如何阻止上下文切换: pthread_spinlock_t lock; void pp() { pthread_spin_lock(&lock); char d = 'D'; while(1) write(1, &d, 1); } void ppp() { char a = 'C'; while(1) write(1, &a, 1); } int main() { pthread_t thread; ...

Admin

关于自旋锁的一个问题
spinlock

关于自旋锁的一个问题

在研究自旋锁同步机制时,我注意到每个函数都有对应的宏,例如 spin_lock 有一个函数 static __always_inline void spin_lock(spinlock_t *lock) { raw_spin_lock(&lock->rlock); } 和宏观 #define spin_lock(x) pthread_mutex_lock(x) 为什么有两种不同的定义以及每种定义在什么情况下使用?多谢! ...

Admin

VirtualBox 下 Fedora 启动失败
spinlock

VirtualBox 下 Fedora 启动失败

我的一个学生在 VirtualBox 下使用 Fedora 虚拟机时遇到了困难: 我甚至不明白这里发生了什么。 你知道发生了什么事吗? (在左侧,您可以看到我广播的另一个虚拟机,这是该虚拟机的一个工作实例) 这有什么关系吗 https://access.redhat.com/solutions/658783? ...

Admin

Linux中的自旋锁是如何实现的?
spinlock

Linux中的自旋锁是如何实现的?

我正在考虑如何在 Linux 中为自旋锁实现“防止上下文切换”功能。大图片/伪代码是可以接受的,因为我只知道它背后的逻辑。 ...

Admin

基本自旋锁疑问
spinlock

基本自旋锁疑问

我读到,在自旋锁中,进程在循环中不断等待锁,直到它收到来自其他进程的信号(锁)或释放(锁)。这会导致忙等待,从而浪费 CPU 周期。 我的疑问是,如果CPU在循环中不断检查锁变量的值,那么其他进程如何完全执行临界区并释放锁,因为执行临界区也需要CPU,而CPU正忙于检查其他进程中锁的值? ...

Admin

如何监控自旋锁
spinlock

如何监控自旋锁

我想知道如何监控自旋锁。在我的客户中,我们遇到了 cpu 软锁定故障,如果我理解得很好的话,自旋锁可能是一个原因。 不同的团队使用该服务器使用 R、Python 和 SAS 进行预测建模,这意味着我们经常有许多并行运行的无监督进程,可能带有多处理库。 监控自旋锁的数量,或者更好的是,监控哪些进程使用了​​它们,可能有助于验证或取消它们作为我们频繁失败的原因(过去 3 周有 5 次失败)。 有什么办法可以监控他们吗?如果不是,我们怎么知道是什么导致了这些软锁定? ...

Admin