mmcqd がハングし、組み込みデバイスの CPU が焼き切れる

mmcqd がハングし、組み込みデバイスの CPU が焼き切れる

私の組み込みシステムでは、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

mmcqdI/O キューを担当するカーネル プロセスです。これによってリソースの使用率が高くなる場合は、SD カードがビデオ ストリームに対して遅すぎることを意味します。

このような場合、ビデオ ストリーミング用に設計されたクラス 10 SD カードまたは UHS カードが本当に必要です。システムが取り出し/挿入後に応答するのは、キューがクリアされるためです。

関連情報