14.04以降で1GBから8TBのRAMを使用するにはどのくらいのスワップが必要ですか?


14

64ビット14.04を1から128GB RAMのような新しいマシンにインストールします。スワップパーティションにどのくらいの領域を割り当てる必要がありますか?

そして特に:なぜこれらの数値に対する推奨事項がありますか?

ここここの既存の回答のいずれも、理由のいずれかを説明しておらず、1GBまたはRAM以上を見ると少し日付が付けられています)


6
16GB RAMを持っている可能性があります。32GBのスワップが必要ですか?2017年からの回答(または2017年に更新)があるため、現在この勧告よりも最新の勧告を保持しています。
メレビウス

1
@Melebius:私は同意しません:この質問は新しいですが、あなたが複製しようとしているものよりも一般的です。このQ&Aは古いものを網羅していますが、その逆は当てはまりません! ;-)
Fabby

1
@Fabbyその場合、もう一方はこの1つの複製としてマークされるべきではありませんか?
メレビウス

1
@Melebiusレビューアーが両方の質問を異なる状況の他の質問の重複する質問として使用できる場合、両方の質問の回答が非常に高いため、両方の質問を開いてこれらの異なる状況を処理できます。
karel

2
@Melebiusこのトピックについては既にメタで議論しており、コミュニティはそれぞれをそのままにしておくことにしました。
ファビー

回答:


30

短い答え:

スワップファイルを次のように設定します。

  • round(sqrt(RAM))あなたがあれば使用していない休止状態を
  • RAM+round(sqrt(RAM))休止状態を使用する場合

swappinessデスクトップではyour を10に設定しますが、サーバーでは設定しません!

長い答え:

過去には:

過去25年間に使用されている経験則は、最小1xRAMと最大2xRAMであったため、これは常に引用されるものです。

私がティーンエイジャーであり、恐竜がまだ地球を歩き回っていたとき、そして RAMがあまりにも高価であり、あなたが何かを達成するためにそのスワップスペース絶対に必要だったのでその最小値は石器時代後退しました

最大値はその時の戻り値の減少のために設定されました:HDDアクセスはRAMよりも1000倍遅いので、あまりにも多くのメモリをスワップするのは遅すぎます:緊急時には良いですが、日常の使用にはあまり良くありません!当時、スワップ領域が足りなくなったときは、RAMを追加する必要がありました。(これは今日でも真実です)。

現在:

  1. 休止状態を使用せず、メモリが1GByteを超える場合、新しい経験則はround(sqrt(RAM))RAM明らかにRAMのサイズ(GB)とsqrt平方根です。:-)

  2. 休止状態を使用する場合、RAMの全容量と既にスワップされたRAMをディスクにスワップできる必要があります。したがって、式は次のようになります。 RAM+round(sqrt(RAM))

  3. 収益の減少のルールは今日でも最大値を保持していますが、実際の使用状況をテストしない限り、2xRAMの使用はディスク領域の浪費に過ぎないため、他の方法を使用してスワップ領域が不足しない限り、最大値を使用しないでください

これらはすべて、次の表を提供します:(最後の3列はスワップ領域を示します)

    RAM   No hibernation    With Hibernation    Maximum
    1GB              1GB                 2GB        2GB
    2GB              1GB                 3GB        4GB
    3GB              2GB                 5GB        6GB
    4GB              2GB                 6GB        8GB
    5GB              2GB                 7GB       10GB
    6GB              2GB                 8GB       12GB
    8GB              3GB                11GB       16GB
   12GB              3GB                15GB       24GB
   16GB              4GB                20GB       32GB
   24GB              5GB                29GB       48GB
   32GB              6GB                38GB       64GB
   64GB              8GB                72GB      128GB
  128GB             11GB               139GB      256GB
  256GB             16GB               272GB      512GB
  512GB             23GB               535GB        1TB
    1TB             32GB              1056GB        2TB
    2TB             46GB              2094GB        4TB
    4TB             64GB              4160GB        8TB
    8TB             91GB              8283GB       16TB

上記は単なる経験則です。 重力の法則ではありません!特定のユースケースが異なる場合は、(重力の法則とは異なり)この規則破る
ことができます!

プロのヒント: ヘッドはディスクの内側を移動する必要が少ないため、常にHDDの開始時にSWAPを割り当てます。
はい: SSDでは、ヘッドを動かす代わりにクォンタムトンネリングを使用し、最新のSSDはすべてのメモリセル(割り当てられていないスペースも含む)を使用して量子劣化を防ぐため、スワップ領域をどこに配置してもかまいません。

スワップの使用が「汎用」ルールと異なるかどうかをテストする方法:

実行するだけです:

for szFile in /proc/*/status ; do 
  awk '/VmSwap|Name/{printf $2 "\t" $3}END{ print "" }' $szFile 
done | sort --key 2 --numeric --reverse | more

スワップアウトされている実行中のすべてのプログラムのリストが表示されます(一番上のスワップスペースを使用しているもの)

数KB以上を使用している場合:最小サイズ以上にサイズ変更します。それ以外の場合は、気にしないでください...

サーバーを使用している場合は、今すぐ読むのをやめてください。設定は完了です。


デスクトップ/ラップトップクライアント(サーバーではない)を使用している場合は、GUIの応答性をできるだけ高くし、本当に必要な場合にのみスワップする必要があります。Ubuntuはサーバーで使用するために早めにスワップするように最適化されていますが、クライアントでは、その巨大な250メガピクセルの生の画像をgimp高速編集したいのでswappiness、10に設定すると、カーネルが早すぎるスワップを防ぎますが、遅すぎるスワップ:

sysctl.confファイルがある場合、

sudo nano /etc/sysctl.conf

または

sysctl.dディレクトリはあるがsysctl.confファイルがない場合は、新しいファイルを作成します。

sudo nano /etc/sysctl.d/35_swap.conf 

両方の場合に追加:

# change "swappiness" from default 60 to 10 
# (theoretically only swap when RAM usage reaches around 80 or 90 percent)
vm.swappiness = 10

ファイルの最後まで、ファイルを保存し(nanoではCtrl+ XY+ Enter)、次を実行します。

sysctl --system

パラメータを再読み込みするか、Window $アプローチを使用して再起動します... :-)


1
ありがとう。「収益の減少」とはどういう意味ですか?RAMとスワップの両方が完全に使用されている場合、スワップが2 * RAMサイズであっても休止状態にすることはできませんか?(休止状態ではスワップのサイズがRAM +スワップである必要があるため、これは不可能ですか?)
ティム

はい、しかし、私はまだこれを起こしたことがありません...(そして私は古いです!したがって、2 * RAM:RAMのすべてが交換されるとき、あなたはまだ休止状態にできます
...-Fabby

2
「収益の減少」とは、HDDアクセスがRAMよりも1000倍遅いことを意味するため、RAMを2倍スワップアウトする必要がある場合は、完了する前に老年期に死亡することになります。再スワップ
...-ファビー

1
@Fabby元の質問asvbuntu.com/review/close/889454のCVレビューの時間です。質問の下のYufenyuy Veyeh Diderのコメントを参照してください。
karel

1
@mrkskwsnck:それは...同じ著者によってだ ;-)
Fabby

6

スワップの必要性

スワップは次の3つの理由で便利です。

  1. RAMからクラッターを削除します。kernel.org の記事から:

    「プロセスの寿命の早い段階で参照されるかなりの数のページは、初期化にのみ使用され、その後再び使用されることはありません。これらのページをスワップアウトし、常駐および未使用のままにするよりも多くのディスクバッファーを作成することをお勧めします」

    言い換えれば、RAMに保存されたデータは、プロセスが開始されたとき(スタートアッププロセスなど)にのみ有用であり、その後RAMに常駐し、より良い目的に使用できるスペースを乱雑にします。

  2. プロセスが使用できるメモリ量を拡張します。これはよく理解されています。システムがメモリ不足になり、メモリ不足のためにクラッシュするのは望ましくありません。この特定の理由から、保護機能として機能するスワップ存在する必要あります。

  3. 休止状態:コンピューターが休止状態になると、RAMの内容がディスクに移動します。

スワップ量

スワップの目的を知り、マシンのRAM量に応じて、目的に合ったスワップサイズを選択できます。特定のガイドラインはなく、システムに合わせてスワップサイズを調整するために使用できる経験則のみがあります

たとえば、linux.comは以下を推奨しています。

経験則は次のとおりです。1)デスクトップシステムの場合、2つのシステムメモリのスワップスペースを使用します。これにより、多数のアプリケーション(その多くがアイドル状態で簡単にスワップされる可能性があります)を実行できるため、アクティブなアプリケーションに使用可能なRAMが増えます。2)サーバーの場合、使用可能なスワップの量を少なくして(物理メモリの半分など)、必要に応じてスワップできる柔軟性を確保しますが、使用されるスワップスペースの量を監視し、必要に応じてRAMをアップグレードします。3)古いデスクトップマシン(たとえば128MBのみ)の場合は、1GBまでの余裕のあるスワップスペースを使用します。

個人的な経験から、私がすることは次のとおりです。

休止状態にする必要のない1〜2 GBのマシンを検討し、カジュアルな使用のために、1GBから2GBのスワップスペースを確保できます。14.04 Ubuntuを搭載したPCには1GBのRAMと2GBのスワップがあります。スワップの量が800MBの境界を越えることはありません。私は自分のPCをWebサーフィンとスクリプト作成にのみ使用しています。

2GB以上のPCで、休止状態にする必要がない場合、512MBから1GBにスワップを維持できます。15.04のラップトップがあり、これは休止状態にならず、512 MBのスワップファイルパーティションではない)を持っています。RAM自体は6 GBですが、2〜3 GBを超えることはありません。繰り返しますが、カジュアルな使用法です。

CosmoscaliburとFabbyは、休止状態にする必要がある場合に備えて既にスワップに対応しているため、あまり詳しく説明しません。私の謙虚な意見はこれです:

休止状態を計画する場合は、RAMの内容を交換する必要があるため、少なくとも RAMと同じサイズが必要です。


:-)何かを投稿したことに気付いただけです。編集し、賛成しました!(私の編集後、今のところ良い答えです!:D:D:D)
ファビー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.