En mi sistema integrado estoy escribiendo una transmisión de video intensiva en SD. No monto particiones, solo escribo en /dev/mmcblk0p1
. Después de un tiempo, mi proceso de escritura se bloquea. yo obtengo
[16952.240000] INFO: task vrec:1297 blocked for more than 120 seconds.
[mmcqd]
se come el 90% y dmesg me lo muestra
[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
Después de expulsar/inyectar una tarjeta, todo funciona bien. Por favor, ayúdame a depurarlo.
Kernel de Linux: 2.6.28.9
Respuesta1
mmcqd
es un proceso del kernel responsable de la cola de E/S. Si estás obteniendo un alto uso de recursos debido a esto, eso significa que tu tarjeta SD es demasiado lenta para tu transmisión de video.
En casos como este, realmente necesitas una tarjeta SD de clase 10 o una tarjeta UHS diseñada para transmisión de video. La razón por la que el sistema responde después de una expulsión/inserción es porque se borra la cola.