小编use*_*616的帖子

如何调试系统中的futex拥塞

我有 perl 多线程脚本(“assp 反垃圾邮件代理”),它使用多个 perl 库。大约 2 小时后,在我的一台服务器上,脚本开始生成大量 futexed,这会消耗大量 cpu 功率。在其他服务器上,这种情况不会发生,因此它可能是在服务器资源出现某种竞争条件后开始发生的。向开发人员询问如何调试此问题的任何信息都没有得到回应。

使用 strace 或 sysdig 我发现这个 perl 脚本开始发出大量的 futex 请求。我如何调试它并找出所有这些内核 futex 是在哪个文件中生成的?我尝试过 sysdig 和 oprofile 但没有找到任何方法来检查它。

10 秒运行 strace:

# strace -f -p 6130 -c
Process 6130 attached with 8 threads - interrupt to quit
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 57.44    3.265528       16493       198           nanosleep
 28.53    1.622291       19313        84           poll
  8.54    0.485535           1    787123    169255 futex
  5.28    0.300018       75005         4           restart_syscall
  0.21 …
Run Code Online (Sandbox Code Playgroud)

kernel

5
推荐指数
1
解决办法
8385
查看次数

标签 统计

kernel ×1