57得票5回答
为什么pthread互斥锁被认为比futex慢?

为什么 POSIX 互斥锁比 futex 重或慢?pthread 互斥锁类型的开销从哪里来?我听说 pthread 互斥锁基于 futex,在无争用时不会调用内核。看起来,pthread 互斥锁只是一个围绕 futex 的“包装器”。 这种开销是否仅在函数包装器调用和互斥锁函数需要“设置”f...

40得票1回答
FUTEX_WAIT和FUTEX_WAIT_PRIVATE有什么区别?

我一直在使用strace跟踪一个进程,并看到了以下条目:futex(0x7ffff79b3e00, FUTEX_WAKE_PRIVATE, 1) = 1 futex(...

18得票2回答
Java定期在futex上停顿,IO输出非常低。

目前我的应用程序定期在IO阻塞,并且输出非常低。我使用一些命令来追踪这个过程。 通过使用jstack,我发现该应用程序在FileOutputStream.writeBytes处挂起。 通过使用strace -f -c -p pid收集系统调用信息,我发现,在正常情况下,它具有Futex和W...

17得票1回答
当争用futex时,系统CPU使用率高

我注意到当Linux futexes竞争时,系统花费了很多时间在自旋锁上。即使没有直接使用futexes,也在调用malloc/free、rand、glib mutex calls等系统/库调用时出现问题,并进行调用futex。有任何方法可以消除这种行为吗? 我正在使用内核版本为2.6.32...

15得票1回答
如何在strace中调试futex争用问题?

我正在调试一个多线程的Linux进程,其中某个线程似乎在几秒钟内没有运行。查看strace输出发现它在等待futex,例如: 1673109 14:36:28.600329 futex(0x44b8d20, FUTEX_WAIT_PRIVATE, 1673109 14:36:33.221850...

15得票2回答
在多线程环境中使用libcurl会导致与DNS查找相关的非常缓慢的性能问题。

不好意思,这里有一大块代码,但我认为这几乎是我的问题的最小复现。这个问题不仅出现在 example.com 上,而且还在许多其他网站上持续存在。 如果我有4个线程正在进行网络请求,则 curl 的工作完全正常。 如果我添加一个以上的线程,则该线程执行所需的时间会增加约10倍。我觉得肯定有些...

12得票2回答
使用std::atomic和futex系统调用

在C++20中,我们获得了在原子变量上休眠并等待其值改变的能力。我们通过使用std::atomic::wait方法实现这一点。不幸的是,虽然wait已经标准化,但wait_for和wait_until没有。这意味着我们不能在具有超时的原子变量上休眠。无论如何,在原子变量上休眠都是通过Windo...

10得票2回答
futex机制返回了一个意外的错误代码?

在同一进程中使用存储在共享内存中的rwlock对象的两个线程在pthread压力测试期间遇到崩溃。我花了一段时间尝试查找内存损坏或死锁,但目前还没有发现。这只是通知我已经创建了死锁的不太理想的方式吗?有关调试此问题的工具/方法的任何指针? 线程5“tms_test”收到信号SIGABRT,中...

9得票2回答
调试futex锁

我有一个进程正在等待futex: # strace -p 5538 Process 5538 attached - interrupt to quit futex(0x7f86c9ed6a0c, FUTEX_WAIT, 20, NULL 我该如何最好地调试这种情况?我能够识别持有fute...

7得票3回答
Python 2.6和2.7多线程性能问题(futex)对比

我有一个简单的 Monte-Carlo Pi 计算程序。我尝试在两个不同的设备上运行它(硬件相同,但内核版本略有不同)。结果发现在一台设备上性能下降明显(用时是另一台的两倍)。没有使用线程时,性能大致相同。对程序进行分析表明,速度较慢的程序在每次 futex 调用时花费的时间较少。 这与任...