はい。

はい。

私が理解する限り、これを行う目的は交換Linuxでは、パーティション化はRAMから「頻繁にアクセスしない」いくつかの情報を取得し、それをハードドライブの特定のパーティションに移動することです(読み取りまたは書き込みが遅い)。デフォルトでは、アクティブアプリケーションはより多くのアクセスを許可します。 「高速メモリ」を使用。

これは、メモリが少ないコンピュータを使用し、メモリが不足しても問題が発生したくない場合に便利です。しかし、システムでは16ギガバイトまたは32GBRAM、およびStackExchange用のMySQLデータベースを実行しない場合、またはLinuxで1080pフルレングスムービーを編集しないと仮定すると、スワップパーティションを使用する必要がありますか?

ベストアンサー1

はい。

君は必ずそうしなければならないいつも非常に説得力のある禁止理由がない限り(ディスクがまったくない場合やネットワークディスクのみがある場合)、スワップを有効にします。多くの場合、推奨されるとんでもないサイズ(RAMのサイズの2倍)に置き換える必要がありますか?素晴らしい、いいえ

その理由は、アプリケーションが物理RAMよりも多くのメモリを消費している場合にのみスワッピングが役に立たないためです(実際、この場合はスワッピングが便利です)。あまり役に立たないパフォーマンスに深刻な影響を与えるからです。) 今日の交換の主な動機は次のとおりです。いいえ16GiB RAMを32GiBに魔法のように変えますが、搭載されたRAMをより効率的に活用できます。

最新のコンピュータでは、RAMは決してアイドル状態になりません。未使用のRAMは購入せずにお金を節約する方が良いです。したがって、ロードするすべてのもの、またはメモリにマップされたすべてのもの、すべての可能性可能キャッシュされたコンテンツは、将来(セキュリティ制約に応じて)いつでも誰でも再利用できます。マシンが起動した直後、すべての物理RAMが使用されます。

オペレーティングシステムが新しいメモリページを要求するたびに、メモリ管理者は情報に基づいて決定を下す必要があります。

  1. バッファキャッシュからページを消去する
  2. マップからページを消去する(実際にはほとんどのシステムでは#1と同じ)
  3. 長い間訪問していない(できれば)ページを交換に移動します(実際には事前に発生する可能性がありますが、必ずしも最後の瞬間に発生する必要はありません)。
  4. プロセスを終了するか、任意のプロセスを終了します(OOM)。
  5. カーネルパニック

オプション#4と#5は次のとおりです。非常に人気がないそして、これはオペレーティングシステムに選択肢がない場合にのみ発生します。オプション#1と#2はすぐに再び必要なものを捨てることを意味します。これはパフォーマンスに悪影響を及ぼす可能性があります。

オプション#3は、保存速度を遅くするために短期的に不要なアイテムを移動することを意味します。それは問題ではありません。だから今本当に必要だった高速RAMを使用できます。

オプション#3を削除すると、オペレーティングシステムが#1または#2を実行できないように効果的に制限できます。ディスクからページを再ロードすることは、スワップからページを再ロードするのと同じです。ただし、スワップから再ロードする可能性は一般的に少ないです(正しいページング決定が下されるため)。

つまり、スワップを無効にすると、オペレーティングシステムがメモリ要求を処理するときに持つ有用なオプションの数を制限する以外には何も得られません。どのおそらくしかし、その可能性が非常に高いおそらく欠点(そして決して強みではない)。

[編集する]

注意深い読者mmap マンページ特に、MAP_NORESERVE「十分な」物理メモリを備えたシステムでも、交換が不可欠である他の妥当な理由を指摘することができます。

「スワップ領域が予約されていない場合に物理メモリが利用できない場合は、書き込み時にSIGSEGVを受信できます。」

——ちょっと待って、これはどういう意味ですか?

ファイルをマッピングすると、ファイルがマジックのようにプログラムのアドレス空間にあるかのようにファイルの内容に直接アクセスできます。読み取り専用アクセスの場合は、オペレーティングシステムに次のものが必要です。原則として異なる仮想ページにアクセスするたびに別のデータで埋め戻すことができる物理メモリの単一ページ)。今返品ファイルマッピングに書きますか?この場合、オペレーティングシステムには、記録される各ページに対して準備された物理ページ(またはスワップスペース)が必要です。ダーティページ書き込み保存プロセスが操作を完了するまで(数秒かかることがある)、データを保存する他の方法はありません。したがって、OSはスワップスペースを予約しますが(必ずしもコミットしません)、マップに作成中で未使用の物理ページがない場合(非常に可能で一般的なシナリオ)、おおよそ次のようになります。保証するそれでも動作します。

今交換がなければどうなりますか?つまり、スワッピングを保存できないという意味です。つまり、空き物理ページが残っておらず、ページに書き込んでいると、それを受信するプロセスの形で予期しない分割エラーが発生し、終了する可能性があります。 。

[/編集する]

ただし、スワップ領域を RAM サイズの 2 倍に設定する既存の推奨事項は意味がありません。ディスクスペースが安くても、そんなに多くのスワップスペースを割り当てることは意味がありません。安いものの無駄はまだ無駄で、あなたは確かに欲しくない数百メガバイト(またはそれ以上)のワークセットを継続的に置き換えます。

一人もいない「正しい」サイズの交換(ユーザーとコメントの数と同じくらい「正しい」サイズがあります)。私は通常RAMサイズに関係なく固定512MiBを割り当てますが、これは私にとって非常に効果的です。その理由は512MiBが可能だからです。いつも最近では、小さなディスクでも価格が安いです。一方、数ギガバイトのスワップスペースを追加するのはあまり良くありません。重大な問題が発生しない限り、使用しないでください。

SSDでも、スワッピングはRAMよりはるかに遅い(バス帯域幅と待ち時間による)。非常に許容可能不要になったアイテムを交換するために移動します(つまり、もう一度交換しない可能性が高いため、無料ページプールは実際に無料で拡張されます)。必要多くの交換(つまり、50GiBデータセットを使用するアプリケーションがある場合)が発生すると、ほとんど失われます。

コンピュータがギガバイトのページに入ってから出始めると、すべてが遅くなります。したがって、私を含むほとんどの人にとって、これはオプションではないので、そのような多くの交換を行うことは意味がありません。

おすすめ記事