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

카드를 꺼내거나 삽입한 후에는 모든 것이 잘 작동합니다. 디버깅을 도와주세요.

리눅스 커널: 2.6.28.9

답변1

mmcqdI/O 대기열을 담당하는 커널 프로세스입니다. 이로 인해 리소스 사용량이 높아지면 SD 카드가 비디오 스트리밍에 너무 느린 것입니다.

이 경우 비디오 스트리밍용으로 설계된 클래스 10 SD 카드나 UHS 카드가 꼭 필요합니다. 팝/삽입 후에 시스템이 응답하는 이유는 큐가 지워졌기 때문입니다.

관련 정보