最高のUnixコマンドは何ですか?

最高のUnixコマンドは何ですか?

迅速なベンチマークのためにniceとioniceを組み合わせて最大の効果を得るにはどうすればよいですか?つまり、コマンドはできるだけ少ないリソースを使用します(まったくアイドル状態ではありません)。

(私はこれが `nice -n 19 ionice -c 2 [コマンド]のようなものだと思いますが、ioniceの "-n"(classdataパラメータ)についてはわかりません。マニュアルページは関連性について秘密です。)

ベストアンサー1

必要な完全なコマンドは次のとおりです。

chrt -b 0 nice -n 19 ionice -c 2 -n 7 [command]

最初のコマンドはchrtバッチ予約クラスに切り替えます。これはnice値に0.5を追加するのと同じです。 ionice の -n オプションは、リアルタイム( -c 1) とベストエフォート( -c 2) オプションの単純な優先順位であり、良い値と同様に (ただし 0 から 7 の範囲) 低い値がより高い優先順位を与えます。ただし、I / Oスケジューリングクラスと優先順位はデフォルトでCPUスケジューリングパラメータから派生してnice -n 19使用されるため、ioniceコマンドは必ずしも必要ではありませんionice -c 2 -n 7

ただし、CPUおよびI / O予約クラスをアイドルに設定すると、リソース使用量を完全に最小限に抑えることができます。どちらの場合も、「アイドル」スケジューラは実際にはアイドルスケジューラではなく、まだリソースを使用できますが、すべてがより優先順位が高くなります。

chrtCPUスケジューリングクラスには必須ではありませんが、次のようにコマンドも使用しますnice(優先順位はアイドルスケジューリングクラスで設定する必要があります)。0

chrt -i 0 {command or PID}

LinuxのコマンドはniceSVR4バージョンをミラーリングします。つまり、予約クラスを変更することはできず、良い値しか変更できません(Linuxの動作も従来のUNIXとは異なりますが、ややOTです)。もともと代替スケジューリングクラスはPOSIX.1Eリアルタイムでしたので、SCHED_RRスケジューリングSCHED_FIFOクラスを設定するコマンドは最終的に呼び出されましたchrt。このオプションは、予約クラスの-i使用を指定します。SCHED_IDLE

I/O 予約クラスの場合、ionice正確なコマンドは次のとおりです。

ionice -c 3 {command or PID}

この-cオプションは、使用する予約クラスを指定します。 3 はアイドルクラスの数です。使用されるブロックI / Oスケジューラに応じて、これは実際には影響しない可能性があります。特に、I / Oスケジューラは優先順位やクラス予約をまったくサポートしておらず、スケジューラ(既存のスケジューラとblk-mqスケジューラの両方)もサポートしていないと確信していますnoopdeadline

自分のプログラムや他のプロセスに関する問題を調整するためにプログラムでこれを行うには、マニュアルページsched_setschedulerioprio_setシステムコールを確認してください(もう少し背景知識が必要な場合は両方とも価値があります)。

おすすめ記事