今天实验了一下Linux内核对实时进程的CPU bandwidth的hard limitation控制,结果发现不能修改/proc/sys/kernel下的sched_rt_runtime_us:
# echo 900000 > sched_rt_runtime_us
的时候老是出错,大意是:invalid parameter。我记得前几天在家里的电脑上是可以的,家里的内核版本是3.2.9好像,现在出错的内核版本是3.4.3,难道这么快就改了?我又google一把,发现原来问题的根源大约是这样的,/proc/sys/kernel下的sched_rt_runtime_us是全局控制的(老大,CXO级别的),因为我之前apt-get install了一个cgroup-bin(好像是),装好这东西后,我的/sys/fs目录下生成了cgroup等一大坨东西,对于cgroup也是最近刚刚接触,以前只是知道它的存在。按照这位老兄()的说法,那么我的理解是/sys/fs/cgroup下应该是root group(算是顶级部门老大吧)的领地了,然后我检查了一下root group下cpu里的cpu.rt_runtime_us的值,发现是950000,和CXO的一样,那么我之前做的举动无疑是直接缩小CXO的权限而不涉及顶级部门的权利,这怎么行?
然后我就先行修改/sys/fs/cgroup/cpu/cpu.rt_runtime_us的值为800000,然后再把/proc/sys/kernel下的sched_rt_runtime_us改成850000,就可以了。
写这篇博文时,外面正下着雨,这天气很适合在家睡觉 :)
阅读(11726) | 评论(2) | 转发(1) |