LINUX.ORG.RU
решено ФорумAdmin

Правильно разграничить потребление CPU

 ,


0

1

День добрый, имеется проблема (или фича) с докером, не могу разобраться самостоятельно.

Создаю несколько контейнеров из одного и того же образа, руководствуюсь документацией, в особенности этим абзацем:

For example, consider three containers, one has a cpu-share of 1024 and two others have a cpu-share setting of 512. When processes in all three containers attempt to use 100% of CPU, the first container would receive 50% of the total CPU time. If you add a fouth container with a cpu-share of 1024, the first container only gets 33% of the CPU. The remaining containers receive 16.5%, 16.5% and 33% of the CPU.

Произвожу запуск так:

docker run -ti -m 768m --cpu-shares=1024 centos:final /bin/bash
У двух контейнеров cpu-shares=1024, у двух 512. Затем в каждом из 4 контейнеров запускаю /usr/sbin/sshd -D, потом на хосте запускаю выполнение MPI-приложения:
mpirun -np 4 --host root@172.17.0.24,root@172.17.0.25,root@172.17.0.26,root@172.17.0.27 /root/hpcc-1.4.3/hpcc
Однако в результате 4 ядра загружены по 100%, каждый контейнер ест по 100% CPU, а не совсем так, как написано в документации.

--cpu-shares=0 CPU shares (relative weight)
-np 4

Я, конечно, просто мимокрокодил, но ты чего хотел? 66%, 66%, 133% и 133%? По-моему на четырех потоках и четырех ядрах все оптимальнее некуда. Что конкретно хочется испортить?

t184256 ★★★★★
()

руководствуюсь документацией, в особенности этим абзацем:

а следующее предложение прочитать уже лимит на чтение на сегодня закончился? надо уже писать рваться?

On a multi-core system, the shares of CPU time are distributed over all CPU cores. Even if a container is limited to less than 100% of CPU time, it can use 100% of each individual CPU core.

anonymous
()
Ответ на: комментарий от anonymous

ну и да, если тебе надо, чтобы два контейнера занимали по ядру, а другие два поровну делили еще одно ядро, то юзай --cpuset=

1 и 2 для первых, 3 для обоих последних, 0 лучше не занимать и оставить системе, по крайней мере не на 100%

anonymous
()
Ответ на: комментарий от t184256

Типа того, но там, увы, есть фраза

Even if a container is limited to less than 100% of CPU time, it can use 100% of each individual CPU core.

KroArtem ★★
() автор топика
Ответ на: комментарий от anonymous

Спасибо тебе, анонимус! Действительно, видел упоминание про cpuset на каком-то стороннем сайте, но в документации про него ни слова.

Два чая этому господину!

KroArtem ★★
() автор топика
Ответ на: комментарий от KroArtem

видел упоминание про cpuset на каком-то стороннем сайте, но в документации про него ни слова.

а это может быть плохим знаком — возможно, они выпиливают эту фичу до переделки управления cgroups в ядре, советую свериться с ченджлогом

anonymous
()
Ответ на: комментарий от anonymous

Ок, посмотрю, но насколько понял, можно же использовать штатную cpuset для линукса. Наверняка их опция с аргументами - это просто обертка над оригинальным cpuset.

KroArtem ★★
() автор топика
Ответ на: комментарий от anonymous

Имею в виду, если они в докере временно что-то поломают, можно будет порулить низкоуровнево.

KroArtem ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.