私のVagrantfile
には、次のプロバイダーが定義されています。
Vagrantfileからの抜粋:
config.vm.provider :virtualbox do |vb| vb.gui = false vb.customize ["modifyvm", :id, "--memory", "4096"] end
私が走ったときfree -m
作成された内VM=次のレポートが表示されます。
total used free shared buffers cached
Mem: 3953 337 3615 0 18 119
-/+ buffers/cache: 199 3753
Swap: 0 0 0
VMが構築およびプロビジョニングされているときにswappinessを割り当てることは可能ですか?
設定してみましたvm.swappiness
in /etc/sysctl.conf
とVMを再起動しますが、スワップスペースをVMに追加しても影響はありません。
なぜスワップ領域が必要なのですか?スワップ領域をまったく処理せず、メモリ内ですべてを実行したくないのです。ただし、一部のアプリケーション(composerプロジェクト)は、特定の条件下で大量のメモリを使用することで悪名高くなっています。スワップスペースがないと、メモリの量を非常に自由にする必要がありますスワップスペースがあったとしても、VMをスローします-効率的ではないかもしれませんが-理論的には問題が少なくなります。
この行をvagrantファイルに追加するだけです
# Enable Dynamic Swap Space to prevent Out of Memory crashes
config.vm.provision "Shell", inline: "Sudo apt install swapspace -y"
そして再プロビジョニング
vagrant up --provision
これは動的スワップ空間デーモンです。いくつかありますが、こちらが人気です。
Sudo apt install swapspace
動作していることを確認するには
Sudo service swapspace status
http://pqxx.org/development/swapspace/ からの抜粋
Linuxカーネル用のこのシステムデーモンは、大きな固定スワップパーティションまたはスワップファイルを不要にすることを目的としています。
Linuxベースのシステム(常にGNU/Linux)にSwapspaceをインストールする場合、通常のswapパーティションを省略したり、かなり小さく保つことができます。スワップスペースは、通常のシステム使用中に追加の仮想メモリが必要であると判断すると、ハードディスクから自動的にスペースを要求します。逆に、不要になったスワップスペースは、ファイルシステムが通常使用するために再び解放されます。
つまり、スワップスペースがインストールされていると、インストール中にシステムの使用可能なスワップスペースのサイズを変更することは、もはや死活の選択ではなくなります。残念なことにインストールの選択によってディスク領域が失われることなく、単一の大きなパーティションだけでGNU/Linuxを実行することが実用的になりました。また、システムは、通常の場合と同じように通常の操作中に同じスワップ領域を使用せず、使用できないままにすることなく、当初予想されていたよりも多くのスワップ領域を必要とする、メモリを集中的に使用するタスクを時折処理できる必要があります。
Chefを使用してVagrantボックスをプロビジョニングする場合、最も簡単な解決策はおそらくswap_file
資源。このリソースはChef 14.0の新機能です。
たとえば、以下をレシピに追加します。
swap_file '/var/swap.1' do
size 1024
end