LINUX.ORG.RU
ФорумAdmin

Мультипоточность и мультипроцессорность

 


0

1

Есть ubuntu 19.04, под ней крутится сервер с 64 процессорными ядрами. Есть написанная на CPP приблуда, которая рулит некими 20 девайсами, и она по воле программистов запускается в 20 копиях по числу девайсов.

Каждая из этих 20 копий порождает 64 pid по числу ядер, что увеличивает накладные расходы системы на переключение ядер между всей этой кучей процессов.

Вопрос - можно ли как-то со стороны системы, не напрягая разрабов приблуды, ограничить количество ядер на каждую копию, допустим, четырьмя или пятью без жесткой привязки конкретного PID к конкретному ядру? В идеале, где-то указать, что программа xyz не может получить от системы больше n ядер.



Последнее исправление: gaidamak (всего исправлений: 1)

man cpulimit

-c, --cpu
specify the number of CPU cores available. Usually this is detected for us.

Не оно?

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

На вскидку не оно. Задача - не ограничить использование ресурсов, а более оптимально распределять их. Запускаются 20 копий программы xuz от одного юзера. Задача, чтобы каждая копия не создавала 64 PID и не кушала маленький кусок в каждом из 64 ядер, а чтобы более плотно юзала 2-3-4 ядра.

Если ulimit и/или cgroups такое позволяют, хотелось бы получить более точную наводку ))

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

Можно настроить LXC и запустать 20 копий приблуд через lxc-execute.

DELIRIUM ☆☆☆☆☆
()

Каждая из этих 20 копий порождает 64 pid по числу ядер

Задача, чтобы каждая копия не создавала 64 PID

Ключевой вопрос: как именно оно определяет, что ядер именно 64? Если sched_getaffinity + CPU_COUNT, то кривым, но надёжным решением будет таки привязать процессы к конкретным ядрам. Если считает вхождения ^processor *: \d+$ в /proc/cpuinfo, то хорошего решения нет вообще.

anonymous
()

Как сделать многопоточную программу однопоточной. Логика программы в многоядерной-многопоточной среде проще настраивается в программе. Но также зависит от ядра. Можно ради эксперимента попробовать FreeBSD и DragonflyBSD, умеющие в мпогопоточность по модели отличной от линуксовой. Или к разработчикам обращаться.

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