ホームページ > 記事 > システムチュートリアル > [Linux システムの最適化] メモリ空間を解放する — スワップとバッファの最適化ガイド
Linux システムの動作が遅い、またはメモリが不足しているという状況に遭遇したことがありますか?システムのスワップとバッファが適切に構成されていないことが原因である可能性があります。この記事では、スワップとバッファーについて詳しく理解し、それらを最適化してシステムのパフォーマンスを次のレベルに引き上げる方法を説明します。
Linux のメモリの仕組みは何ですか?
物理メモリから直接データを読み書きする方が、ハードディスクからデータを読み書きするよりもはるかに高速であることがわかっています。したがって、すべてのデータの読み書きがメモリ内で完了することを望みますが、メモリは限られているため、物理メモリと仮想メモリの概念。
物理メモリは、システム ハードウェアによって提供されるメモリ サイズです。実メモリです。物理メモリと比較して、Linux では仮想メモリの概念があります。仮想メモリは、物理メモリの不足を満たすために提案された戦略です。論理メモリはディスク領域を利用して仮想化されており、仮想メモリとして使用されるディスク領域をスワップ領域と呼びます。
Linux は、物理メモリの拡張として、物理メモリが不足した場合に、スワップ パーティションの仮想メモリを使用します。具体的には、カーネルは、一時的に使用されていないメモリ ブロック情報をスワップ領域に書き込みます。物理メモリが解放されると、このメモリは他の目的に使用でき、元のコンテンツが必要になると、情報はスワップ領域から物理メモリに再度読み取られます。
Linux のメモリ管理はページング アクセス メカニズムを採用しており、物理メモリを最大限に活用できるようにするために、カーネルは適切なタイミングで物理メモリ内の使用頻度の低いデータ ブロックを仮想メモリに自動的にスワップし、頻繁に使用される情報を仮想メモリにスワップします。物理メモリに保持されます。
Linux のメモリ操作メカニズムを深く理解するには、次の点を理解する必要があります。
Linux システムは、可能な限り多くの空き物理メモリを維持するために、時々ページ スワップ操作を実行します。メモリを必要とするものが何もない場合でも、Linux は一時的に使用されていないメモリ ページをスワップ アウトします。これにより、交換までの待ち時間を回避できます。
Linux ページのスワップは条件付きです。使用されていないときにすべてのページが仮想メモリにスワップされるわけではありません。Linux カーネルは、「最近使用された」アルゴリズムに基づいて、使用頻度の低い一部のページ ファイルのみを仮想メモリにスワップします。時々、これが表示されます。現象: Linux には依然として大量の物理メモリがありますが、大量のスワップ領域も使用されます。実際、これは驚くことではありません。たとえば、大量のメモリを消費するプロセスの実行時に多くのメモリ リソースを消費する必要がある場合、一部の珍しいページ ファイルが仮想メモリにスワップされますが、後でこのプロセスが使用されることになります。大量のメモリ リソースが仮想メモリにスワップされます。プロセスが終了して大量のメモリが解放されても、スワップアウトされたばかりのページ ファイルは物理メモリに自動的にスワップされません。これが必要でない限り、システムの物理メモリはこの時点でメモリはかなり空き、スワップ領域も使用されているため、上記のような現象が発生します。何が起こっているかを知っている限り、現時点では心配する必要はありません。
スワップ領域内のページは、使用時に最初に物理メモリにスワップされます。この時点でこれらのページを収容するのに十分な物理メモリがない場合は、すぐにスワップアウトされます。その結果、十分なメモリが確保されない可能性があります。これらのスワップ ページを仮想メモリに保存すると、最終的に Linux の誤ったクラッシュやサービス異常などの問題が発生し、一定期間内に Linux は自動的に回復しますが、回復されたシステムは基本的に使用できなくなります。
したがって、Linux メモリの使用を適切に計画および設計することが非常に重要です。
Linux オペレーティング システムでは、アプリケーションがファイル内のデータを読み取る必要がある場合、オペレーティング システムはまずメモリを割り当て、ディスクからこれらのメモリにデータを読み取り、必要に応じてデータをアプリケーションに配布します。ファイルにデータを書き込む場合、オペレーティング システムはまずユーザー データを受信するためにメモリを割り当て、次にそのデータをメモリからディスクに書き込みます。ただし、ディスクからメモリへの読み取り、またはメモリからディスクへの書き込みが必要なデータが大量にある場合、システムの読み取りおよび書き込みパフォーマンスは非常に低くなります。ディスクへの書き込みやディスクへのデータの書き込みは、非常に長いプロセスであり、時間とリソースを消費するプロセスです。この場合、Linux はバッファとキャッシュ メカニズムを導入しました。
バッファとキャッシュは両方ともメモリ操作であり、システムによって開かれたファイルとファイル属性情報を保存するために使用されます。このようにして、オペレーティング システムが特定のファイルを読み取る必要がある場合、まずバッファとキャッシュを検索します。メモリ領域が見つかった場合は、直接読み出してアプリケーションに送信します。必要なデータが見つからない場合は、ディスクから読み取られます。これがオペレーティング システムのキャッシュ メカニズムです。キャッシュを通じて、オペレーティング システムのパフォーマンスが向上します。システムが大幅に改善されました。ただし、バッファとキャッシュされたバッファの内容は異なります。
Buffers はブロック デバイスのバッファーに使用されます。これはファイル システムのメタデータと実行中のページの追跡のみを記録しますが、cached はファイルのバッファーに使用されます。より簡単に言うと、バッファは主にディレクトリの内容、ファイルの属性、アクセス許可などを保存するために使用されます。そして、キャッシュは、開いたファイルとプログラムを記憶するために直接使用されます。
私たちの結論が正しいかどうかを検証するために、非常に大きなファイルを vi で開いてキャッシュ内の変更を確認し、そのファイルを再度 vi で開いて、そのファイルを 2 回開く速度の類似点と相違点を確認します。 2回目に開くのですが、1回目よりも速度が大幅に速くなりましたか?次に、次のコマンドを実行します:
find / -name .conf を実行してバッファーの値が変化するかどうかを確認し、find コマンドを繰り返し実行して 2 回の表示速度の違いを確認します。
Linux が仮想メモリ (スワップ) を使い始めたのはいつですか?
リーリー上記の 60 は、物理メモリの 40% が使用されている場合にスワップが使用されることを意味します (ネットワーク情報を参照: 残りの物理メモリが 40% 未満になると (40=100-60)、スワップ領域はused) swappiness=0 swappiness = 100 の場合、スワップ パーティションを積極的に使用し、メモリ上のデータをタイムリーにスワップ領域に移動することを意味します。
値が大きいほど、スワップが使用される可能性が高くなります。 0 に設定できます。これはスワップの使用を禁止しませんが、スワップを使用する可能性を最小限に抑えるだけです。
通常: スワップ パーティションの設定はメモリの 2 倍にすることをお勧めします (メモリが 4G 以下の場合)。メモリが 4G を超える場合は、スワップをメモリより大きくするだけで済みます。さらに、システムのパフォーマンスが向上するように、スワップ性をできるだけ下げるようにしてください。
B. swappiness パラメータを変更する
リーリーこれはすぐに有効になり、再起動後に有効になることもあります。
メモリを解放するにはどうすればよいですか?
一般的なシステムでは、メモリの主要な構成ファイル /proc/sys/vm/drop_caches が自動的に解放されません。このファイルにはキャッシュ解放のパラメータが記録されており、デフォルト値は 0 (キャッシュが解放されないことを意味します) です。その値は 0 から 3 までの任意の数値で、さまざまな意味を表します:
実際の操作:
明らかに空きメモリがたくさんあります
スワップを解放するにはどうすればよいですか?
前提: まず、残りのメモリがスワップ使用量以上であることを確認してください。そうでないとクラッシュします。メモリのメカニズムによれば、スワップ パーティションが解放されると、スワップ パーティションに格納されているすべてのファイルが物理メモリに転送されます。スワップの解放は通常、スワップ パーティションを再マウントすることによって行われます。
a. 現在のスワップ パーティションがどこにマウントされているか確認しますか? b. このパーティションをシャットダウンします c. ステータスを確認します: d. スワップ パーティションがシャットダウンされているかどうかを確認します。最後の行にすべてが表示されます e. スワップを /dev/sda5 にマウントします f. マウントが成功したかどうかを確認します
この記事の導入部を通じて、Linux システムにおけるスワップとバッファの基本的な概念と使用法、およびそれらの使用法を確認する方法をすでに理解しました。同時に、システムのパフォーマンスとメモリ使用率をさらに向上させるための実用的な最適化の提案をいくつか共有しました。この記事がお役に立てば幸いです!
以上が[Linux システムの最適化] メモリ空間を解放する — スワップとバッファの最適化ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。