我想在我的linux上做一些音乐创作,但是我在试图安装和使用一个低延迟内核时遇到了不稳定(系统冻结,可能是由于与nvidia专有图形驱动程序的冲突)。所以在我看来,我有三个选择:
选项2涉及重新分区等,所以我想避免这种情况,而且选项3非常难看,而且使用起来很乏味。因此,我想知道,如果我选择1,我错过了什么不使用低延迟内核的音乐制作?(一般情况下)和w.r.t.特别是linux工具链)?
如果我选择使用一个通用内核来制作音乐,有什么副作用,我可以期望一个低延迟的内核能够解决这个问题吗?我不能有效地使用杰克吗?我能录下来吗?我的录音会有延迟吗?噪音/跳过/屏幕?midi通过钢琴键盘输入的准确性会受到影响吗?
PS。这个问题是从music.SE交叉,根据那里的评论,这可能是一个更合适的论坛。我会对这里的人的意见感兴趣,关于音乐制作的linux工作流是否适合这个论坛。
发布于 2021-09-05 11:40:27
你的问题不清楚,但我会对它作一些解释,以便你将来能提出一个更好的问题。我认为,在事实发生后,不要把这个问题变成别的问题是有道理的。
low-latency内核可以以较低的延迟处理中断和短任务。它不是在Ubuntu上使用真正的实时内核补丁,而是所谓的PREEMPT配置。其思想是,如果没有PREEMPT支持,一旦内核开始执行某些syscall,即使硬件请求出现(例如MIDI命令),它也不会被中断。有了PREEMPT,系统电话将在需要时被中断。
如果运行无法中断任何syscalls的通用内核,则可以获得的最大延迟是系统中任何进程的最大长度syscall。因此,很难假设任何关于延迟的事情,而解决方法通常是使用更大的缓冲区,这显然会给音频处理造成更长的延迟。
使抢占成为可能所需的内核特性会导致CPU总使用量的一些开销(可能为0-2%),这也是在通用内核中没有启用这些特性的原因。此外,先发制人更容易触发内核中一些未知的编程错误.这是因为syscalls可能会被中断,而编写错误的内核代码只有在代码从未中断时才能意外地工作(例如,它不会为某些共享结构获取内存锁,除非syscall中断,但如果syscall被中断,共享结构可以由多个CPU核心同时修改)。
我不知道NVIDIA驱动程序的当前情况,但是,例如,VirtualBox内核驱动程序过去在低延迟内核方面有很大的问题,因为这些驱动程序中有很多bug。现在,VirtualBox内核驱动程序在low-latency内核中的工作似乎要好得多--我已经几年没有遇到任何问题了。
如果您没有损坏的设备驱动程序,并且希望对硬件中断进行低延迟处理,那么您肯定希望一直使用低延迟内核。
我有一个廉价的USB附加麦克风,并使用主板集成声卡的音频输出,这足以获得充分的10毫秒的潜伏期,从麦克风录音音频到声卡播放它后,音频通过整个脉冲音频堆栈。有了更好的硬件,你应该能够得到不到2毫秒的延迟,特别是杰克。
TL;DR:低延迟内核应该会减少所有操作的延迟,但是它会稍微增加CPU的使用。没有low-latency内核,传入数据的最大延迟取决于整个系统的最大syscall延迟。如果你对背景过程不小心,你最终会出现声音跳过或随机延迟的MIDI行为。使用low-latency内核,在内存耗尽之前,后台作业并不重要。除非你在做高性能计算(HPC)或我的密码硬币,否则你通常想要比最大CPU吞吐量更低的延迟,所以不使用低延迟内核的唯一理由应该是糟糕的设备驱动程序。
如果在低延迟内核中出现音频跳过或延迟问题,我建议使用开源GPU驱动程序( NVIDIA GPU的新驱动程序)进行测试,如果问题消失,您就会发现问题所在。
我在我的所有系统上运行低延迟内核大约有十年了,我对它比使用通用内核要高兴得多。
检查你的内存时钟;低延迟内核可能会对你的主板造成更多的尖峰电源需求,如果你的主板或PSU电源传输不够好,尝试运行内存时钟很高可能会导致内存错误,这将导致各种随机不稳定。尝试在压力测试模式下运行mprime,在后台使用至少50%的内存,同时执行其他任务--如果它检测到任何错误,那么RAM就不能正常工作,如果您想要一个稳定的系统,就不应该运行低延迟或通用内核。通用内核对硬件的要求可能较低,您将看到错误内存中的错误较少,但请放心,即使使用通用内核,它迟早也会导致问题。
https://unix.stackexchange.com/questions/362518
复制相似问题