减少单个进程的调度时间

减少单个进程的调度时间

我有一个正在挖掘私有区块链的进程,它占用了 100% 的 CPU。为此,我不需要那么多的计算能力,因此为了减少能源消耗,我需要将此特定进程配置为仅偶尔调度一次,以实现大约 10% 的 CPU 消耗。

如何减少特定进程获得的时间片?

答案1

您可以尝试使用类似的工具CPU限制(通常应该在流行发行版的存储库中可用)。它允许按百分比限制 CPU 使用率,这可能更方便。

cgcreate否则,您可能想通过 cgroups-tools 控制它并使用/设置限制cgset。您需要调整值cpu.cfs_period_uscpu.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

相关内容