スワップファイルが機能できる最大サイズはありますか?


8

私の知る限り、スワップファイルの理論上の制限は、32ビットシステムと64ビットシステムのどちらを使用しているかによって、非常に大きくなります。

1 GBの内蔵HDDに十分な空き容量があるため、4 GB RAM 64ビットシステムで16 GBのスワップファイルを作成しましたが、それ以外の場合は平均スペックが低くなっています。

しかし、大きなスワップファイルは実際に速度/パフォーマンスに違いをもたらしますか?



2
IMOスワップを使用している場合は、より大きなスワップファイルではなく、実際にはより多くのRAMが必要です
Panther

1
HDDを使用している場合は、代わりにzramを使用し、HDDスワップの優先度を下げる必要があります。そして、そのような大きなスワップパーティションは役に立ちません
。4GBの


私が覚えている限り、スワップファイルは物理RAMをいくらか消費します(スワップファイルのサイズの1%未満だと思います)。したがって、スワップファイルが大きすぎると、そのメモリ消費によりパフォーマンスが低下する可能性があります。しかし、適度なサイズのスワップファイルの場合、それは問題にはなりません。
kasperd

回答:


7

それぞれ最大40億(2 ^ 32)ページの最大32のスワップ領域(ファイルまたはパーティション)を持つことができます。ここで、「ページ」は従来の(たとえばx86またはx86_64)システムでは4kBですが、他のシステムではより大きくすることができますアーキテクチャ、または大きなページを特別に構成した場合。

これにより、理論的にはスワップ領域あたり最大16TB、最大32のスワップ領域が得られます。これに到達する前に適用される他の制限があるかもしれませんが、これはmkswapあなたのために作成できる大きなスワップ領域です。

必要な量に関しては、実際に使用する最大値を超えるスワップ領域は、システムのパフォーマンスや安定性には何の影響も与えません。トリックは、通常または異常な状況で発生する最大使用量を推定し、それをスワップファイルサイズとして使用し、それ以上は使用しないことです。

執筆の時点では、システムが非常に異常でない限り、物理メモリサイズよりも約4GB多いスワップ領域が使用されることはほとんどありません。一度に1人で使用するデスクトップシステムなどの一般的なシステムでは、物理メモリがさらに大きい場合でも、おそらく最大6GBから8GBで停止することもできます。


6

速度やパフォーマンスの点で違いはありません。OOMキラーがプロセスを強制終了してメモリを解放する前に、最大20 GBの仮想メモリを使用できるようにするだけです。

より良いパフォーマンスが必要な場合:

  • swappiness頻繁に4 GBを超えないようにすると、減少します
  • RAMを追加
  • SSDに切り替えてスワップファイルをその上に置く

メモリブロックをスワップアウトする必要がある場合、SSDのアーキテクチャと書き込みサイクルの制限により、SSDの書き込みサイクルがすぐに使い果たされるため、SSDを使用することはできません。スワップメモリ​​が必要になることが時々ある場合は、SSDで問題ありません。
Videonauth 2018年

11
@Videonauth:「SSDの書き込みサイクルをすばやく簡単に使い切る」:あらゆる種類の最新のSSDであれば、何年もの間、SSDの全容量の書き込みを毎日継続できます。あなたのアドバイス 2010年には正しかったかもしれませんが、それは時代遅れです。消費者グレードの256 GiB Samsung SSD 840でも、2年以上にわたって1日あたり100 GiBの書き込みを維持できます。
AlexP

RAMが大量にある場合、swappinessを小さくしても、RAMが限られている場合よりも違いは少なくなります。実際に大量のRAMをインストールすると、スワップを回避できるほど十分であれば、他の微調整でスワップが冗長になります。「念のため」安定性のためにスワップパーティションを保持します。これは、使用されない時間の99.9%であり、優れたパフォーマンスを維持します。
thomasrutter 2018年

1
また、SSDの書き込みサイクルの制限については10年以上真実ではありません。このFUDを呼び出す必要があるときです。申し訳ありませんが、このコメントは非常に冗長なので、AlexPはすでにこれに対処していますが、下線が引かれています。SSDはある偉大な書き込み重いアプリケーションのため。
thomasrutter 2018年

1
SSDのウェアレベリングは、2008年頃になってからのことです(2008年の論文 | 2009年のAnandtechの記事)。「2008年には、通常の消費者向け価格のラップトップにSSDが付属することもありました」といって、SSDは非常に高価であり、実際には標準になりませんでした。
-thomasrutter、

