- 上:プロセスのCPU負荷は100%、90%sys
- strace:すべてのシステムコールが選択されています
- select:select(11、[8、10]、NULL、NULL、{0、10})= 0(タイムアウト)、fd8とfd10は両方ともfifoです
- vmstat -n 5:システムcsとシステム入力が非常に低い
- Linux:2.6.16.60
- CPU:4コア、Intel(R)Xeon(R)CPU E5504 @ 2.00GHz
それをどのように説明しますか?選択のタイムアウトを1秒に変更し、CPU sysの負荷を85%に変更しました。なぜですか?
selectのnfdsを最高のfdプラス1に変更しましたが、CPUsysの負荷はまだ高くなっています
編集-問題が解決しましたバグはselect
とは関係ありません。pthread_mutex_timedwaitの3番目の引数abstimeは絶対時間ですが、誤って相対時間を使用したため、CPUシステムの負荷が高くなりました。そして、なぜpthread_mutex_timedwaitは、高いcpu usr負荷ではなく、高いcpusys負荷を引き起こすのでしょうか。strace:selectシステムコールのみを表示し、他は表示しません