web-dev-qa-db-ja.com

RAM使用量がピークになるとUbuntuがフリーズする

UbuntuでRAMにピークがあるとき、たとえばAndroid St​​udioのエミュレーターを起動するとき、またはChromeタブがフリーズするとき、私はしばしばイライラします。 GUI全体がフリーズするので、私はそれが戻ってくるのを待つか、TTYに行って犯人を殺さなければなりません。

UbuntuがRAMをWindowsとは異なる方法で管理する可能性はありますか? Windowsでは、アプリ自体はフリーズしますが、GUI全体はフリーズしません。その点でUbuntuをWindowsのように動作させる方法はありますか?

2
Daniel

最新のOSでは、ページングを使用してメモリを管理します。物理的に持っているよりも多くのメモリを使用できるなど、システムにいくつかの利点があり、ページングについて詳しく知りたい場合に参照できる他のものの中でも特に重要なメモリ領域(カーネル予約メモリなど)を確保できます。

しかし、ページングとは何ですか?

技術的な説明は省略し、アナロジーを説明します。 AからZの百科事典コレクションがあり、午後にそれを読んでみたい好奇心person盛な人であることを想像してください。すべての百科事典を本棚に置いて、4冊の本を置くことができる読書テーブルがあります。

ある日、S百科事典の「セーリング」について読んでいます。ある時点で、W字の本の「風」など、関連する何かについて読む必要があります。読書テーブルにそれがあれば、すぐに開いて必要なものを読んでから、「セーリング」ブックに戻ることができます。問題は、読書テーブルは4冊の本にしか収まらないため、まだ存在しない本が必要になる可能性が高いことです。その後、テーブルから本を棚に戻し、読書テーブルに必要な本をつかんで読む必要があります。

さて、この本の話全体が私のフリーズと何の関係があるのでしょうか?さて、コンピューターはいつも同じようなことをしています。物理的に持っているよりも多くのメモリを使用できるようにするために、コンピュータはメモリの小さな連続ブロックであるpagesにメモリを分割します。それらは常にRAM( "reading table")にある必要はなく、ディスク( "bookshelf")に保存されるかもしれません。 RAMがいっぱいで、ディスクに保存されているページでCPUが読み書きする必要がある場合、RAMのページの1つがディスクに保存され、要求されたページがRAMにロードされます。

これはカーネルジョブであるため、ユーザーとプログラムに対して透過的です。ただし、ディスクへの読み取りと書き込みはmuchRAMでの読み取りと書き込みよりも遅いため、これらのフリーズに気付くでしょう。

Linuxには、swapと呼ばれるパーティションがあり、これらの追加ページを保存するために使用されます。 Windowsも同じことをしますが、ファイルを使用すると思います。ロックされた(「スワップ不可」)ページにあるため、システムカーネル自体はフリーズしません。

以下の画像(ウィキペディアの記事から)は、ページングの概念を示しています(そして、仮想メモリにアクセスする必要はありません)。これらのブロックは、メモリまたはディスクの両方に割り当てられているページを表します。 Virtual Memory Paging

Linuxもフリーズしているように見える理由は、Unity(デスクトップGUI)がこのスワッピングに起因する遅延を経験し、WindowsではデスクトップGUIコードをロックされた(「スワップ不可」)ページに保持するためだと考えています。ただし、これは単なるブレインストーミング理論です。

3
IanC

過去にも同様の問題がありました。 OSが後でRAMをHDに書き込むように、ubuntuの交換可能性を変更しました。

Swappinessを変更するための回答をここで読んでください: swappinessの設定方法

これがあなたの問題の解決に役立つことを保証することはできませんが、私の意見ではそれが最善策です。

1
mondjunge