単一プロセスのスケジューリング時間の短縮

単一プロセスのスケジューリング時間の短縮

プライベートブロックチェーンを採掘するプロセスがあり、CPUの100%を占めています。これにはそれほど多くのコンピューティングパフォーマンスが必要ないため、エネルギー消費を減らすために、この特定のプロセスを時々予約するように構成して、約10%のCPU消費を達成する必要があります。

特定のプロセスにかかる時間をどのように短縮できますか?

答え1

次のツールを試すことができます。CPU制限(一般的に人気のあるディストリビューションのリポジトリで使用できます。)CPU使用率をパーセンテージに制限することができ、より便利です。

cgcreateそれ以外の場合は、cgroups-toolsと制限の有効化/設定で制御できますcgsetcpu.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

関連情報