|
Как в Linux убедиться что многопоточная программа равномерно загружает ядра
|
|||
---|---|---|---|
#18+
Здравствуйте! У меня есть программа, которая может обрабатывать данные в несколько потоков (threads), что по заявлению ее разработчиков существенно улучшает скорость получения результатов при наличии много(ядерной)процессорной среды (в программе реализован хорошо распараллеливаемый алгоритм). Но как я могу убедиться, что она равномерно загружает ядра? Программа работает в ОС Linux. При исполнении top видно, что она хорошо загружает CPU, но как понять, что программа равномерно загружает все доступные мне ядра? [img=https://www.sql.ru/images/Безымянный.png] ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2019, 20:20 |
|
Как в Linux убедиться что многопоточная программа равномерно загружает ядра
|
|||
---|---|---|---|
#18+
Картинка с результатом вывода top: https://ibb.co/wrPbQmS ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2019, 20:21 |
|
Как в Linux убедиться что многопоточная программа равномерно загружает ядра
|
|||
---|---|---|---|
#18+
PierreVanStulov, это вам надо в тему про Unix, при чем тут программирование, вы же не пишете программу. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2019, 20:24 |
|
Как в Linux убедиться что многопоточная программа равномерно загружает ядра
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2019, 20:27 |
|
Как в Linux убедиться что многопоточная программа равномерно загружает ядра
|
|||
---|---|---|---|
#18+
Насколько я понимаю, htop также выдает агрегированную информацию по загрузке ядер всеми процессами. А можно как-нибудь посмотреть, как грузит ядра отдельный процесс? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2019, 20:31 |
|
Как в Linux убедиться что многопоточная программа равномерно загружает ядра
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5.
Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2019, 20:38 |
|
Как в Linux убедиться что многопоточная программа равномерно загружает ядра
|
|||
---|---|---|---|
#18+
PierreVanStulov, Мне кажется что главная задача все таки обеспечить перформанс решаемой задачи в целом. А равномерная утилизация ядер - задача вторичная. Более того. Утилизация ресурсов и эффективность не всегда связаны линейно. Модератор: Тема перенесена из форума "Программирование". ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2019, 20:48 |
|
Как в Linux убедиться что многопоточная программа равномерно загружает ядра
|
|||
---|---|---|---|
#18+
Надо добавить, что во-первых несколько потоков таки могут физически исполняться параллельно на одном ядре с технологией hyper threading, а во-вторых многопоточность может дать профит на одном ядре за счет распараллеливания простоев - когда много потоков одновременно запрашивают внешние ресурсы. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2019, 20:57 |
|
Как в Linux убедиться что многопоточная программа равномерно загружает ядра
|
|||
---|---|---|---|
#18+
Лысый дядька, проблема в том, что Код: powershell 1.
оставляет только один процесс, но статистика по загрузке процессоров %Cpu0, %Cpu1, ... остается суммарной для всех процессов системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 18:51 |
|
Как в Linux убедиться что многопоточная программа равномерно загружает ядра
|
|||
---|---|---|---|
#18+
maytonPierreVanStulov, Мне кажется что главная задача все таки обеспечить перформанс решаемой задачи в целом. А равномерная утилизация ядер - задача вторичная. Более того. Утилизация ресурсов и эффективность не всегда связаны линейно. Модератор: Тема перенесена из форума "Программирование". Да, это ясно, но мне всетаки хотелось как-нибудь понять, какой эффект дает распараллеливание. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 18:53 |
|
Как в Linux убедиться что многопоточная программа равномерно загружает ядра
|
|||
---|---|---|---|
#18+
PierreVanStulovmaytonPierreVanStulov, Мне кажется что главная задача все таки обеспечить перформанс решаемой задачи в целом. А равномерная утилизация ядер - задача вторичная. Более того. Утилизация ресурсов и эффективность не всегда связаны линейно. Модератор: Тема перенесена из форума "Программирование". Да, это ясно, но мне всетаки хотелось как-нибудь понять, какой эффект дает распараллеливание. На это может ответить разработчик который это приложение сделал параллельным. Всё остальное будет нашими домыслами. Кстати почитай про закон Амдала. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 18:56 |
|
Как в Linux убедиться что многопоточная программа равномерно загружает ядра
|
|||
---|---|---|---|
#18+
PierreVanStulovмне всетаки хотелось как-нибудь понять, какой эффект дает распараллеливание. Так замеряй целевую метрику: время обработки данных. Можешь выделять ей последовательно увеличивающееся количество ядер через taskset и смотреть насколько это время уменьшится. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 19:15 |
|
Как в Linux убедиться что многопоточная программа равномерно загружает ядра
|
|||
---|---|---|---|
#18+
pidstat -p <PID> -t покажет на каких ядрах запланировано исполнение потоков внутри процесса PID Либо из первоисточников с собственным парсингом (смотреть в секцию runnable tasks): cat /proc/sched_debug ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 17:56 |
|
Как в Linux убедиться что многопоточная программа равномерно загружает ядра
|
|||
---|---|---|---|
#18+
PierreVanStulov, Можно запускать программу как time programname. В конце time покажет usertime and systemtime. Это косвенно говорит, насколько все ускорилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2019, 15:52 |
|
Как в Linux убедиться что многопоточная программа равномерно загружает ядра
|
|||
---|---|---|---|
#18+
Кстати, я смотрю там уже 4GB swap используется. Это зачем? Может освободить программе побольше памяти, а то она может именно из-за этого тормозить. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2019, 15:55 |
|
Как в Linux убедиться что многопоточная программа равномерно загружает ядра
|
|||
---|---|---|---|
#18+
kernelpanicpidstat -p <PID> -t покажет на каких ядрах запланировано исполнение потоков внутри процесса PID Либо из первоисточников с собственным парсингом (смотреть в секцию runnable tasks): cat /proc/sched_debug Спасибо! Вот это уже близко к тому, что я хотел. transpose Кстати, я смотрю там уже 4GB swap используется. Это зачем? Может освободить программе побольше памяти, а то она может именно из-за этого тормозить. С этим еще нужно разбираться. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 12:26 |
|
Как в Linux убедиться что многопоточная программа равномерно загружает ядра
|
|||
---|---|---|---|
#18+
PierreVanStulovпроблема в том, что Код: powershell 1.
оставляет только один процесс, но статистика по загрузке процессоров %Cpu0, %Cpu1, ... остается суммарной для всех процессов системы.Shift+h нажать в top нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 14:23 |
|
|
start [/forum/topic.php?fid=25&msg=39772485&tid=1481196]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 266ms |
total: | 421ms |
0 / 0 |