gpt4 book ai didi

linux - 我怎么知道为什么我的 Perl 代码在内核空间 ("sy"中花费这么多时间)?

转载 作者:IT王子 更新时间:2023-10-29 01:04:14 24 4
gpt4 key购买 nike

当我运行我的程序时,“top”报告我在“sy”(内核空间)中花费了 30% 以上。

我如何才能获得更多相关信息?什么系统调用正在吃光所有这次等

感谢回复者:

  • 听起来 Devel::NYTProf 很适合分析整个程序——但我在 Amazon Linux 上安装它时遇到了问题。

  • 如果我只想要系统调用的快照,strace 似乎很棒。

更新:我这样做了,花在系统调用上的时间实际上可以忽略不计。我最好的猜测是线程卡在等待某些资源上。下面的答案仍然不错,但任何建议都会有所帮助。

最佳答案

您可以使用 strace(1) - 跟踪系统调用和信号-c 标志将产生按系统调用分组的聚合结果。 -p NUM 是要附加的正在运行的进程的 PID。监控爬虫(例如)看起来像这样:

stas@crawler2:~/ScrapMe$ strace -c -p 32184                                                                                                                                                                                              
Process 32184 attached - interrupt to quit
^CProcess 32184 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
48.00 0.000024 0 128 sendto
26.00 0.000013 0 76 write
26.00 0.000013 0 2652 2652 stat
0.00 0.000000 0 24 close
0.00 0.000000 0 226 poll
0.00 0.000000 0 78 rt_sigaction
0.00 0.000000 0 26 rt_sigprocmask
0.00 0.000000 0 52 alarm
0.00 0.000000 0 26 socket
0.00 0.000000 0 26 26 connect
0.00 0.000000 0 75 recvfrom
0.00 0.000000 0 26 getsockname
0.00 0.000000 0 26 getpeername
0.00 0.000000 0 26 getsockopt
0.00 0.000000 0 310 fcntl
0.00 0.000000 0 13 epoll_wait
0.00 0.000000 0 26 epoll_ctl
------ ----------- ----------- --------- --------- ----------------
100.00 0.000050 3816 2678 total

关于linux - 我怎么知道为什么我的 Perl 代码在内核空间 ("sy"中花费这么多时间)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13369856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com