沒有低延遲核心的 Linux 音樂製作工作流程
我想在我的 linux mint pc 上做一些音樂創作,但在嘗試安裝和使用低延遲核心時遇到了不穩定(系統凍結,可能是由於與 nvidia 專有圖形驅動程序衝突)。所以在我看來,我有三個選擇:
- 要麼使用我目前的系統,即普通的通用核心
- 安裝專用的音頻發行版,例如 Ubuntustudio
- 在我目前的系統上安裝低延遲核心,但禁用我的顯卡。
選項 2 涉及重新分區等,所以我想避免這種情況,而選項 3 使用起來非常醜陋且乏味。所以我想知道,如果我選擇選項 1,我會因為不使用低延遲核心進行音樂製作而錯過了什麼?(一般來說,特別是 linux 工具鏈)?
如果我選擇使用通用核心進行音樂製作,我可以期望低延遲核心解決哪些副作用和問題?我不能有效地使用 JACK 嗎?我可以錄音嗎?我的錄音會有延遲嗎?噪音/跳躍/尖叫?通過鋼琴鍵盤的 MIDI 輸入精度會受到影響嗎?
PS。這個問題是從 music.SE 交叉發布的,根據那裡的評論表明這可能是一個更合適的論壇。我很想听聽人們對用於音樂製作的 linux 工作流程是否適合這個論壇的主題的看法。
你的問題不清楚,但我會回答一些解釋,以便你將來可以提出一個更好的問題。我認為事後不要開始將這個問題變成其他問題是有道理的。
low-latency
核心將使以較低延遲處理中斷和短任務成為可能。它不是在 Ubuntu 上使用真正的實時核心更新檔,而是所謂的PREEMPT
配置。這個想法是,如果沒有PREEMPT
支持,一旦核心開始執行一些系統呼叫,即使有硬體請求(例如 MIDI 命令),它也不會被中斷。PREEMPT
如果需要,系統呼叫將被中斷。如果您執行不能中斷任何系統呼叫的通用核心,那麼您可以獲得的最大延遲是系統中任何程序進行的最大系統呼叫長度。因此,很難對延遲做出任何假設,通常解決方法是使用更大的緩衝區,這顯然會導致音頻處理的延遲更長。
使搶占成為可能所需的核心功能會導致總 CPU 使用率的一些成本(可能為 0-2%),這就是通用核心中未啟用這些功能的原因。此外,搶占更容易觸發核心中一些未知的程式錯誤。這是因為系統呼叫可能會被中斷,並且錯誤編寫的核心程式碼可能僅在該程式碼從不中斷時才會意外工作(例如,它不會為某些無法實際共享的共享結構獲取記憶體鎖,除非系統呼叫被中斷但共享結構可以如果系統呼叫被中斷,則同時被多個 CPU 核心修改)。
我不知道 NVIDIA 驅動程序的目前情況,但例如,由於這些驅動程序中存在大量錯誤,VirtualBox 核心驅動程序曾經在低延遲核心方面存在重大問題。如今,VirtualBox 核心驅動程序似乎與
low-latency
核心一起工作得更好——幾年來我沒有看到任何問題。如果您沒有損壞的設備驅動程序並且您希望對硬體中斷進行低延遲處理,那麼您肯定希望始終使用低延遲核心。
我有一個便宜的 USB 連接麥克風,並使用主機板集成音效卡進行音頻輸出,這足以在音頻通過完整的 pulseaudio 堆棧後從麥克風錄製音頻到音效卡播放的延遲低於 10 毫秒。使用更好的硬體,您應該能夠獲得低於 2 毫秒的延遲,尤其是使用 JACK。
**TL;DR:**低延遲核心應該減少所有操作的延遲,但它會增加 CPU 使用率。在沒有
low-latency
核心的情況下,傳入數據的最大延遲取決於整個系統的最大系統呼叫延遲。如果您不注意後台程序,您最終會出現跳音或隨機延遲的 MIDI 行為。使用low-latency
核心,在您用完 RAM 之前,後台作業並不重要。除非您正在執行高性能計算 (HPC) 或探勘加密貨幣,否則您通常希望在最大 CPU 吞吐量上降低延遲,因此不使用低延遲核心的唯一理由應該是糟糕的設備驅動程序。如果您在使用低延遲核心時遇到音頻跳過或延遲問題,我建議您使用開源 GPU 驅動程序(NVIDIA GPU 的 Nouveau 驅動程序)進行測試,如果問題消失,您就已經找到了問題所在。
我在所有系統上執行低延遲核心已有大約十年的時間,我對它比使用通用核心更滿意。
並檢查你的記憶時鐘;低延遲核心可能會對您的主機板造成更高的電源需求,如果您的主機板或 PSU 供電不夠好,嘗試將記憶體時鐘執行得非常高可能會導致記憶體錯誤,從而導致各種隨機不穩定。嘗試
mprime
在執行其他任務時在後台使用至少 50% 的 RAM 在壓力測試模式下執行 - 如果它檢測到任何錯誤,則您的 RAM 無法正常工作,如果您想要一個不應該執行低延遲或通用核心穩定的系統。通用核心可能對硬體要求不高,您會看到記憶體故障導致的錯誤更少,但請放心,即使使用通用核心,它遲早也會導致問題。