私の知る限り、スワップファイルの理論上の制限は、32ビットシステムと64ビットシステムのどちらを使用しているかによって、非常に大きくなります。
1 GBの内蔵HDDに十分な空き容量があるため、4 GB RAM 64ビットシステムで16 GBのスワップファイルを作成しましたが、それ以外の場合は平均スペックが低くなっています。
しかし、大きなスワップファイルは実際に速度/パフォーマンスに違いをもたらしますか?
私の知る限り、スワップファイルの理論上の制限は、32ビットシステムと64ビットシステムのどちらを使用しているかによって、非常に大きくなります。
1 GBの内蔵HDDに十分な空き容量があるため、4 GB RAM 64ビットシステムで16 GBのスワップファイルを作成しましたが、それ以外の場合は平均スペックが低くなっています。
しかし、大きなスワップファイルは実際に速度/パフォーマンスに違いをもたらしますか?
回答:
それぞれ最大40億(2 ^ 32)ページの最大32のスワップ領域(ファイルまたはパーティション)を持つことができます。ここで、「ページ」は従来の(たとえばx86またはx86_64)システムでは4kBですが、他のシステムではより大きくすることができますアーキテクチャ、または大きなページを特別に構成した場合。
これにより、理論的にはスワップ領域あたり最大16TB、最大32のスワップ領域が得られます。これに到達する前に適用される他の制限があるかもしれませんが、これはmkswap
あなたのために作成できる大きなスワップ領域です。
必要な量に関しては、実際に使用する最大値を超えるスワップ領域は、システムのパフォーマンスや安定性には何の影響も与えません。トリックは、通常または異常な状況で発生する最大使用量を推定し、それをスワップファイルサイズとして使用し、それ以上は使用しないことです。
執筆の時点では、システムが非常に異常でない限り、物理メモリサイズよりも約4GB多いスワップ領域が使用されることはほとんどありません。一度に1人で使用するデスクトップシステムなどの一般的なシステムでは、物理メモリがさらに大きい場合でも、おそらく最大6GBから8GBで停止することもできます。
速度やパフォーマンスの点で違いはありません。OOMキラーがプロセスを強制終了してメモリを解放する前に、最大20 GBの仮想メモリを使用できるようにするだけです。
より良いパフォーマンスが必要な場合:
swappiness
頻繁に4 GBを超えないようにすると、減少します...以前は(ほとんどの32ビットプラットフォームで)2GBのスワップサイズ制限がありましたが、これは何年もの間そうではありませんでした。この制限は、2.2カーネルシリーズのある時点で削除されました。
さらに、彼はmanページを引用していますmkswap
:
スワップ領域の最大有効サイズは、アーキテクチャとカーネルのバージョンによって異なります。
Linux / swap.hライブラリがあるMAX_SWAPFILES
が明らかに決定的な領域がどちらかではないことを、エントリが、そのカーネルレベルでのスワップファイルの数には限界があります。リンクされたドキュメントによると:
「タイプ」の6ビットは、32のMAX_SWAPFILES制限ではなく、32ビットアーキテクチャに最大64のスワップ領域が存在できるようにする必要があることに注意してください。
私が理解しているのは、32ビットアーキテクチャで最大64個のスワップファイルがあることです。ただし、このドキュメントでは、64ビットアーキテクチャで何が起こるかについて言及していません。また、この場合、スワップファイルを作成するOPの作業が30番目のエントリで失敗したことにも注意してください。
スワップパーティションについては、前述のconstatsのほかに、カーネルには制限がないように見えますが、パーティションの数は、基になるBIOSとディスクレイアウトによって制限されます。
この回答はUbuntu 18.04には適切でない可能性があります(コメントで指摘した@Chai T. Rexに感謝します)。
とにかく、以前のバージョンについては、ここにあります(提案された更新LTS> LTSはまだないので、これは依然として関連があるかもしれません)
それはファイルではなく、パーティションであり、そうです、スワップ性のためにそうです
swappinessパラメータは、カーネルがプロセスを物理メモリからスワップディスクに移動する傾向を制御します。ディスクはRAMよりもはるかに遅いため、プロセスがメモリから過度に移動された場合、システムやアプリケーションの応答時間が遅くなる可能性があります。
したがって、基本的に、スワップパーティションが使用しているRAMよりも大きい場合、システムはより多くのスワップを行う傾向にあり、全体的な速度低下を引き起こします。
スワップパーティションを任意に大きくしても、速度やパフォーマンスに大きな違いはありません。
swappiness
ハードドライブの種類(SDDまたはHDD)など、パフォーマンスに影響を与える可能性のあるスワップに関連するいくつかの要因があります。
スワップはかなり低速であり、スワップを増やすとパフォーマンスが低下します。ただし、RAMが十分でない場合にのみ影響があります。しかし、スワップがないよりはましです。スワップパーティションのサイズをRAMの2倍にすることをお勧めします。
スワップファイルまたはスワップパーティションに実質的に制限がないという事実に到達しました。また、私の16GBのスワップファイルはかなり大きいですが、サイズは速度に影響しません。
しかし、私が収集しているのは、速度に影響を与えるのは、物理ハードウェアとは対照的に、システムが実際にそのスワップ領域を利用しているということです。
これに対する私の解決策は、より高速なハードウェアとは対照的にスワップが過度に使用されないように、高いswappiness値を作成することです。だから私はしました:
sudo -s
nano /etc/sysctl.conf
ファイルに追加:
#vm.swappiness = 50
セーブ
sudo sysctl -p
更新する(または単に再起動した可能性があります)
#vm.swappiness = 50
を追加し/etc/sysctl.conf
ても効果はありません。先頭に置く#
と、この行がコメントになり、削除されます。swappinessはで確認できcat /proc/sys/vm/swappiness
ます。