- 頂部:進程的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