免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: lolizeppelin
打印 上一主题 下一主题

[函数] redhat 6 sleep怎么cpu占用高那么多? [复制链接]

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
11 [报告]
发表于 2013-06-14 16:50 |只看该作者
egmkang 发表于 2013-06-14 12:22
usleep(0)是放弃时间片
usleep(1000)是想1ms后唤醒,操作系统调度没有这么精确的,搞不好会忙等


如果希望本线程一定会挂起一小段时间以让出CPU,那么用哪个函数为好?
比如usleep(1000),即使系统没有那么精确,即使是10ms之后才唤醒本线程也无所谓,但一定要其让出一定的CPU时间,哪个函数合适?

论坛徽章:
1
射手座
日期:2013-08-21 13:11:46
12 [报告]
发表于 2013-06-14 23:01 |只看该作者
回复 11# w_anthony


太小了,就不合适,至少要10ms以上

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:09
13 [报告]
发表于 2013-06-15 14:29 |只看该作者
本帖最后由 lolizeppelin 于 2013-06-15 18:39 编辑
egmkang 发表于 2013-06-12 23:16
usleep(1000);还不如usleep(0);


usleep(0)cpu直接满了..........

nanosleep

1000000纳秒占用也一个样....

zhaohongjian000 发表于 2013-06-09 17:28
他的意思应该是,不要轮询,改用通知的机制。原帖问题的代码是每隔一定时间去看task list中有没有东西,完全可以改成向其中插入东西之后用条件变量唤醒。



他的代码可以,他用pthread_cond_wait,然后再插入后通过条件变量通知唤醒可以。
但问题是如果我必须用定时器呢....比如心跳包什么的,只能用定时器啊,没法弄成条件吧,这样定时器占用还是高啊!

测试了下用直接用pthread_cond_timedwait 来当usleep用效果好了很多....但是还是比5.4占用高...



论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
14 [报告]
发表于 2013-06-17 09:29 |只看该作者
egmkang 发表于 2013-06-14 23:01
回复 11# w_anthony


你的意思是如果想一定要挂起一小段时间,那么usleep(10000)就OK了?

论坛徽章:
1
射手座
日期:2013-08-21 13:11:46
15 [报告]
发表于 2013-06-18 14:50 |只看该作者
w_anthony 发表于 2013-06-17 09:29
你的意思是如果想一定要挂起一小段时间,那么usleep(10000)就OK了?


10ms以上也可以,或者通过cond唤醒也行
看你喜欢哪个
不过sleep肯定是不精确的

论坛徽章:
0
16 [报告]
发表于 2015-02-03 14:01 |只看该作者
您好,现在遇到一个问题,64位centos 6.5下线程函数里while循环里usleep(100)占大量cpu,32位下就不会,很您之前遇到的问题很相似,查阅了大量帖子、资料也没找出合适的解决办法,想请教下您当初是怎么解决的。

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:09
17 [报告]
发表于 2015-02-16 18:06 |只看该作者
1、代码里减少sleep 次数
比如你死循环里sleep(1ms)的改sleep 10ms

关闭高精时间

后者好像在虚拟机里无效

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 10:16:53
18 [报告]
发表于 2015-02-24 18:59 |只看该作者
user.qzone.qq.com/399353097
user.qzone.qq.com/509630746
user.qzone.qq.com/509152591
user.qzone.qq.com/355551311/infocenter
user.qzone.qq.com/509177493
user.qzone.qq.com/324899032
user.qzone.qq.com/659016249
user.qzone.qq.com/539688794
user.qzone.qq.com/509757372
user.qzone.qq.com/539978344
user.qzone.qq.com/509174981
user.qzone.qq.com/509381949/infocenter
user.qzone.qq.com/509706845
user.qzone.qq.com/509538542
user.qzone.qq.com/399353097
user.qzone.qq.com/509538542/infocenter
user.qzone.qq.com/572312186/infocenter
user.qzone.qq.com/620758348
user.qzone.qq.com/509420358
user.qzone.qq.com/620785774
user.qzone.qq.com/509313570
user.qzone.qq.com/509952466
user.qzone.qq.com/293534586
user.qzone.qq.com/620723803
user.qzone.qq.com/537730483
user.qzone.qq.com/509342569
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP