在 WSL2 中無需 root 即可啟動即時調度進程

在 WSL2 中無需 root 即可啟動即時調度進程

從 WSL2 中執行 Ubuntu 20.04 我希望能夠作為普通audio群組成員使用即時調度。最終這是為了傑克。一切都以 root 身份運行,但這並不理想。

我有

$ cat /etc/security/limits.d/audio.conf
# Provided by the jackd package.
#
# Changes to this file will be preserved.
#
# If you want to enable/disable realtime permissions, run
#
#    dpkg-reconfigure -p high jackd

@audio   -  rtprio     95
@audio   -  memlock    unlimited
#@audio   -  nice      -19

使用配置檢查器https://github.com/raboof/realtimeconfigquickscan我發現我無法「使用 chrt 確定進程的優先順序」。因此,為了調試問題,我正在嘗試一些簡單的事情...

對於我的普通用戶,我嘗試

$ chrt -f 80 echo success
chrt: failed to set pid 0's policy: Operation not permitted

但當root我得到

# chrt -f 80 echo success
success

我想知道這是否是由於小組RT安排造成的。我有

$ cat /proc/sys/kernel/sched_rt_period_us
1000000
$ cat /proc/sys/kernel/sched_rt_runtime_us
950000

我認為這是預設值。相同的設定在我在另一台機器上運行的 Ubuntu 18.04 的本機安裝上運作正常。

儘管如此,我看到一些地方建議這樣做

sysctl -w kernel.sched_rt_runtime_us=-1

有效地將其關閉。但這沒有用。

當我第一次開始走這條路時,我並沒有真正期望 JACK 在 WSL2 中工作,但實時調度作為 root 工作的事實讓我希望這是一個配置/權限問題,而不是 WSL2 的限制。接下來我該嘗試什麼?

相關內容