完全なパフォーマンス低下なしにSWAPでコンピューティングを実行する - NVMe速度とRAMを置き換えることができるかどうかについて議論

完全なパフォーマンス低下なしにSWAPでコンピューティングを実行する - NVMe速度とRAMを置き換えることができるかどうかについて議論

最近、私はRで実行される特定のデータ分析要件を満たすためにシステムをアップグレードするために、さまざまな方法でLinuxシステム(現在ポップOS)を設定しています。簡単に言えば、私が作業しているデータセットは生物学的単一細胞データであり、私は通常大きなテーブルの複数の変換作業をしています。そして、Rは有用なRAMの使用と適切なガベージコレクションに最適化されていないので、私はいつも次の問題に直面しました。私が使用しなければならなかったいくつかのよく確立されたプラグインを計算するために必要な膨大なRAMオーバーヘッド。したがって、リソース不足のコンピューティングに移動するオプションがなく、RAMなどのクラスタ要件にローカルPCを使用したいので、次のように設定しました。

Ryzen 5 3600xtに2つの8gig 3600mhz cl19 RAMがインストールされており、MSI tomahawk b450 max、WindowsおよびLinux、単一の240GB SSDで動作します。 2x 16gb 3600mhz cl19 RAMスティックをさらにアップグレードし、(興味深いことに)Linuxでは50.05GB RAM、Windowsでは48GB RAMを得ました。これまでこの設定の実行に問題はありませんでしたが、50 GBを超えるいくつかの小さなオーバーヘッドを処理するにはより多くのRAMが必要ですRAMが必要です)。周期)。

M.2 Gen3ポートに別のNVMe(Gen 4 1TB)を取り付け、両方のシステムをそのドライブに再インストールしました。上記の設定でSWAPを使用すると遅延が発生し、正しく計算されなくなるため(最大5%)、CPU使用率は高くなりますが、MEMがいっぱいになってシステムがハングします。 SWAP がキャッシュできないオーバーフローの可能性があります。

そのため、従来の240GB SSDを完全に大規模な交換に設定した状態で、ローカルPCでいくつかの大きな機能を再実行してみましたが、RAMがいっぱいでもしばらく合理的に動作するシステムを得ることができましたが、性能は低調でした。それでもブレークアウトは2番目のブロックのSWAPで計算されます。

ここでは一般的なCPU負荷を見ることができます。シングルスレッドロードは、単一の古いSATA SSDのSWAP計算にのみ変更されました。

私はSSDドライブにこれが絶対に悪いことを知っていますが、さらに一歩進んで、私のNVMEに2番目のスワップパーティションを追加しました。ここでついに最先端の技術が役に立つところを確認できました。約50%の性能を得ました。 2番目の写真は単なる例です。

左から右へ:RAMを含むフルシングルコア性能、赤線、SSD(240gig)、NVME(100gig)のSWAPを使用したCPU性能の低下、緑線、ジョブ完了、システムアイドル状態、RAM確保のために実行中のガベージ収集なし、青い線はRAMを解放するためにRからgc()が呼び出されます。ここでは、約30GBのブロックが解放されていることがわかります。

効率的なNVMeがあり、パフォーマンスがさらに向上する未来を想像してみてください。これにより、複数のNVMeスワップドライブを実行することがキャプチャに非常に良いことがあります。最適化されていない大容量RAMのコンパイルまたはすべてのデータが必ずしも必要ではない、同様のシナリオのオーバーヘッド。

今私の質問は次のとおりです。追加のRAM制限に達すると、まだ空のPCIeスロットを介してNVMeをさらに拡張することが役に立つと思いますか?それとも、スワップファイル拡張子がここで想像するほど強力ではなく、ほとんどのユーザーにとって過去のことになってしまったのでしょうか?私は約2年間Linuxを使用してきたので、カーネル/ディープソフトウェアの実際の経験はありません。

私はこれらの問題についてもっと学ぶためにあなたの意見や推論を聞きたいです。これまでは、これはまだ多くのユーザーが考慮していないニッチであると考えていますが、実際には多くの可能性があると思います。長い間必要な計算では、NVMEの摩耗を考慮しているサーバーでも、RAMスティックなどで常に使用するよりも効率が悪くなる可能性があります。まだ完全に終了していないといいですね。ここに質問が少なすぎます。ご意見をお待ちしております!

PS:同じコンピュータ上で実行されているコンピューティングノードのハードウェア制約を最大限に活用しながら、自分のコンピュータで作業できるようにローカルSLURMシングルノード「クラスタ」を実行することも検討していますが、これはもう1つの質問のテーマです。

ベストアンサー1

おすすめ記事