他のオペレーティングシステムと同様に、-20(最も優先順位)から19(あまり優先順位)までのプロセス優先順位があることを知っていますが、Linuxはこれを無視しているようです。
今はバックグラウンドでカーネルを構築しています(make
プロセスの優先順位は0ですが)。時間がかなりかかるので、何かを見てみることにしました。そのため、VLC(Core2 2.6GHz CPU時間の約30%)でかなりトリッキーなH264ビデオを開きました。 。
そのため、VLCの使用優先順位を変更することにしrenice
、特にPulseAudioを見て-11
同等の位置に置くことにしましたsudo renice -11 -p VLC_PROC_#
。
同じことが起こり続け、-20に設定しましたが、まだ視覚的なアーティファクトが見え続けました。
もしそうなら、Linuxが実際にいくつかの0プロセスよりも-20プロセスの優先順位を指定し、必要なものをすべて提供しないのはなぜですか? Linuxでプロセスの優先順位を実際に指定する方法はありますか?
万が一に備え、ここではXFCEをデスクトップ環境として使用して64ビットArchを実行しています。
編集する:ソースコードが/tmp
あり、すべてがすでにRAMにある間、カーネルのコンパイルが行われました。tmpfs
RAM使用量が60%にも達せず、ページングも発生しません。
上記のシナリオは1つだけです。テストケース私は、Linuxがなぜこのように動作するのか、そして真の優先順位を得る方法があるのかに興味があります。
ベストアンサー1
renice
これはプロセスの優先順位に影響します。しかし、経験したように、プロセスの優先順位が高いからといって、必要なすべてのリソースがあるわけではありません。優先順位が高いほど、プロセスがリソースを獲得する可能性が高くなります。
renice
CPU 時間にのみ影響します。したがって、2つ以上のプロセスがCPU時間を置いて競合する場合にのみ影響します。制限要素がCPU時間ではなくI / O帯域幅の場合、nice値は何の影響もありません。おそらくあなたの場合、コンパイルは多くのディスク帯域幅を使用し、vlcはディスクからデータを十分に高速に読み取ることができません。努力するionice
交換または補完してくださいnice
。
これを頻繁に行うと、ビデオと編集内容が異なるディスクにある場合、より良い結果が得られます。また、ビデオをディスクキャッシュにプリロードしたり、cat /path/to/video.file >/dev/null
オフセット456 MBから始めて123 MBを読み取ったりすると、tail -c +456m | head -c 123m /path/to/video.file >/dev/null
より良い結果が得られます。ただし、RAMが多いと、コンパイル時にキャッシュスペースが回復する可能性があります。メモリにビデオがあるかどうかを確認するには、仮想ディスクを作成してビデオをここにコピーします。