カテゴリ:ソフト開発日誌
クジラデザインの CHUXIA MicroSD card 8Gbyte の性能を見ていく。
![]() O_DIRECT を付けた (OS の cache は使わない) sequential write は平均で約 6Mbytes/sec となった。ピーク 31Mbytes/sec をプロットに明瞭に現れている程度に出せている。 ![]() card 表面に Class 10 が印刷されている。この性能を出せているかは微妙な判定になる。1 回の数 100kbyte ~ 1Mbyte 程度のファイル書き込みは不満がない性能だといえる。複数ファイル書き込みで 6Mbytes/sec になっても、体感は「そんなものかな」だと思う。 O_DIRECT を付けた (OS の cache は使わない) sequential read は平均で約 84Mbytes/sec となった。SDR104 (clock 208MHz, single edge) に見合うスピードだ。 ![]() 突発的な速度落ち込みは無い。論理物理アドレス変換が様々な場合でほぼ O(1) 程度で済んでいそうだ。エラー訂正に時間が掛かっていないか、ほぼエラーが訂正は発生していないと思われる。 使い込むとエラー訂正の様子が変わる可能性はある。記憶セルの品質に直ぐに気になる点は無さそうだ。 O_DIRECT を付けた (OS の cache は使わない) random write を見ていく。転送速度などで見たい場合は、元の測定データを当たって欲しい。 気になる傾向がある。10 iops 程度に落ちる場合が頻発しているのと、400kbyte 以上の書き込みで 1 ~ 10 秒越えのアクセス時間(Turn Around Time)になってしまう場合が多くある。 ![]() 直前の Read/Write の後、何かしらの内部処理が動いていて、待ちが発生している。O_DIRECT を付けているので Host 側のつもりは「直前の Read/Write は完了している」となっている。 Wear leveling? SLC cache → MLC/TLC... page へデータ移動?得られたデータから内部動作を想像するのは難しい。処理打ち切り 100ms timer 付きで何かの内部処理をしているのと、4M ~ 100M byte の書き込みに相当する時間が掛かる内部処理をしている。 O_DIRECT を付けた (OS の cache は使わない) random read を見ていく。こちらにも 11iops 程度に落ちる場合が見られる。頻度は少ないものの 突然 Turn Around Time が 100m ~ 500ms になってしまう場合も見られる。 ![]() Random Read/Write の傾向からすると SSD が出たての頃にあったプチフリーズ(1 ~ 2 分程度応答しなくなる動作)が起きやすい。 O_DIRECT を付けない(OS の cache が有効な状態)性能測定を見ていく。こちらの方が実体験に近い。 O_DIRECT を付けない (OS の cache を使う) random write を見ていく。cache が効いた場合のプロットが加わる。突発的に 2Mbyte (恐らく 2Mibyte) の書き込みに 10 ~ 1,000 倍の時間が掛かる場合が発生している。2Mibyte は内部動作の癖を突くような書き込み長なのだろうか? Erase Block Size の整数倍? ![]() O_DIRECT を付けない (OS の cache を使う) random read を見ていく。こちらにも cache が効いた場合のプロットが加わる。read() に 100 秒近く ~ 100秒を越える時間が掛かってしまう場合が出てきた。 ![]() Page In による read だとすると、システム全体で操作が固まってしまう状況になる。Single Board Computer に乗せる Linux の様な Page In/Out をする OS 格納用 storageあるいは swap として使うのは難がある。OS Update 事前評価で条件を振るために一時的に何枚も使う場合に充当するのであれば理解の上で使うのが良さそうだ。 値段相応に普通に使える程度の MicroSD card memory だということが分かった。クジラなので水揚げ毎に性能が違うのかもしれない。 お気に入りの記事を「いいね!」で応援しよう
最終更新日
2025.04.02 14:09:17
コメント(0) | コメントを書く
[ソフト開発日誌] カテゴリの最新記事
|
|