我有一个正在挖掘私有区块链的进程,它占用了 100% 的 CPU。为此,我不需要那么多的计算能力,因此为了减少能源消耗,我需要将此特定进程配置为仅偶尔调度一次,以实现大约 10% 的 CPU 消耗。
如何减少特定进程获得的时间片?
答案1
您可以尝试使用类似的工具CPU限制(通常应该在流行发行版的存储库中可用)。它允许按百分比限制 CPU 使用率,这可能更方便。
cgcreate
否则,您可能想通过 cgroups-tools 控制它并使用/设置限制cgset
。您需要调整值cpu.cfs_period_us
和cpu.cfs_quota_us
。
答案2
#!/bin/bash
#reduces consumption to 10% CPU using `sleep`s
GETH_PID=$1
if [ "$GETH_PID" == "" ] ; then
echo usage $0 GETH_PID
exit
fi
while true
do
kill -STOP $GETH_PID
sleep 9
kill -CONT $GETH_PID
sleep 1
done