Linux - ディスクを RAM として使用する

Linux - ディスクを RAM として使用する

VM があり、その中に大量のメモリ (約 200 GB) を消費するプロセスがあります。ある種のインメモリ DB です。これを標準のラップトップで実行する必要があり、再コンパイルしたりコードを確認したりできません。

/etc/fstab に pri=32767、/etc/sysctl.conf に vm.swappiness=100 を指定して 256 GB のスワップ領域を追加しましたが、DB がすぐにロードされません (24 時間後に 4 GB で止まり、これ以上は増えないようです)。

(編集: マシンのクローンを作成し、RAM を 256 GB から 4 GB に変更し、ハード ディスクを追加し、ext4 としてフォーマットし、サイズが 256 GB のスワップ ファイルを作成しました (dd -> mkswap -> swapon...))

なぜ成長が止まったのでしょうか?

速度低下の原因は、スワップ領域であるため、OS が「スワップ」処理でビジー状態になっている (ロード -> 十分な領域がない -> スワップアウトする対象を決定...) ためではないかと考えています。

「メモリを追加」しながらも OS がそれを通常のメモリとして扱う方法を探しています。それとも私のスワップ設定が間違っているのでしょうか?

パフォーマンスに悪影響を与えることはわかっていますが、私にとっては許容範囲内です。

VMはCentOS 6です。

答え1

複数のスワップ ファイルを試しましたか? 4 GB は、32 ビット システムのファイル サイズ制限に達しているようです。

このチュートリアルはcentos.orgスワップ ファイルを手動で作成する方法を非常にわかりやすく説明しました。

スワップ ファイルを追加するには:

  1. 新しいスワップ ファイルのサイズをメガバイト単位で決定し、1024 を掛けてブロック数を決定します。たとえば、64 MB のスワップ ファイルのブロック サイズは 65536 です。
  2. シェルプロンプトで、root として次のコマンドを入力します。count には希望するブロック サイズを指定します。

dd if=/dev/zero of=/swapfile bs=1024 count=65536

  1. 次のコマンドでスワップ ファイルを設定します。

mkswap /swapfile

  1. スワップ ファイルをブート時に自動的に有効にするのではなく、すぐに有効にするには:

swapon /swapfile

  1. 起動時に有効にするには、/etc/fstab を編集して次のエントリを追加します。

/swapfile swap swap defaults 0 0

次回システムを起動すると、新しいスワップ ファイルが有効になります。

新しいスワップ ファイルを追加して有効にした後、コマンドcat /proc/swapsまたはの出力を表示して有効になっていることを確認しますfree

答え2

私は最終的にデータをSQLiteデータベースに変換し、https://github.com/assafmo/SQLiteQueryServerリモートからアクセスできるようになりました。問題なく動作し、非常に高速でした。

関連情報