3

Gilles回答によると

...以前は(ほとんどの32ビットプラットフォームで)2GBのスワップサイズ制限がありましたが、これは何年もの間そうではありませんでした。この制限は、2.2カーネルシリーズのある時点で削除されました。

さらに、彼はmanページを引用していますmkswap

スワップ領域の最大有効サイズは、アーキテクチャとカーネルのバージョンによって異なります。

Linux / swap.hライブラリがあるMAX_SWAPFILESが明らかに決定的な領域がどちらかではないことを、エントリが、そのカーネルレベルでのスワップファイルの数には限界があります。リンクされたドキュメントによると:

「タイプ」の6ビットは、32のMAX_SWAPFILES制限ではなく、32ビットアーキテクチャに最大64のスワップ領域が存在できるようにする必要があることに注意してください。

私が理解しているのは、32ビットアーキテクチャで最大64個のスワップファイルがあることです。ただし、このドキュメントでは、64ビットアーキテクチャで何が起こるかについて言及していません。また、この場合、スワップファイルを作成するOPの作業が30番目のエントリで失敗したことにも注意してください。

スワップパーティションについては、前述のconstatsのほかに、カーネルには制限がないように見えますが、パーティションの数は、基になるBIOSとディスクレイアウトによって制限されます


2

この回答はUbuntu 18.04には適切でない可能性があります(コメントで指摘した@Chai T. Rexに感謝します)。

とにかく、以前のバージョンについては、ここにあります(提案された更新LTS> LTSはまだないので、これは依然として関連があるかもしれません)

それはファイルではなく、パーティションであり、そうです、スワップ性のためにそうです

swappinessパラメータは、カーネルがプロセスを物理メモリからスワップディスクに移動する傾向を制御します。ディスクはRAMよりもはるかに遅いため、プロセスがメモリから過度に移動された場合、システムやアプリケーションの応答時間が遅くなる可能性があります。

したがって、基本的に、スワップパーティションが使用しているRAMよりも大きい場合、システムはより多くのスワップを行う傾向にあり、全体的な速度低下を引き起こします。


4
現在、スワップファイルがあり、18.04を最初からインストールするときの(パーティションではなく)デフォルトです。
Chai T. Rex

1
パーティションとファイルのどちらに支えられていても、スワップの動作はほとんど同じだと思います。複数のスワップファイルやパーティションを同時に持つこともできます。とにかく、まだ十分なRAMが残っている間は、スワップを増やしても悪影響はないと思います。
バイトコマンダー

私は同じことを想定しますが、手に入るまで、これは
大まかな

スワップパーティションとスワップファイルがあります。スワップパーティションは、同じPC上の2つ以上のLinuxインストールで使用できます(デュアルブートまたはトリプルブート)。スワップパーティションは、スワップファイルが断片化して作成される可能性があるディスク全体の場合に適しています。...断片化を回避するためにフルディスク以外で作成されたスワップファイルは、スワップパーティションと同じように機能します。–デボンファンスクールj
デボンファンスクール2018年

2

スワップパーティションを任意に大きくしても、速度やパフォーマンスに大きな違いはありません。

swappinessハードドライブの種類(SDDまたはHDD)など、パフォーマンスに影響を与える可能性のあるスワップに関連するいくつかの要因があります。

スワップはかなり低速であり、スワップを増やすとパフォーマンスが低下します。ただし、RAMが十分でない場合にのみ影響があります。しかし、スワップがないよりはましです。スワップパーティションのサイズをRAMの2倍にすることをお勧めします。


5
その勧告は時代遅れです。32 GBまたは64 GBのRAMを備えた最新のシステムでは、64 GBまたは
128 GBの

3
@LưuVĩnhPhúc最近は2GBを超えるスワップを使用しない...
el.pescado

2 GBは非常に少ないようです...仮想マシンまたはゲームは実際には2 GBを超えるスワップを非常に迅速に埋めることができます。4 GBから8 GBのスワップは、どのような量のRAMでもうまく機能すると思います。8GB以上が必要な場合は、RAMを追加する必要があります。
ジェルマン、

0

スワップファイルまたはスワップパーティションに実質的に制限がないという事実に到達しました。また、私の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ます。
mook765 2018年

しかし、私が説明した方法はうまくいきました。[cat / proc / sys / vm / swappiness]と入力すると、出力として50が得られます
Devon van Schoor
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.