如何调试程序延迟?

如何调试程序延迟?

我正在尝试在 rpi 上运行 amsynth。最新版本的 raspbian,全新安装。

我在我的 x86 桌面上测试了 amsynth,它运行良好,没有延迟。

然而,在 rpi 上,我在发送 midi 命令(使用 vkeybd)和听到提示音之间有大约 1 秒的延迟。

设置更好的友好度似乎没有帮助。

我使用 mido 库在 python 中编写了一个小脚本来控制 amsynth,但我仍然听到延迟。

我将如何尝试调试导致此问题的原因?我基本上只是一个最终用户。

我猜测要么是 midi 命令被延迟了,要么是 amsynth 本身滞后了(似乎不太可能)。

这些测试期间的平均负载为 0.4,而空闲时为 0.1。

顶部显示 amsynth CPU 利用率徘徊在 12%。

为此不需要低延迟内核,对吧?例如,我想象该应用程序会将延迟从 50 毫秒降低到 10 毫秒,而我在这里想做的只是将延迟从 1000 毫秒降低到 50 毫秒。

编辑:使用 alsa,并且不会与任何其他程序产生任何形式的音频延迟,即在 chromium 中实时播放来自 youtube 的音频。当我按下播放和暂停时,延迟甚至不明显。

答案1

尝试确定您使用 amsynth 和 vkeybd 的内容:Jack、alsa 等然后您可以尝试:

其使用方法比较困难:

答案2

确保该进程具有实时权限(这通常是针对每个用户完成的)。

正如 Ivan 所提到的,带有 PREEMPT_RT 补丁集的内核可能更合适。

根据我的经验,JACK 在低延迟音频方面比 ALSA 更好。

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

相关内容