Как настроить планировщик linux для параллельных вычислений?

Я не уверен, что смогу понять вашу логику, но это

awk '/\.design$/ {sub("/[^/]*$", "")} 1 ' file
build/create_changes.sh
build/create_changes.sh-meta.xml
src/aura/camping
src/aura/camping/camping.design-meta.xml

даст желаемый результат...

0
03.01.2021, 17:50
1 ответ

Я не уверен, что 1 :1 модель потоков гарантирована в java. Это означает, что поток Java может представлять или не представлять поток ОС. Вполне может быть, что несколько потоков Java управляются средой выполнения Java -и представляются ОС как меньшее количество потоков. Это действительно зависит от реализации. Я бы рекомендовал язык более низкого -уровня (C или ржавчину ), чтобы быть уверенным в соотношении 1 :1.

Поскольку для вас важно разделение времени, я также рекомендую выбрать приоритет реального времени с помощью setpriority(), что дает вам доступ к некоторым интересным политикам планирования. Если вы хотите избежать разделения времени -, используйте политику SCHED_FIFO. Это гарантирует, что поток не будет прерван до тех пор, пока он не будет завершен, если только поток с более высоким приоритетом не поставлен в очередь. Если все потоки 5k имеют одинаковый приоритет, это действительно будет первое -в -первое -решение с минимальным переключением контекста. Подробности см. в sched(7).

Ваши потоки не будут прерываться до тех пор, пока они не закончатся или не вызовутread()для FD, представляющего мьютекс, или какого-либо другого файла, представляющего, когда взаимодействие между потоками -будет готово для чтения. Именно в этот момент ваш поток будет заблокирован, и у другого потока появится возможность запуститься.

Поэтому я думаю, что ваша идея использовать 5 000 потоков и просто ставить их в очередь — хорошая идея.

Одна ловушка идет с ядром -rt.Это обеспечивает упреждающее -упреждающее планирование, которое повышает точность времени пробуждения потоков за счет производительности. (Очереди ЦП очищаются заранее ). С таким вопросом низкого уровня -я предполагаю, что вы пытаетесь максимизировать производительность, поэтому это не сработает для вас.

0
18.03.2021, 22:38

Теги

Похожие вопросы