在 WSL2 中无需 root 即可使用实时调度启动进程

在 WSL2 中无需 root 即可使用实时调度启动进程

在 WSL2 中运行 Ubuntu 20.04,我希望能够以普通audio组成员的身份使用实时调度。最终这是为了 JACK。一切都以 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 的限制。我下一步应该尝试什么?

相关内容