余分なパッケージをインストールする必要はありません。古き良きシェルで単独で実行できます。
このワンライナーは、4つのコア1を100%でロードします。
for i in 1 2 3 4; do while : ; do : ; done & done
仕組みは非常に簡単で、4つの無限ループを開始します。それぞれがヌル命令(:
)を繰り返しています。各ループは、CPUコアを100%でロードできます。
あなたが使用している場合bash
、ksh93
および範囲をサポートしている他のシェル、(すなわちないdash
か、古いksh
)は、この非ポータブル構文を使用することができます。
for i in {1..4}; do ...
4
と異なる場合は、ロードするCPUの数に置き換えます4
。
これらのループの1つを起動したときに、バックグラウンドジョブがまだ実行されていないと仮定すると、そのコマンドで負荷生成を停止できます。
for i in 1 2 3 4; do kill %$i; done
@のunderscore_dさんのコメントに答えて、ここで多くの負荷を停止簡素化し、それはまた、タイムアウト(デフォルト60秒)Aを指定できるように強化されたバージョンであるControl- Cあまりにもすべての暴走ループを殺すでしょう。このシェル関数は、少なくともbash
およびの下で機能しksh
ます。
# Usage: lc [number_of_cpus_to_load [number_of_seconds] ]
lc() {
(
pids=""
cpus=${1:-1}
seconds=${2:-60}
echo loading $cpus CPUs for $seconds seconds
trap 'for p in $pids; do kill $p; done' 0
for ((i=0;i<cpus;i++)); do while : ; do : ; done & pids="$pids $!"; done
sleep $seconds
)
}
1 コアごとに複数のスレッドをサポートするCPU(ハイパースレッディング)では、OSはすべての仮想CPUに負荷をディスパッチすることに注意してください。その場合、ロード動作は実装に依存します(各スレッドが100%ビジーであるかどうかを報告する場合があります)。。
cat
同時に実行することは可能ですか?