Auf meinem eingebetteten System schreibe ich einen intensiven Videostream auf SD. Ich mounte keine Partitionen, sondern schreibe nur auf /dev/mmcblk0p1
. Nach einer Weile bleibt mein Schreibvorgang hängen. Ich bekomme
[16952.240000] INFO: task vrec:1297 blocked for more than 120 seconds.
[mmcqd]
isst 90% und dmesg zeigt mir
[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
Nach dem Auswerfen/Einstecken der Karte funktioniert alles einwandfrei. Bitte helfen Sie mir, das Problem zu beheben.
Linux-Kernel: 2.6.28.9
Antwort1
mmcqd
ist ein Kernelprozess, der für die E/A-Warteschlange verantwortlich ist. Wenn dadurch eine hohe Ressourcennutzung auftritt, bedeutet dies, dass Ihre SD-Karte für Ihren Videostream zu langsam ist.
In solchen Fällen benötigen Sie unbedingt eine SD-Karte der Klasse 10 oder eine UHS-Karte, die für Videostreaming entwickelt wurde. Der Grund, warum das System nach dem Auswerfen/Einstecken reagiert, liegt darin, dass die Warteschlange geleert wird.