| |
| 1.1, pavlinux, 02:01, 14/05/2009 [ответить] [смотреть все]
| +/– | |
Звиняйте, но в исходниках написано
/*
03482 * Restore a single TOC item in parallel with others
03483 *
03484 * this is the procedure run as a thread (Windows) or a
03485 * separate process (everything else).
03486 */
Про cpu_affinity/irq_affinity/cpu_mask там ни слова.
Так что, многозадачность != многопроцессорность
|  | | |
| |
| |
| 3.4, pavlinux, 16:24, 14/05/2009 [^] [ответить] [смотреть все]
| +/– |
>> Про cpu_affinity/irq_affinity/cpu_mask там ни слова.
>> Так что, многозадачность != многопроцессорность
>
>Ваша операционная система сама не в состоянии равномерно распределить нагрузку по процессорам ? как интересно... :)
Процессы в SMP системе - стадо тупых мамонтов - идут равномерно, а не отдельно мелкие детишки, отдельно самцы с 5-метровыми бивнями, дабы случайно не придавили мелких.
К примеру, в последних RealTime патчах, все ядреные процессы работают на 0 CPU,
но остальные, так же, равномерно раскидываются.
Не изучал на предмет динамической балансировки, но по-моему, её в ядре нет.
Как при создании треда/форка/потока присвоился процессор/ядро, так он и не меняется до смерти. /* FIXME */
Есть утиль taskset - но это не динамика. :(
|  | | |
| |
| 4.5, cubite, 18:19, 14/05/2009 [^] [ответить] [смотреть все]
| +/– | |
следует понимать, о linux-ядре идет речь?
Предположим, имеем 2 ядра и 2 процесса, каждый из которых работает на "своем" ядре и пожирает 100% процессорного времени.
Появляется 3-тий процесс, который в равной степени претендует на процессорное время. Т.е. на одном из ядер будем иметь load averages примерно 2.0.
Не верится, что при завершении процесса, который самолично занимает одно ядро, на освободившееся ядро не будет перекинут один из оставшихся процессов.
|  | | |
| |
| 5.6, pavlinux, 21:21, 14/05/2009 [^] [ответить] [смотреть все]
| +/– | |
Чей-та я тебя не пойму, по сему сокращу
Не верится,... что не будет перекинут... .
То есть перекинется?
|  | | |
|
| 4.7, Вовчик, 23:14, 14/05/2009 [^] [ответить] [смотреть все]
| +/– |
Всё это звучит очень хорошо, но какое отношение оно имеет к данной теме?
На многопроцессорной машине не будет прироста производительности при использовании многопоточности/многопроцессности в pg_restore?
|  | | |
| |
| |
| 6.9, pavlinux, 01:24, 15/05/2009 [^] [ответить] [смотреть все]
| +/– |
>Да нет, народ просто выпендривается не понимая что они щас клоуны на
>весь рунет. Спорить про потоки любимая для многих тема, даже если
>они не понимают о каких потоках речь. Таких хлебом не корми,
>дай поспорить что круче-pthread_start или fork безотносительно к задаче.
>
>Для Ъ объясню: тут о потоках данных речь а не о scheduling
>entities ядра.
Ну тогда 20 раз перечитай заголовок -
"Ускорение загрузки дампа PostgreSQL на многоядерных системах"
Прочёл? - Ни слова о многопоточности.
Собственно к чему это я, да к тому, что как фишка ляжет,
так ядро и распределит потоки/процессы, обычно равномерно,
но не уверен что тоже самое будет на системе, которая
дышит под нагрузкой в 64K соединений.
|  | | |
| |
| 7.11, Вовчик, 11:05, 15/05/2009 [^] [ответить] [смотреть все]
| +/– | |
Я перечитал заголовок...
На многоядерной системе при восстановлении в один поток можно упереться в возможности одного ядра/процессора, а при многих потоках/процессах вероятно этого не произойдёт и нагрузка распределится более равномерно. Поправь меня, если я ошибаюсь, или прекрати разводить флейм.
|  | | |
| |
| 8.12, pavlinux, 15:12, 15/05/2009 [^] [ответить] [смотреть все]
| +/– | |
>На многоядерной системе
Все гораздо веселее :)
В ядре есть так называемые "Области планирования" - логическое множество процессоров.
Например на 4-х процессорной системе - это множество с двумя подмножествами, по два CPU в каждом.
С ними работает функция schedule() далее schedule_tick(), которая вызывает rebalance_tick()
та смотрит флаги SCHED_IDLE или NOT_IDLE и на основании их вызывает load_balance();
Вывод: Планировщику на...ать на процессы, он присвоит процессу первый свободный CPU
P.S. Если процесс не запускать со специально сформированым флагом CPU_MASK,
который явно ограничит область планирования для процесса, вплоть до одного CPU.
P.P.S.
1. Утиль pg_restore с флагом -j n - создаст n процессов для работы с базой.
2. Эти процессы равномерно распределятся относительно ОБЩЕЙ нагрузки системы
3. Но не обязательно, распределятся, раздельно на каждый процессор.
|  | | |
| |
| 9.13, Вовчик, 15:22, 15/05/2009 [^] [ответить] [смотреть все]
| +/– |
Упоминание о linux я нашёл только в твоих сообщениях. Есть другие ядра...
Почитай статью, она не о планировщике.
Все твои твои сообщения в этом треде выглядят как "я видел исходники, но не понимаю о чем все здесь пишут".
|  | | |
| 9.14, Одмин, 15:28, 15/05/2009 [^] [ответить] [смотреть все]
| +/– | |
Если нет свободных ядер то облом в любом случае. Даже ежу в этом топике ясно что ускорение будет только если есть свободные ресурсы сразу на нескольких ядрах.
Ну и что что первый свободный присвоит. Главное что свободный.
|  | | |
|
|
|
|
|
|
|
|
|
|