「良い」だけでは十分ではないときにやるべきこと(FreeBSD)

「良い」だけでは十分ではないときにやるべきこと(FreeBSD)

私は最近x265私のワークステーションでいくつかのビデオをエンコードしましたが、問題が発生しました。nice -n 20 x265低い優先順位で起動しても、実行中はコンピュータの速度が遅くなります。すべてがまだ動作します。ただ…ゆっくり!端末に入力すると文字が表示されるまで遅延が発生する場合もあります。

これを抱えて生きなければなりませんか?それとも私が試してみることができる他のものはありますか?

編集する:たぶん以下は、nice値が実際に適用されたことを証明できますかx265NI列を見てください。

% ps -awux -O nice | egrep "x265|PID"
USER      PID  %CPU %MEM     VSZ     RSS TT  STAT STARTED       TIME COMMAND            PID NI TT  STAT       TIME COMMAND
nobody  56654 789.3  3.7  785656  623384 11  SN+J 11:56PM    6:05.80 x265 --input-csp 56654 20 11  SN+J    6:05.80 x265 --input-csp i420 --bframes 5 -

答え1

FreeBSDカーネルはI / Oスケジューラのようなものを実装します。スケジューリングスケジューリング。マニュアルページを見ると、デバイス固有のIOスケジューラのようです。個人的に私はこれがFreeBSDライブアプリケーションの良い基調だと思います。

rr推測ではありますが、ルートパーティションのブロックデバイスがスケジューラを使用するように設定され、gschedメディアファイルが別々のブロックデバイスに保存される可能性があります。これにより、オペレーティングシステムがI / O側でより迅速に応答できるようにすることもできます。 I / Oボトルネックが発生しますか?

おそらくgsched、プロセッサの優先順位の設定と共に、次のようなものを適用できます。rtprioおよび/またはidprio- メディアファイルのスループットが高い場合でも、基本オペレーティングシステムの応答性を向上させるのに役立ちます。

あるいは、CPU 固有の最適化に従ってポートをコンパイルして、より多くのプロセッサ帯域幅を得ることもできます。この効果を達成するために、ポート構築プロセスに適用可能で適用可能なフィールドがMACHINE_CPUARCHあります。 CPUTYPE/etc/make.confマニュアルページ]。もちろん、マニュアルはFreeBSDを使用してポートを構築する方法に関する多くのガイドラインを提供します。第5章]。私自身も古い東芝MACHINE_CPUARCH?=amd64ラップトップを使用していますCPUTYPE?=core2。プロセッサやブロックI/O機能に過負荷がかかった状態でベンチマークはしませんでしたが、LANゲートウェイとしてはうまく動作しているようです。

答え2

場合によっては、単一の I/O 操作が最初のデバイスで直接動作しない操作を含む、すべての I/O 操作のカーネルのパフォーマンスに影響を与えることがあります。

  • I / Oスケジューリングの優先順位を制御する最初の間接的な方法は、すでに述べたプロセスの猶予レベルを調整することです。最新のLinuxでは、nice値が19(最大値)のプロセスがデフォルトで次の場所にあります。最高の努力優先順位は(19 + 20)/ 5 = 7に等しく、これはこのクラスで使用できる最も低い優先順位です。より一般的には、これらのマッピング関数によると、その範囲は[0,7]である。

  • I / Oスケジューリングを制御するより直接的で強力な2番目の方法は、プロセスに割り当てられたI / Oスケジューリングクラスに手動で介入することです。これにより、プロセスを2つの追加クラスに入れることもできます。 リアルタイム教室、最善の努力レベル0より高い優先順位 アイドルクラス、最善の努力レベル7よりも優先順位が低いです。この最後の項目は、理論的には、他のI / O操作がアイドルスケジュールされたプロセス操作を待つことができないことを保証します。このniceコマンドと同様に、ionice指定された優先順位でプロセスを作成したり、既存のプロセスの優先順位を変更したりできます。このツールとLinuxカーネルのI / O予約の詳細については、次を参照してください。イオンズマンページ

それでは、プロセスを始めましたかionice -c 3 x265 ...

PS申し訳ありません。回答を投稿した後、質問に「FreeBSD」タグがあることがわかりました。このタグは次のように縮小できます。

FreeBSDにはI/Oスケジューラがないようです。この機能があり、非常に使いやすいLinuxシステムでタスクを実行することを検討できます。

答え3

「rctl」が欲しい

望むより:

man rctl

これにより、ユーザー、プロセス、刑務所、またはログインクラスごとにリソースを割り当てることができます。例えば

# user root, maximum reads of 400 transfers per sec (tps) per the whole user :
rctl -a user:root:readiops:throttle=400/user

# user root, maximum reads of 30Mb per sec (31,457,280 bytes) per the whole user :
rctl -a user:root:readbps:throttle=31457280/user

関連情報