9

その解決策が見つからなかったので、わかりません。

私は 512MB の RAM と SSD ディスクを備えた VPS を持っています。

私の問題は次のとおりです。Java ベースのサーバー プログラムを実行したいのですが、スワップを完全に取り込みたいのです。-Xms は現在 384 ですが、十分ではありません。

解決策はありますか?

ps: swappiness は 60 です。このプロセスを RAM で見たくありません :-)

4

2 に答える 2

17

cgroupsあなたのために働くかもしれません。メモリ制限を適用できます。プロセスがその制限に達すると、スワップが開始されます。

ここに小さな例と説明があります。

于 2013-06-15T11:20:17.817 に答える
9

「完全に」スワップで実行できるプロセスはありません。CPUが読み取り/書き込み/実行するには、コードとデータをRAMにロードする必要があります。物事を一時的に押し出してスワップすることはできますが、常駐セットが小さすぎる場合、システムは継続的にスワップします。(SSD を使用しても、ディスクからの読み込みは RAM からの読み込みよりも何千倍も遅くなります。)

この一定のスワッピングは次のようになります。

1) ディスクの I/O 帯域幅の一部が常に使用されているため、システム全体の速度が低下します。

2) SSD は故障するまでの書き込みサイクル数が限られているため、SSD の寿命を縮めます。

最善の策は、大きなスワップ領域を作成し、プログラムを通常どおり実行することです。OS は、使用頻度の低いビットをディスクに移動します。システムの残りの部分で良好なパフォーマンスが得られない場合は、より多くの RAM が必要です。ulimit や cgroups を使用して、プロセスが使用する RAM の量を制限することはできますが、これでは問題を「解決」できません。

または、より効率的な言語でサーバーを書き直すこともできます。(これは一般的なトレードオフです。プログラマーが実行時の CPU/メモリ フットプリントを最適化するために何か月も費やすか、ビジネスがハードウェアにより多くのお金を費やすかです。)

于 2013-06-15T17:35:16.910 に答える