首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么选择导致较高的cpu系统负载?

为什么选择导致较高的cpu系统负载?
EN

Stack Overflow用户
提问于 2013-03-25 08:44:58
回答 1查看 3.3K关注 0票数 0
  1. 顶部:进程的cpu负载为100%,90%的sys。
  2. strace:所有的系统调用都是选择
  3. 选择:select(11,8,10,NULL,NULL,{0,10}) =0(超时),fd 8和fd 10都是fifo
  4. vmstat -n 5:系统cs和system in非常低。
  5. linux: 2.6.16.60
  6. cpu: 4个核心,Intel(R) Xeon(R) CPU E5504 @ 2.00GHz

怎么解释?我已经将select的超时更改为1s,cpu系统的负载更改为85%,为什么?

已将nfds的选择改为最高fd +1,仍然是高cpu系统负载

编辑--解决问题的

该bug与select无关,pthread_mutex_timedwait的第三个参数缩写为绝对时间,但我错误地使用了相对时间,这导致了较高的cpu系统负载。

和为什么pthread_mutex_timedwait导致高cpu系统负载而不是高cpu usr负载?

strace:只看到select系统调用,没有其他

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-25 09:18:59

您可能有一个坏的(断开连接)描述符。通常,这是在read select上加载这种负载的主要原因。

您可能有可用的数据,但永远不要阅读。同样的情况。

您可能会在select调用之间执行一些非常繁重的任务。

如果您的select总是返回0,那么问题不在select调用中。它在别处的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15610712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档