Unixコマンドで可能な最も良いものは何ですか?


9

クイックベンチマークテストでは、niceとioniceを組み合わせて最大の効果を得るにはどうすればよいですか。

(これは `nice -n 19 ionice -c 2 [コマンド]のようなものだと思いますが、ioniceの" -n "(classdata param)についてはわかりません。manページはその関連性について謎めいています。)


3
プラス1は賢い質問のタイトルですが、一般的には良い質問でもあります。
Lizardx 2017年

回答:


10

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

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

最初のchrtコマンドは、物事をバッチスケジューリングクラスに切り替えます。これは、0.5をnice値に追加することと同じです。ioniceの-nオプションは、リアルタイム(-c 1)およびベストエフォート(-c 2)オプションの単純な優先順位であり、値が小さいほど、優先順位が低いほど優先順位が高くなります(ただし、範囲は0〜7)。しかし、ioniceコマンドは、I / Oスケジューリングクラスと優先度がCPUのスケジューリングパラメータから導出デフォルトであることから、厳密には必要ではない、とnice -n 19暗示しますionice -c 2 -n 7

ただし、CPUとI / Oの両方のスケジューリングクラスをアイドルに設定することで、リソースの使用量を最小限に抑えることができます。どちらの場合も、「アイドル」スケジューラーは実際にはアイドルスケジューラーではなく、リソースを引き続き使用できます。すべての優先度が高くなるだけです。

CPUスケジューリングクラスの場合、これもchrt必要ではniceありませんが(0アイドルスケジューリングクラスで優先度をに設定する必要があります)、コマンドを使用し、次のようになります。

chrt -i 0 {command or PID}

niceLinux のコマンドはSVR4バージョンをミラーリングします。つまり、スケジューリングクラスを変更することはできません。nice値(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スケジューラーによっては、実際には何も影響しない可能性があることに注意してください。特に、noopI / Oスケジューラーは優先度やスケジューリングクラスをまったくサポートしていません。また、deadlineスケジューラー(レガシースケジューラーとblk-mqスケジューラーの両方)もサポートしていないと確信しています。

あなた自身のプログラムのために、または他のプロセスのために調整するためにこれをプログラムで行いたい場合は、sched_setschedulerおよびのioprio_setシステムコールのmanページを確認してください(より多くのバックグラウンドも必要な場合は両方とも読む価値があります)。


0

そのコマンドが他のユーザーが完了するのを完全に待機したくないので、リソースの枯渇の可能性がないようにすると、行は次のようになります。

nice -n19 [command]

以下のようioniceは、最近のLinuxカーネルに比例設定されます。

ちなみに、chrt -b0ナイスとは何の関係もありませんが、CPUがあるプロセスから別のプロセスにジャンプする頻度に関係します。この行は、バッチプログラムがキャッシュをより有効に利用するためにその時間を長くしますが、他のコマンドに対してはそれは役に立たないです。ここに見られるよう

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.