- 顶部:进程的CPU的负荷为100%和90%SYS
- strace的:所有的系统调用选择
- 选择:选择(11,[8,10],NULL ,NULL,{0,10})= 0(超时)的FD 8和FD 10都是FIFO
- 的vmstat -n 5:系统CS和系统中是非常低的
- Linux操作系统:2.6.16.60
- cpu:4核,Intel(R)Xeon(R)CPU E5504 @ 2.00GHz
如何解释呢?我已经改变了选择的超时时间为1秒,CPU系统负载改变为85%,为什么?
为什么选择导致高cpu系统负载?
已经改变的选择NFDs的最高的FD加一,仍然高CPU负载SYS
编辑 - 问题解决
的错误无关,与选择,pthread_互斥_timedwait的第三个参数是绝对时间绝对时间,但我通过使用错相对时间采取,这导致了高cpu系统负载。
为什么pthread_互斥_timedwait导致高CPU负载SYS,不高的CPU负载USR?
strace的:只看到select系统调用,没有其他
的第一个参数'select'应该是你拥有最高文件描述符加一,你的情况,应该是11,而不是1024 – dreamlax 2013-03-25 08:47:05
事实上(手册页):*第一个NFDs的描述符中的每一组检查;即在描述符集中从0到nfds-1的描述符被检查* – 2013-03-25 08:53:27
@dreamlax我已经将nfds更改为最高fd加1,但是cpu sys并没有更好。 – pengdu 2013-03-25 09:22:18