- top:进程的cpu负载为100%,sys为90%
- strace:所有系统调用都是select
- select: select(11, [8, 10], NULL, NULL, {0, 10}) = 0 (Timeout) , fd 8 和 fd 10 都是先进先出
- vmstat -n 5:系统cs和system in很低
- linux:2.6.16.60
- cpu: 4 核, Intel(R) Xeon(R) CPU E5504 @ 2.00GHz
怎么解释?我把select的超时时间改成了1s,cpu sys负载改成了85%,为什么?
已将select的nfds更改为最高fd加一,cpu sys负载仍然很高
编辑 - 问题已解决
该错误与select无关, pthread_mutex_timedwait 的第三个参数 abstime 是绝对时间,但我错误地使用了相对时间,这导致了高 cpu sys 负载。
为什么 pthread_mutex_timedwait 会导致高 cpu sys 负载,而不是高 cpu usr 负载?
strace:只看到 select 系统调用,没有其他的