没有低延迟内核的 Linux 音乐制作工作流程

没有低延迟内核的 Linux 音乐制作工作流程

我想在我的 linux mint 电脑上创作一些音乐,但在尝试安装和使用低延迟内核时遇到了不稳定的情况(系统冻结,可能是由于与 nvidia 专有图形驱动程序冲突)。所以在我看来,我有三个选择:

  1. 要么使用我当前的系统,即正常的通用内核
  2. 安装专用的音频发行版,例如 Ubuntustudio
  3. 在我当前的系统上安装低延迟内核,但禁用我的显卡。

选项 2 涉及重新分区等,所以我想避免这种情况,而选项 3 则相当丑陋且乏味。所以我想知道,如果我选择选项 1,如果不使用低延迟内核进行音乐制作,我会错过什么? (一般来说,尤其是 Linux 工具链)?

如果我选择使用通用内核进行音乐制作,低延迟内核应该解决哪些副作用和问题?我会无法有效使用JACK吗?我可以录音吗?我的录音会出现延迟吗?噪音/跳跃/尖叫声?通过钢琴键盘输入 MIDI 的准确性会受到影响吗?


附言。这个问题是从 music.SE 交叉发布根据评论,表明这可能是一个更合适的论坛。我很想了解人们对音乐制作的 Linux 工作流程是否适合本论坛主题的看法。

答案1

你的问题不清楚,但我会回答一些解释,以便你将来可以提出更好的问题。我认为事后不要开始将这个问题变成其他问题是有意义的。

内核low-latency将能够以较低的延迟处理中断和短任务。它在 Ubuntu 上没有使用真正的实时内核补丁,而是使用所谓的PREEMPT配置。这个想法是,如果没有PREEMPT支持,一旦内核开始执行某些系统调用,即使硬件请求进来(例如MIDI命令),它也不会被中断。如果需要,系统调用PREEMPT将被中断。

如果您运行无法中断任何系统调用的通用内核,则可以获得的最大延迟是系统调用的最大长度任何您的系统中的进程使。因此,假设有关延迟的任何信息都变得更加困难,并且通常的解决方法是使用更大的缓冲区,这显然会导致音频处理的延迟更长。

使抢占成为可能所需的内核功能会导致总 CPU 使用率产生一些开销(可能是 0-2%),这就是通用内核中未启用这些功能的原因。此外,抢占更容易触发内核中一些未知的编程错误。这是因为系统调用可能会被中断并且内核代码写得不正确可能会意外地仅在该代码从未被中断时才起作用(例如,它不会获取某些共享结构的内存锁,这些共享结构实际上无法共享,除非系统调用被中断,但如果系统调用被中断,则共享结构可以同时被多个CPU核心修改被打断)。

我不知道 NVIDIA 驱动程序的当前情况,但例如 VirtualBox 内核驱动程序过去在低延迟内核方面存在重大问题,因为这些驱动程序中存在大量错误。如今,VirtualBox 内核驱动程序似乎与low-latency内核配合得更好 - 几年来我没有看到任何问题。

如果您没有损坏的设备驱动程序并且希望对硬件中断进行低延迟处理,那么您肯定希望始终使用低延迟内核。

我有一个便宜的 USB 连接麦克风,并使用主板集成声卡进行音频输出,这足以使从麦克风录制音频到声卡在音频通过完整的脉冲音频堆栈后播放音频的延迟低于 10 毫秒。有了更好的硬件,您应该能够将延迟控制在 2 毫秒以下,尤其是使用 JACK 时。

长话短说:低延迟内核应该会减少所有操作的延迟,但会稍微增加 CPU 使用率。如果没有low-latency内核,传入数据的最大延迟取决于整个系统的最大系统调用延迟。如果您不小心后台进程,您最终会出现声音跳跃或随机延迟的 MIDI 行为。对于low-latency内核来说,除非内存耗尽,否则后台作业并不重要。除非您正在进行高性能计算 (HPC) 或挖掘加密货币,否则您通常希望所有事情的延迟低于最大 CPU 吞吐量,因此不使用低延迟内核的唯一原因应该是糟糕的设备驱动程序。

如果您在低延迟内核中遇到音频跳跃或延迟问题,我建议您使用开源 GPU 驱动程序(适用于 NVIDIA GPU 的 Nouveau 驱动程序)进行测试,如果问题消失,则说明您已找到问题所在。

我在所有系统上运行低延迟内核已有大约十年的时间,而且我对它比对通用内核更满意。

并检查你的内存时钟;低延迟内核可能会导致主板的电源需求更高,如果您的主板或 PSU 供电不够好,尝试以非常高的速度运行内存时钟可能会导致内存错误,从而导致各种随机不稳定。尝试mprime在执行其他任务时在后台使用至少 50% 的 RAM 在压力测试模式下运行 - 如果它检测到任何错误,则说明 RAM 无法正常工作,并且如果您想要一个低延迟或通用内核,则不应运行稳定的系统。通用内核对硬件的要求可能较低,并且您会看到故障内存带来的错误较少,但请放心,即使使用通用内核,它迟早也会导致问题。

相关内容