中程度の可変量の CPU 負荷 (50% から 75%) の下に置く必要があるRHELボックスがあります。
これについて最善の方法は何ですか?私が気付いていないこれを行うことができるプログラムはありますか? これを実現するためにいくつかの C コードを書いて喜んでいますが、どのシステム コールが役立つかわかりません。
中程度の可変量の CPU 負荷 (50% から 75%) の下に置く必要があるRHELボックスがあります。
これについて最善の方法は何ですか?私が気付いていないこれを行うことができるプログラムはありますか? これを実現するためにいくつかの C コードを書いて喜んでいますが、どのシステム コールが役立つかわかりません。
これはまさにあなたが必要とするものです (インターネット アーカイブ リンク): https://web.archive.org/web/20120512025754/http://weather.ou.edu/~apw/projects/stress/stress-1.0.4.tar .gz
ホームページから: 「stress は、POSIX システム用のシンプルなワークロード ジェネレーターです。構成可能な量の CPU、メモリ、I/O、およびディスク ストレスをシステムに課します。C で書かれており、GPL の下でライセンスされているフリー ソフトウェアです。 ."
ソース コードを含む単純な素数検索プログラムを見つけます。ソース コードを変更して、目的の CPU 負荷が得られる遅延でメイン ループに nanosleep 呼び出しを追加します。
システムに負荷をかける一般的な方法の 1 つは、大きなソフトウェア パッケージを何度もコンパイルすることです。Linuxカーネルのようなもの。
ソース コードのコピーを取得し、tar.bz2 を抽出し、最上位のソース ディレクトリに移動し、カーネル構成を /boot から .config または zcat /proc/config.gz > .config にコピーし、do make oldconfig を実行します。真の間; do make clean && make bzImage; 終わり
SMP システムを使用している場合、make -j bzImage は楽しく、make タスクを並行して生成します。
これに関する 1 つの問題は、CPU 負荷の調整です。ディスクI/O待ち時以外は最大CPU負荷となります。
それは本当にあなたがテストしようとしているものに依存します。CPU 負荷をテストするだけの場合は、空の CPU サイクルを消費する単純なスクリプトで問題なく動作します。最近、個人的に RAID アレイのパフォーマンスをテストする必要があり、Bonnie++ と IOZone に依存していました。IOZone は、特に RAM よりも大きなファイル サイズを設定した場合、ボックスにかなりの負荷をかけます。
この記事にも興味があるかもしれません。
Lookbusy は、CPU 負荷の設定値を有効にします。 プロジェクトサイト
lookbusy -c util[-high_util], --cpu-util util[-high_util]
i.e. 60% load
lookbusy -c 60
これは、Bash スクリプトを使用して行うことができます。「ps -o pcpu | grep -v CPU」を使用して、すべてのプロセスの CPU 使用率を取得します。これらすべての値を合計して、現在の使用状況を取得します。次に、基本的にこれらの値をチェックし続け、現在の CPU 使用率を把握し、プロセッサを特定のしきい値に保つために計算された時間だけ待機するビジーな while ループを作成します。詳細が必要ですが、これが良い出発点になることを願っています。
私が見つけたこのCPU モニタースクリプトを見て、これを達成する方法について他のアイデアを得てみてください。
awk を使用して CPU をロードおよびハンマーする単純なスクリプト。スクリプトは数学的計算を行うため、 loadserver.sh への passwd の値が高いほど CPU 負荷がピークに達します。
スクリプト@をチェックアウトhttp://unixfoo.blogspot.com/2008/11/linux-cpu-hammer-script.html
おそらく、何らかの負荷生成ツールを使用してこれを達成するか、スクリプトを実行してすべての CPU サイクルを取得してから、niceとrenice
on プロセスを使用して、プロセスが取得するサイクルのパーセンテージを変化させることができます。
すべての空き CPU サイクルを占有する bash スクリプトの例を次に示します。
#!/bin/bash
while true ; do
true
done
「ナイス」コマンドを使用します。
a) 最優先: $ nice -n -20 my_command
また
b) 最低の優先度: $ nice -n 20 my_command
ここであなたの目標が何であるかわかりません。glxgears は 100% の CPU を使用すると思います。
したがって、CPU を 100% まで使用できることがわかっているプロセスを見つけてください。
4 つの CPU コア (0 1 2 3) がある場合、「タスクセット」を使用して、このプロセスを CPU 0 と 1 にバインドできます。これにより、ボックスの負荷が 50% になるはずです。それをロードするには、プロセスを 0 1 2 CPU に 75% バインドします。
免責事項: これはテストしていません。結果をお知らせください。これが機能したとしても、これから何を達成できるかわかりませんか?