프로그램 지연을 디버깅하는 방법은 무엇입니까?

프로그램 지연을 디버깅하는 방법은 무엇입니까?

rpi에서 amsynth를 실행하려고합니다. 최신 버전의 Raspbian을 새로 설치하세요.

x86 데스크탑에서 amsynth를 테스트했는데 지연 없이 잘 작동했습니다.

그러나 rpi에서는 midi 명령(vkeybd 사용)을 보낸 후 경고음이 들리는 사이에 약 1초의 지연이 있습니다.

더 나은 친근감을 설정하는 것은 도움이 되지 않는 것 같습니다.

amsynth를 제어하기 위해 mido 라이브러리를 사용하여 Python으로 작은 스크립트를 작성했지만 여전히 지연 소리가 들립니다.

이 문제의 원인을 디버깅하려면 어떻게 해야 합니까? 저는 기본적으로 최종 사용자일 뿐입니다.

내 생각에는 midi 명령이 지연되거나 amsynth 자체가 지연되고 있는 것 같습니다(가능성이 낮습니다).

이 테스트 중 로드 평균은 0.4였고, 유휴 상태에서는 0.1이었습니다.

상단에는 amsynth CPU 사용률이 12%에 머물고 있는 것을 보여줍니다.

이를 위해 대기 시간이 짧은 코어가 필요하지 않습니다. 그렇죠? 예를 들어, 애플리케이션이 대기 시간을 50ms에서 10ms로 줄일 것이라고 상상하는데, 여기서 하고 싶은 것은 대기 시간을 1000ms에서 50ms로 줄이는 것뿐입니다.

편집: alsa를 사용하고 다른 프로그램에서 어떤 종류의 오디오 지연도 생성하지 않습니다. 즉, 크롬에서 실시간으로 YouTube의 오디오를 재생합니다. 재생과 일시 정지를 눌렀을 때 렉도 눈에 띄지 않았습니다.

답변1

Jack, alsa 등의 목적으로 amsynth 및 vkeybd를 사용하고 있는지 확인하십시오. 그런 다음 다음을 시도할 수 있습니다.

사용이 더 어렵습니다.

답변2

프로세스에 실시간 권한이 있는지 확인하십시오(일반적으로 사용자별로 수행됨).

Ivan이 언급했듯이 PREEMPT_RT 패치 세트가 있는 커널이 더 적합할 수 있습니다.

내 경험에 따르면 지연 시간이 짧은 오디오에서는 JACK이 ALSA보다 낫습니다.

http://jackaudio.org/faq/linux_rt_config.html

관련 정보