One*_*oob 5 linux perl performance
当我运行我的程序"top"报告我在"sy"(内核空间)中花费30 +%.
我怎样才能获得更多相关信息?什么系统调用一直在吃,等等.
谢谢响应者:
听起来像Devel :: NYTProf很适合分析整个程序 - 但我在亚马逊Linux上安装它时遇到了麻烦.
如果我只想要一个系统调用的快照,那么strace似乎很棒.
更新:我这样做了,系统调用花费的时间实际上可以忽略不计.我最好的猜测是线程在某些资源上等待.答案仍然很好,但任何建议都会有所帮助.
cre*_*ive 10
你可以用strace(1) - trace system calls and signals.
-cflag将生成由syscall分组的聚合结果.-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
Run Code Online (Sandbox Code Playgroud)
我想你应该对你的脚本进行分析 - 我强烈建议在这种情况下使用Devel :: NYTProf模块.
它很容易运行(什么比简单更容易perl -d:NYTProf yourscript.pl?),并且探查器工作的结果可以很容易地转换成一个完整的报告 - 使用此包中包含的实用程序 - 或使用更多'graphicky'工具KCachegrind.
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |