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

ティム

64ビット14.04を、1〜128GBのRAMとさらに多くのRAMを搭載した新しいマシンにインストールします。スワップパーティションにどのくらいのスペースを割り当てる必要がありますか?

そして特に:なぜこれらの数字に対するそれらの推奨事項は?

ここここの既存の回答のどれも理由のいずれかを説明しておらず、1GBまたはRAM以上を見ると少し時代遅れです)

ファビー

簡単な答え:

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

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

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

長い答え:

過去には:

過去25年間使用されてき経験則は、最小で1xRAM、最大で2xRAMであるため、常に引用されていることがわかります。

その最小値は、私が10代の頃、恐竜がまだ地球を歩き回っていた石器時代設定されました。RAMが高すぎるため、何かを実行するにはスワップスペース絶対に必要でした。

収穫逓減のため、その時点で最大値が設定されました。HDDアクセスはRAMよりも1000倍遅いため、多くのメモリを交換する必要があるのは遅すぎます。緊急時には適していますが、日常の使用にはあまり適していません。当時、スワップスペースが足りなくなったら、RAMを追加する時が来ました!(これは今日でも当てはまります)。

現在:

  1. ハイバネーションを使用せず、メモリが1Gバイトを超える場合、新しい経験則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メガピクセルのRAW画像を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

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

sysctl --system

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

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C ++ 14 constexprはどのくらいの頻度で使用する必要がありますか?

分類Dev

iOS14 ARDepthDataの解像度はどれくらいですか?

分類Dev

a =&14の&14が1つのステートメントしか存在しないのはなぜですか?

分類Dev

C ++ 14の「constexpr」

分類Dev

iOS 14:「[アプリ名]がローカルネットワーク上のデバイスを見つけて接続したい」という通知を遅らせるにはどうすればよいですか?

分類Dev

JDK 14でIntHolderが見つからないのはなぜですか?

分類Dev

ノード12から14へのアップグレード後に認識されない機能が必要

分類Dev

NDK 14 へのアップグレード後に C++ コードで宣言が見つからない

分類Dev

GoDaddy証明書の秘密鍵を取得してUbuntu14以降にインストールするにはどうすればよいですか?

分類Dev

Ubuntu14のMySqlWorkbench

分類Dev

Ubuntu14のMySqlWorkbench

分類Dev

iOS 14アプリクリップのサイズが10MB未満かどうかを確認するにはどうすればよいですか?

分類Dev

iOS 14アプリクリップのサイズが10MB未満かどうかを確認するにはどうすればよいですか?

分類Dev

Java 14がLTSではないのはなぜですか?

分類Dev

pytzを使用しているときにサモアのオフセットが+13または+14にならないのはなぜですか?

分類Dev

Ubuntu 13からアップグレードした後、Ubuntu 14でこれらの.vimrcエラーが発生するのはなぜですか?

分類Dev

スワップファイルのサイズを3.8GBから1GBに減らす方法は?

分類Dev

14.04にはどのくらいのRAMが必要ですか?

分類Dev

C ++ 14でペアの配列の初期化に二重の括弧が必要なのはなぜですか?

分類Dev

10億から100億の間の数には14が含まれています

分類Dev

配列<T *、N>の要素のデフォルトの初期化にC ++ 14が必要なのはなぜですか?

分類Dev

116+14 = -126 (CS50) の理由がわからない

分類Dev

iOS14以降に表示されないUITextFieldの背景画像を修正するにはどうすればよいですか?

分類Dev

C ++ 14機能を使用しているにもかかわらず、C ++ 11でのコンパイルが成功するのはなぜですか?

分類Dev

NodeJS 14で128ビット値を別の同じ長さの値にすばやく暗号化するにはどうすればよいですか?

分類Dev

constではないメンバー関数は、C ++ 14以降の場合にのみconstexprである必要があります

分類Dev

URLから最初の長い(11〜14桁)番号を抽出します

分類Dev

IntelliJ IDEA 14のスペース削除動作を元に戻すにはどうすればよいですか?

分類Dev

ObjectOutputStreamがDataOutputStreamで8バイトではなく14バイトを書き込むのはなぜですか?

Related 関連記事

  1. 1

    C ++ 14 constexprはどのくらいの頻度で使用する必要がありますか?

  2. 2

    iOS14 ARDepthDataの解像度はどれくらいですか?

  3. 3

    a =&14の&14が1つのステートメントしか存在しないのはなぜですか?

  4. 4

    C ++ 14の「constexpr」

  5. 5

    iOS 14:「[アプリ名]がローカルネットワーク上のデバイスを見つけて接続したい」という通知を遅らせるにはどうすればよいですか?

  6. 6

    JDK 14でIntHolderが見つからないのはなぜですか?

  7. 7

    ノード12から14へのアップグレード後に認識されない機能が必要

  8. 8

    NDK 14 へのアップグレード後に C++ コードで宣言が見つからない

  9. 9

    GoDaddy証明書の秘密鍵を取得してUbuntu14以降にインストールするにはどうすればよいですか?

  10. 10

    Ubuntu14のMySqlWorkbench

  11. 11

    Ubuntu14のMySqlWorkbench

  12. 12

    iOS 14アプリクリップのサイズが10MB未満かどうかを確認するにはどうすればよいですか?

  13. 13

    iOS 14アプリクリップのサイズが10MB未満かどうかを確認するにはどうすればよいですか?

  14. 14

    Java 14がLTSではないのはなぜですか?

  15. 15

    pytzを使用しているときにサモアのオフセットが+13または+14にならないのはなぜですか?

  16. 16

    Ubuntu 13からアップグレードした後、Ubuntu 14でこれらの.vimrcエラーが発生するのはなぜですか?

  17. 17

    スワップファイルのサイズを3.8GBから1GBに減らす方法は?

  18. 18

    14.04にはどのくらいのRAMが必要ですか?

  19. 19

    C ++ 14でペアの配列の初期化に二重の括弧が必要なのはなぜですか?

  20. 20

    10億から100億の間の数には14が含まれています

  21. 21

    配列<T *、N>の要素のデフォルトの初期化にC ++ 14が必要なのはなぜですか?

  22. 22

    116+14 = -126 (CS50) の理由がわからない

  23. 23

    iOS14以降に表示されないUITextFieldの背景画像を修正するにはどうすればよいですか?

  24. 24

    C ++ 14機能を使用しているにもかかわらず、C ++ 11でのコンパイルが成功するのはなぜですか?

  25. 25

    NodeJS 14で128ビット値を別の同じ長さの値にすばやく暗号化するにはどうすればよいですか?

  26. 26

    constではないメンバー関数は、C ++ 14以降の場合にのみconstexprである必要があります

  27. 27

    URLから最初の長い(11〜14桁)番号を抽出します

  28. 28

    IntelliJ IDEA 14のスペース削除動作を元に戻すにはどうすればよいですか?

  29. 29

    ObjectOutputStreamがDataOutputStreamで8バイトではなく14バイトを書き込むのはなぜですか?

ホットタグ

アーカイブ