为了更具体一些:
我有一台Debian Squeeze Linux机器,其中有一个Web应用程序,可以在全球范围内使用。 到目前为止,我每晚(在欧洲)都有一堆耗费资源的cronjob,对区域用户体验没有太大的影响。 但是现在我无法承受服务器在任何时候都变慢。
有没有办法强制所有的cron脚本(cron.daily等)inheritance一个不错的和ionice优先?
感谢您的贡献!
米格尔
是…
你可以让脚本获得一组特定的环境variables,或者从脚本中运行nice / ionice。
但是,这不是一个很好的解决你的问题。
nice和ionice不是很好的长期解决scheme。 ionice实际上并不影响一些更高性能的Linux内核调度algorithm。 它可以与CFQ调度程序一起工作 ,但有可能是要在服务器系统上使用截止date调度程序 。 这可能比试图强制过程中的好/离子更大的影响。 您可能需要设置crond服务,并运行nice和ionice已经设置。
http://b.zekjur.net/2012/09/23/systemd-ionice.html
但是,我还没有testing过,所以我不能以这种或那种方式担保。
如果这样做不起作用,或者没有足够帮助,则需要configurationcgroup。
你可能最好有这些cron作业运行在一个单独的Linux用户,你可以限制到较低的优先级。 假设你有这样的用户batchuser用户。 在你的/etc/security/limits.conf ,你想为这个用户添加一个条目(-19到19,其中19是最低优先级):
batchuser - priority 19
那么这个用户启动的任何进程,不pipe是从cron还是不从,都将inheritance这个优先级。 没有修改脚本,没有env或configuration文件设置。
http://manpages.debian.org/cgi-bin/man.cgi?query=limits.conf