SDカードの書き込み速度を向上

SDカードの書き込み速度を向上

私はLinux 2.6を実行するARMマシンを使用しています(残念ながら私はこのカーネルバージョンを使用してきました)。このボックスはSDカードから起動し、保存にはセカンダリSDカードを使用します。ボックスには約256MBのメモリがあります。

どちらのSDカードもdm-cryptで暗号化されていますが、ディスク暗号化を実装するまではパフォーマンスが非常に悪かったため、これが読み取り/書き込みパフォーマンスに大きな影響を与えないようです。これをバックアップする正確な数字はありませんが、たとえばdm-cryptを使用せずにSDカードに1 GBを書き込むのに1時間以上かかります。

一般的な使用では、読み書き速度が十分です。ただし、ソースコードからソフトウェアを構築するなどの特定のタスクは、一度に数分間I / Oタスクをロックする傾向があります。特に、書き込み操作は長期ブロック操作だと思います。私はついに役に立つ情報を提供するツールiostatを見つけました。

プログラム(設定スクリプトなど)がブロックされたときに実行できますwatch iostat。 Blk_wrtnフィールドを観察すると、ロックを引き起こすボトルネックが書き込み操作であることが確認されます。具体的には、ブロック書き込み操作中、dm-1デバイス(2番目のSDカードのロック解除されたパーティション)はNブロックを書き込み、mmcblk1(2番目のSDカード)はMブロックを書き込みます。ここで M<N です。 Mは次のように増加します。最終的にNに等しくなるまで時間が流れ、この時点で書き込み操作が完了し、プログラムが続行されます。この記事を書いた時点で、mmcblk1とdm-1のBlks_wrtn / sは約10です。

私はこの観察を通して、ブロックが直ちにdm-1擬似デバイスに書き込まれ、物理ディスクにフラッシュされるという結論を下しました。このフラッシュ操作は予想よりも時間がかかります。

以下は、SDカードの書き込みパフォーマンスを向上させるために試してみる / 考慮したオプションです。

  1. より良いドライバ/パフォーマンスを備えた最新のカーネルへのアップグレード:最新のカーネルを持ちたいのですが、私たちは製造業者が提供するものに固執しています。私はまだ最新のカーネルが利用可能かどうかを調べようとしています。
  2. SDカードに異なるIOスケジューラを使用する:目立つパフォーマンスの違いなしに、デッドライン、CFQ、およびnoop間の切り替えを試みました。
  3. より高いグレードのSDカードを使用してください。実際にメーカーが提供するSDカードのグレードが何なのかは分かりませんが、同じ性能を持つ4級SDカードを代わりに使ってみました。 SDカード自体がボトルネックだとは思わない。リーダー自体がボトルネックかもしれませんが、それを確認する方法がわかりません。
  4. SDカードで別のファイルシステムを使用する:現在Ext4を使用しています。ファイルシステムが異なると大きな違いはありますか?

SDカードの書き込み速度を上げる方法はありますか?

ベストアンサー1

利用可能なRAMが十分な場合は、RAMで/ tmpを実行できます。

コンパイル時または/tmpで一時ソケットを使用するデーモンを使用すると、パフォーマンスが向上します。

別の戦略は、syslogにまったくログを記録しないように指示するか(最も良いアイデアではない)、ログをリモートサーバーに送信するように指示することです。可能なディスクベースのデータベースの場合も同様です。

また、syslogデーモンと設定に応じてログファイルに注意してください。複数のsyslogファイルに1行を書き込むと、そのファイルのfsyncがトリガー/強制される可能性があります。

不要なデーモンがあること、RAMが不足していることを確認してください。たとえば、不要なときにWebサーバーを停止すると便利です。

カードの場合、クラス10カードが利用できるほど価格が下がりました。

おすすめ記事