热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux怎么求代码花费的时间,linux–我怎么知道为什么我的Perl代码在内核空间花了这么多时间(顶部的“sy”)?...

当我运行我的程序“top”报告我在“sy”(内核空间)中花费了30%.我怎样才能获得更多相关信息?什么系统调用正在吞噬所有这一次,等等谢谢响应者

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

我怎样才能获得更多相关信息?什么系统调用正在吞噬所有

这一次,等等

谢谢响应者:

>听起来像Devel :: NYTProf很适合分析整个程序 – 但我在亚马逊Linux上安装它时遇到了麻烦.

>如果我只想要一个系统调用快照,那么strace似乎很棒.

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

最佳答案

您可以使用strace(1) – 跟踪系统调用和信号.

-c标志将生成由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

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。



推荐阅读
author-avatar
傻丫头苏婵_596
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有