Приоритеты в реальном времени в docker в Windows (wsl2)

#linux #docker-for-windows #wsl-2 #thread-priority #sched

Вопрос:

У меня есть программа, которая устанавливает свой собственный приоритет в реальном времени. Мне нужно запустить его в контейнере на Windows. Я использую docker desktop (3.5.1) в Win10 с wsl2. Я не могу установить приоритет в реальном времени, если не задам /proc/sys/kernel/sched_rt_runtime_us значение -1. Я не вижу связи, разрешающей приоритеты rt и их соотношение времени выполнения.

Вместо своего приложения я использую chrt для демонстрации.

В убунуту на wsl2 (без докера):

 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
 

Работает, как и ожидалось.

Однако в докере:

 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.
Если вы делаете то же самое в собственном Linux (или linux в виртуальной машине), вам не нужно устанавливать sched_rt_runtime_us в контейнере. Почему? Мне не хватает некоторых опций докера?