LINUX.ORG.RU

Потеря производительности при многопоточной работе.


0

1

Добрый день. Имеется самописное приложение, где есть пул потоков которые выбирают из стека задачи и выполняют их.

Пул построен на pthread.

При добавлении процессора происходит падение производительности, хотя должен ожидаться линейный(идеально) рост.

Может быть ли это проблема планировщика? Или это же особенность архитектуры( в данном случае intel)?

Заранее спасибо.


Ответ на: комментарий от Dramokl

При работе на нескольких ядрах это не наблюдается.

Походит на проблемы с NUMA.
Доступ к данным соседнего ядра сейчас почти бесплатен. А к соседнему процессору - это намного дольше.

Как проверить.. Навскидку - numaTOP (https://01.org/blogs/yjin15/2013/announcing-numatop) и numad (http://linux.die.net/man/8/numad). К сожалению, с NUMA всего пару раз встречался вживую.

devl547 ★★★★★
()
Последнее исправление: devl547 (всего исправлений: 1)
Ответ на: комментарий от devl547

Спасибо за наводку.

Я так понимаю, для нормализации работы лучше будет привязать стек-задач к каждому узлу, для предотвращения RMA? Или это можно сделать как то проще? Стек блокируется семафором, после обработки результаты анализируются сторонним медленным потоком... в голову приходит что то вроде отложенной синхронизации памяти.

Dramokl
() автор топика

хотя должен ожидаться линейный(идеально) рост

разве архитектура Линукса обеспечивает линейный рост производительности?

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

Линейный рост - это идеальный вариант. Есть потери - но хочется к этому стремится.

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

разве архитектура Линукса обеспечивает линейный рост производительности?

она ему не мешает, но конечно partitioning за тебя делать не будет.

dimon555 ★★★★★
()

Мало написал чего там у тебя. После которого процессора замедляеться рост? Что за архитектура?

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