|
|
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
Добрый день, коллеги! Есть достаточно старое приложение для выполнения сложных расчетов по произвольным формулам и исходным данным. Пока расчеты делаются последовательно, в разных базах (их около десятка). Нарисовалась задача выполнять расчеты параллельно. Есть мысль разнести копии приложений по ядрам. Первое ядро оставляем свободным, по остальным ядрам раскидываем копии приложения и пусть работают согласно расписанию. Дать пользователю самостоятельно выбрать ядро не вариант. Сколько на компе будет ядер заранее неизвестно, и сколько копий приложения запущено тоже. И муза с алгоритмом, как их раскидать, никак не прилетает. Как решить эту задачку без музы? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 16:34 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
Забей, операционка это сделает сама. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 16:36 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Да нет же, все в рамках одного ядра пытается выполнить, 1-е ядро забивается, остальные простаивают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 16:37 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
MxSxHxДа нет же, все в рамках одного ядра пытается выполнить, 1-е ядро забивается, остальные простаиваютНе верю (С) Запустите два экземпляра приложения Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. и наблюдайте за загрузкой ядер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 16:41 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, сильная нагрузка будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 16:42 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
MxSxHx> Нарисовалась задача выполнять расчеты параллельно. MxSxHx> Есть мысль разнести копии приложений по ядрам. Будет несколько экземпляров/копий приложения или одно? Если несколько, то ОС сама раскидает и не мешайте ей. Если одно, то изучайте, что такое потоки и как их готовить. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 16:45 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамMxSxHx> Нарисовалась задача выполнять расчеты параллельно. MxSxHx> Есть мысль разнести копии приложений по ядрам. Будет несколько экземпляров/копий приложения или одно? Если несколько, то ОС сама раскидает и не мешайте ей. Если одно, то изучайте, что такое потоки и как их готовить. Несколько копий, но первое ядро не хотелось бы нагружать. Dimitry Sibiryakov да, я был не прав ) спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 16:55 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
MxSxHxпервое ядро не хотелось бы нагружать. Системе сугубо всё равно на каком ядре работать. Если очень хотите освоить что-то новое, читайте про SetProcessAffinityMask() Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 17:01 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЕсли очень хотите освоить что-то новое, читайте про SetProcessAffinityMask() А если не хотите, то обойдитесь запускалкой в .cmd через параметр Affinity в Start . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2019, 09:35 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
tunknown, благодарю, тоже хороший способ, попробую. пока по варианту от Дмитрия примерно так сделал. Не тестил плотно, но вроде фурычит Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2019, 10:23 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovчитайте про SetProcessAffinityMask()А зачем? Если ОС перебрасывает с ядра на ядро, значит она что-то знает. А если ядро, к которому привязались, будет занято? Пусть ОС сама рулит ядрами. Только она владеет всей доступной информацией об окружающей среде ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2019, 14:35 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Dimitry Sibiryakovчитайте про SetProcessAffinityMask()А зачем? Если ОС перебрасывает с ядра на ядро, значит она что-то знает. А если ядро, к которому привязались, будет занято? Пусть ОС сама рулит ядрами. Только она владеет всей доступной информацией об окружающей среде Поддерживаю. Экспериментировал с SetProcessAffinityMask. До одного места. Если и держит установленное ядро, то весьма непродолжительно. А потом ОС переиначивает всё по-своему... Тут нужно какое-то другое решение (если оно вообще в Windows возможно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2019, 14:54 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
d7i, Оно в Windows - не НУЖНО... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2019, 15:18 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
d7iЭкспериментировал с SetProcessAffinityMask. До одного места. Если и держит установленное ядро, то весьма непродолжительно. Не могу подтвердить. Когда писал тестовую тулзу для одной конторы, которая сортирует 100 гб файлы, то потоки до конца работы оставались там, куда я их вешал. Кол-во потоков было = кол-ву ядер. Загрузка всегда 100%. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2019, 15:32 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
wadmand7iЭкспериментировал с SetProcessAffinityMask. До одного места. Если и держит установленное ядро, то весьма непродолжительно. Не могу подтвердить. Когда писал тестовую тулзу для одной конторы, которая сортирует 100 гб файлы, то потоки до конца работы оставались там, куда я их вешал. Кол-во потоков было = кол-ву ядер. Загрузка всегда 100%. При 100% загрузке всех ядер уже нечего распределять... А вы попробуйте нагрузить своей задачей только 2-е или 3-е ядро, а потом запустите ещё парочку серьезных задач. Windows тут же перенагрузит все ядра по-своему... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2019, 16:25 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
wadmanЗагрузка всегда 100%.Как будто она была бы другой, если бы ты отдал привязку на откуп системы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2019, 16:26 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Если ОС перебрасывает с ядра на ядро, значит она что-то знает.Знает она только статистику и, возможно, температуру. Переносит для размазывания нагрузки. Думаю, что при переносе процесса/потока на другое ядро теряется L1-кеш ядра. Если он небольшой, то исполнение на фиксированном ядре не даст большого преимущества. Если на серверном процессоре кеш большой, то, возможно, выигрыш будет. Если affinity на одно ядро задать в TaskMgr, то оно сохраняется. _Vasilisk_А если ядро, к которому привязались, будет занято? Пусть ОС сама рулит ядрами. Только она владеет всей доступной информацией об окружающей средеЭто почти не проблема, если сервер выделен под задачу. Если задач несколько, то придётся положиться на виндовс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2019, 17:27 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
tunknownесли сервер выделен под задачу Что значит "сервер выделен под задачу"? На сервере крутится ОС. Она распределяет на его ресурсы свои задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2019, 20:27 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
SetThreadAffinityMask нужна исключительно для того, чтобы запретить потоку (процессу) работать на определенных ядрах. Иногда это полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2019, 00:37 |
|
||
|
Разделить работу нескольких копий приложения между ядрами
|
|||
|---|---|---|---|
|
#18+
Gatortunknownесли сервер выделен под задачу Что значит "сервер выделен под задачу"?Если сервер выделен, то на нём работает только то, что задано. Если потоками управлять изнутри, то такая программа не подлежит администрированию. Или добавлять в неё эту возможность заранее. GatorНа сервере крутится ОС. Она распределяет на его ресурсы свои задачи.У ОС не должно быть своих задач в пределе. Вынужденно исключая всякую мелочь типа RpcSs, EventLog и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2019, 09:53 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39852889&tid=2039109]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
152ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 494ms |

| 0 / 0 |
