注意linux 2.6.32内核高精度定时器带来的cpu sy暴涨的“问题_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 注意linux 2.6.32内核高精度定时器带来的cpu sy暴涨的“问题

注意linux 2.6.32内核高精度定时器带来的cpu sy暴涨的“问题

 2013/8/11 12:59:48  jackyrong  程序员俱乐部  我要评论(0)
  • 摘要:注意linux2.6.32内核高精度定时器带来的cpusy暴涨的“问题,根据http://hellojava.info/?m=201307所说的:linux在2.6.32内核以后支持了高精度的调度,在.32以前的内核里,即使你在java里写queue.await(1ns)之类的代码,其实都是需要1ms左右才会执行的,但.32以后则可以支持ns级的调度,对于实时性要求非常非常高的性能而言,这本来是个好特性。但不幸的是很多人在写代码的时候其实压根就没有要ns级调度的需求
  • 标签:Linux 问题 内核
注意linux 2.6.32内核高精度定时器带来的cpu sy暴涨的“问题,根据
http://hellojava.info/?m=201307所说的:

linux在2.6.32内核以后支持了高精度的调度,在.32以前的内核里,即使你在java里写queue.await(1ns)之类的代码,其实都是需要1ms左右才会执行的,但.32以后则可以支持ns级的调度,对于实时性要求非常非常高的性能而言,这本来是个好特性。

但不幸的是很多人在写代码的时候其实压根就没有要ns级调度的需求,纯粹只是随便写了一个类似10ns唤醒的策略,这个在内核升级到.32后就悲催了,直接就会看到cpu sy猛增,很容易以为是内核的bug,话说其实这可以认为是程序本身的bug。

在linux上可通过cat /proc/timer_list | grep .resolution来查看调度器的精度。

可通过修改/boot/grub/grub.conf,在相应的kernel行的最后增加highres=off nohz=off来关闭高精度(不建议这样做,最好还是程序本身做相应的修改)。
发表评论
用户名: 匿名