微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Windows 上 docker 中的实时优先级 (wsl2)

如何解决Windows 上 docker 中的实时优先级 (wsl2)

我有一个将自己的优先级设置为实时的程序。我需要在 Windows 上的容器内运行它。我在带有 wsl2 的 Win10 中使用 docker 桌面(3.5.1)。除非我将 /proc/sys/kernel/sched_rt_runtime_us 设置为 -1,否则我无法设置实时优先级。我看不到允许 rt 优先级和它们的运行时比率之间的联系。

我使用 chrt 代替我的应用程序进行演示。

在 wsl2 上的 ubunutu(没有 docker):

username@hostname:/mnt/c/WINDOWS/system32$ cat /proc/sys/kernel/sched_rt_runtime_us
950000
username@hostname:/mnt/c/WINDOWS/system32$ chrt -f 50 pwd
chrt: Failed to set pid 0's policy: Operation not permitted
username@hostname:/mnt/c/WINDOWS/system32$ sudo chrt -f 50 pwd
/mnt/c/WINDOWS/system32

按预期工作。

然而在 docker 中:

username@hostname:/mnt/c/WINDOWS/system32$ docker run --rm -it --privileged --ulimit rtprio=-1:-1 debian
root@9d99a87530fa:/# cat /proc/sys/kernel/sched_rt_runtime_us
950000
root@9d99a87530fa:/#  chrt -f 50 pwd
chrt: Failed to set pid 0's policy: Operation not permitted
root@9d99a87530fa:/# echo -1 > /proc/sys/kernel/sched_rt_runtime_us
root@9d99a87530fa:/#  chrt -f 50 pwd
/

它仅适用于设置 sched_rt_runtime_us。这会影响我肯定不想要的主机系统:

root@9d99a87530fa:/# exit
exit
username@hostname:/mnt/c/WINDOWS/system32$ cat /proc/sys/kernel/sched_rt_runtime_us
-1

从 Windows cli 启动容器时,我们有相同的行为。 如果您在本机 Linux(或 VM 中的 linux)上执行相同操作,则无需在容器中设置 sched_rt_runtime_us。为什么?我是否缺少一些 docker 选项?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。