私の組み込みシステムでは、SDに集中的なビデオストリームを書き込んでいます。パーティションをマウントせず、書き込みだけをしています/dev/mmcblk0p1
。しばらくすると書き込みプロセスがハングします。
[16952.240000] INFO: task vrec:1297 blocked for more than 120 seconds.
[mmcqd]
90%を消費し、dmesgは私に表示する
[64142.350000] mmc0: starting CMD13 arg e6240000 flags 00000015
[64142.350000] mmc0: req done (CMD13): 0: 00000c00 00000000 00000000 00000000
[64142.350000] mmc0: starting CMD13 arg e6240000 flags 00000015
[64142.350000] mmc0: req done (CMD13): 0: 00000c00 00000000 00000000 00000000
[64142.350000] mmc0: starting CMD13 arg e6240000 flags 00000015
[64142.350000] mmc0: req done (CMD13): 0: 00000c00 00000000 00000000 00000000
[64142.350000] mmc0: starting CMD13 arg e6240000 flags 00000015
[64142.350000] mmc0: req done (CMD13): 0: 00000c00 00000000 00000000 00000000
[64142.350000] mmc0: starting CMD13 arg e6240000 flags 00000015
[64142.350000] mmc0: req done (CMD13): 0: 00000c00 00000000 00000000 00000000
カードの取り出し/挿入後はすべて正常に動作します。デバッグにご協力ください。
Linuxカーネル: 2.6.28.9
答え1
mmcqd
I/O キューを担当するカーネル プロセスです。これによってリソースの使用率が高くなる場合は、SD カードがビデオ ストリームに対して遅すぎることを意味します。
このような場合、ビデオ ストリーミング用に設計されたクラス 10 SD カードまたは UHS カードが本当に必要です。システムが取り出し/挿入後に応答するのは、キューがクリアされるためです。