web-dev-qa-db-ja.com

Linuxは長い稼働時間の後に遅くなります

ときどき、openSUSE 13.1 64ビットシステムをKDEベースのままにして、再起動せずに数日または1週間放置します。しかし、アイドルスタンバイの夜の後、翌朝使用したいときにシステムが非常に遅くなることに気付きました。これまでのところ、実行してページキャッシュ、デント、iノードを解放しようとしています。

echo 3 > /proc/sys/vm/drop_caches

これは部分的にしか役に立ちません。システムの速度低下の原因を分析して解決する他の方法をお勧めできますか?

6
mabalenk

私も同じようなケースがあります。私のボックスには12GB RAMがあり、すべてのデスクトップアプリケーションがキャッシュなどにスワップアウトされました。私が思う主な理由は、キャッシュ(ダーティページ)がデフォルトで最大60%RAMを占める可能性があり、この制限に達すると、カーネルが突然6GBのダーティページをディスクにフラッシュしたいため、パフォーマンスが低下します。

/etc/sysctl.confの次のパラメーターで解決しました

# use only 10% of RAM for the cache (dirty pages).
vm.dirty_ratio=10 
# start flashing with 1% dirty pages
vm.dirty_background_ratio=1
3
paul

私もこれに気づきました。6年以上前に使用したシステムの場合はさらに気付き、質問があるまでそれを忘れていました。

朝またはさらに悪い週末にシステムに戻ると、端末でキーを押すか、Firefoxのタブをクリックすると、信じられないほどのディスクアクティビティがトリガーされます。

何が起こっていたかについての私の理論は、アクティビティはプロセスが再度スワップインされたことによるものであり、原因は利用可能な「空き」メモリの量を最適化するためにアイドルプロセスをスワップアウトするカーネルの積極的な性質によるものであり、これはおそらく新しいプロセスが開始される可能性がある場合のアクティブシステムに関する賢明なアイデアですが、これには特定の欠点があります。

これを確認する1つの方法は、vmstat 1 1実行中、残念ながら何かが実行されているとシステムのアイドル状態が低下するため、これは実験に影響を与えるため、午前中に開始するときに別の端末または別のプログラムで開始し、そのウィンドウがあなたが統計を見ることができるように見える。

開始すると、列のSISwapが表示されます。

どうすれば回避できますか?コンピューターをシャットダウンして(ラップトップで)サスペンドモードにするか、デスクトップで完全にシャットダウンします。単に最初から起動するよりも、休止状態から復帰するのに時間がかかり、起動時間が以前に比べて大幅に改善され、ディスクドライブが高速になり、メモリが安価になるため、休止状態を使用することはありません。 (当時、私のシステムには1 GBのメモリがありましたが、現在は4 GB以上あります)、スワップアウトがトリガーされるときと同様に、メモリ使用率の要素があると思います。したがって、より多くのメモリが役立ちます。

スワップネスに影響するカーネル調整パラメーターがあります

現在の設定を確認するには:

cat /proc/sys/vm/swappiness

値は0〜100の間で、100は物理メモリポリシーからの最も積極的なスワップアウトを意味し、0は最も積極的でないことを意味します。

値をその疑似ファイルにエコーするだけで変更できます。

例えば

echo 20 > /proc/sys/vm/swappiness

スワップ性に関連する良い記事といくつかのパフォーマンスリンクがあります ここ

1を編集して@Gillesに回答します

私も何年もマシンを稼働させてきましたが、実際に施設を移転したためにシャットダウンしただけで、software rotのようなものがあるとほのめかしていませんが私も私が説明したことを正確に経験したことだけです、あなたがssh経由でログインしたとき、それはサーバーでは明らかではありません、しかしそれは眠っていないとき、シフトを押すと顕著なディスク活動があります、システムが応答します。私は物事を構成していません、そしてあなたが気づいていないので、それはこの振る舞いがそこにないと言うことを意味しません。私はLinuxをノックしたり、軽蔑しようとしたりはしていません。

編集2 @mabalenk

状況を正確に確認しています。60がデフォルトのスワップネスであり、何も起こらない場合、SIカウントはゼロになります。 vmstat 1は毎秒統計を出力するため、印刷される最初の行を除いて、各行は最後の1秒間のデルタであるため、上昇が見られる場合はスワップインが発生しています。そうは言っても、60程度の数値はそれほど高くないようです。おそらく、私のシステムのメモリは特に少なく、120〜250の数値がはるかに高く、20〜50秒続くでしょう(場合によっては数秒分)そしてゼロに落ち着くと、ターミナルの元のキー押下から応答が得られます。

はい、カーネルは90%のメモリ使用量を示す傾向があります(それを無駄にしないようにします。;-))。 30%の使用済みスワップスペースは、使用済みの予約済みスワップスペースの量であり、割り当てられている量に依存するため、それほど意味がありません。 RAMとスワップスペースの割り当ては、元の投稿に追加するのに役立つ数字です(いつでも 編集 。)。

Kdeに何か問題があるとあなたが推測する理由がわかりませんか?もし私があなただったら、私はスワッピングだけを変えてとんでもないところに落とします。夜に出発する前に5と言って、朝から始めたときに統計に違いがないかどうかもう一度確認します。

私が投稿したリンクのいずれかを読んだかどうかはわかりませんが、長年のカーネル開発者の1人であるAndrewMortonから興味深いコメントがありました。彼は、100未満のswapinessを使用する以外は、カーネルがその仕事を適切に行うことができないと示唆しています。これは、システム全体を見ると理にかなっています。非アクティブなページを交換して、アクティブな部分が機能するための余地を増やしてみませんか?しかし、これはcan有害な影響を及ぼします。使用するメモリの次のビットがスワップアウトされると、午前中にもう一度開始すると、応答を受け取る前に、それらのページが再びスワップインされるのを待つ必要があります。 1つのサイズですべてに対応できるわけではありません。

ただし、これはチューニングパラメータであり、実際のRAMに対して通常の4倍のスワップサイズで実行している場合、30%のスワップが使用されるということは、実際のメモリの2倍以上を使用していることを意味するため、最終的なソリューションはスワップ性を変更するとスワップアウトが遅くなりますが、動作が完全に変わるわけではないため、RAMを増やす必要があります。 16時間のアイドル時間の後、とにかくスワップアウトされます。これは、cronジョブが夜に開始され、アクティブ/パッシブメモリページのフットプリントが完全に変更されるためです。

3
X Tian