优先使用哪个,Nice还是IOnice?这有关系吗?还有其他的方法可以减轻脚本对服务器的负载吗?

3
我一直在尝试以更好的方式在活动服务器上从bash脚本运行gzip,但它总是会使负载平均值超过我的预期。以下哪种方式对I/O和CPU更轻?是否还有其他我不知道的方法?
1. /usr/bin/nice -n 19 /usr/bin/ionice -c2 -n7 gzip -9 -q foo* 2. /usr/bin/ionice -c2 -n7 /usr/bin/nice -n 19 gzip -9 -q foo*
此外,是否有类似于ulimit的命令可以帮助减轻服务器的负载?

我有一个类似的问题,关于在使用usr/bin/time时如何使用ionice。我不确定在time之前放置ionice是否会使时间变得“友好”,但实际进程不会,或者是相反的,将time放在前面会覆盖ionice(或两种方式都可以按预期工作)。 我同意下面的答案,但我想知道如何正式测试这个问题。 - Ricardo A.
不管哪个先执行,它们都不会做任何事情,只是设置进程资源限制/优先级,然后执行execve()函数... - peterh
1个回答

4
我不熟悉“ionice”的用法,但“nice”表示如果其他进程想要使用CPU,那么“nice”进程将更愿意等待一会儿。这不会影响CPU负载,因为它只是“运行队列”的长度度量,而其长度将保持不变。我猜“ionice”也是如此,但会影响磁盘负载。因此,“niceness”仅影响您的进程在队列中是否愿意让其他进程先行,但最终负载将是相同的,因为CPU/磁盘必须执行工作。
类比:可以将收银台后面的人视为类比。他们仍然需要处理队列,但队列中的人可能会互相让着到达收银机前。 “负载”是该队列的长度。

1
我点赞了,但是“您需要至少15个特权点”我刚注册,对页面不是很熟悉。更何况这不是我的母语,可能会成为一个障碍。感谢您抽出宝贵的时间来回答。另外,针对这个问题,我有一个解决方法,使用了一份额外的脚本来扫描服务器负载和IO负载,并发送信号以暂停和恢复。大致类似于以下内容: 如果avg > “硬编码值” kill -n 19 `ps -ef | grep "foo" | grep -v grep | awk '{print $2}'` 否则 kill -n 18 `ps -ef | grep "foo" | grep -v grep | awk '{print $2}'` - Karma Doe
@KarmaDoe 你可能想要了解一下 pgreppkill 工具。 - Kusalananda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接