it-swarm-ja.com

Embedded LinuxでNandフラッシュをスワップメモリ​​として使用できますか?

製品の1つに128MBのRAMがあります。これは、製品の最初のバージョンをリリースしたときには十分でした。しかし、今ではいくつかの機能を追加したので、これだけのRAMがOOMの問題を引き起こす可能性があります。

64 MBのフラッシュメモリがあり、そのうち50%以上が未使用です。残りのメモリをスワップメモリ​​として使用できますか?

この製品では、Linuxカーネルバージョン3.4.56を使用しています。

よろしくお願いします。

2
nyk_mat

フラッシュが ウェアレベリング (依存します)をサポートしている場合、スワップは実行可能である可能性があります。これは、これらのデバイスをどれだけ長く持続させるかによって異なります。他の要因があります-書き込みに関してフラッシュメモリが評価されるもの、それが今まで使用されていた期間、書き込みに関してどれだけアクティブであったか。

ウェアレベリングは、コントローラーがすべてのセルに書き込まれた回数を一定にカウントし、すべてのセルがそれらに等しく書き込まれるように物事を維持しようとするプロセスです。

これが完全に機能し、デバイスの書き込み定格が100,000である場合(たとえば)、非常に大まかな計算から、完全な摩耗と10MB /秒で2。5年強の寿命が期待できることがわかります。現実的には、おそらく完璧な摩耗は見られないでしょうが、そのレベルの絶え間ない書き込みも見られないでしょう。

ウェアレベリングがないと、すべての賭けが無効になり、データが上書きされる頻度がわからなくなり、フラッシュセル全体にデータを拡散するものがなければ、使用状況に応じて数時間/数日/数週間でセルを強制終了できます。 。

したがって、フラッシュデバイスをスワップに使用できますが、使用するかどうかは、上記の要因と、デバイスを実行可能にする期間によって異なります。

もう1つの注意:このデバイスでのランダム書き込みの速度は通常遅いため、構成時にフラッシュスワップを実行すると、パフォーマンスが大幅に低下します。 OOMの状況を回避できますが、すべてがクロールに遅くなると同じように悪い可能性があるため、それが価値があるかどうかを確認するために、確かにいくつかのテストが必要です。

2
Adam C

Linuxは、スワップが存在するブロックデバイスを気にしません。シェルからswaponコマンドを使用すると、好きな場所に配置できます。

これは、ハードドライブパーティションsda1sda2など、iSCSIデバイス、/dev/mapper内の暗号化またはLVMされたデバイス、またはmtdblockデバイスです。

フラッシュがすでにフォーマットされている場合は、ブロックデバイスの代わりにスワップファイルを使用することをお勧めします。

1
LawrenceC