LINUX.ORG.RU

Вопрос специалистам по SMP и многопоточности.


0

0

Сразу прошу прощения за венду.

Возник спор на основе статьи http://www.winblog.ru/2007/04/20/20040704.html , в частности, о картинках справа. Т.е. до хотфикса single-threaded программа как и надо(вроде бы) занимала на 100% один процессор. А после установки хотфикса - заняты оба процессора, но каждый - на 50%. Т.е. после хотфикса система занята постоянным переключением одного приложения между процессорами? Это разве оптимально???

P.S. Помнится, тут было обсуждение насчёт OpenBSD примерно в эту же тему. http://www.linux.org.ru/view-message.jsp?msgid=2017062

Там вопрос про 3 процесса на 2 процах, а тут вопрос про один процесс на 2-х процах.

Deleted

> P.S. Помнится, тут было обсуждение насчёт OpenBSD примерно в эту же тему. http://www.linux.org.ru/view-message.jsp?msgid=2017062

там обсуждение было про линукс, ему противопоставлялся нетбсд.

> а тут вопрос про один процесс на 2-х процах.

и в линуксе и в нетбсд загружается на 100% один проц. В принципе есть смысл периодически перекидывать с процессора на процессор чтобы прогрев яичницы был равномерный:)

dilmah ★★★★★
()

Вот и ответ на вопрос, почему каждая винда медленнее предыдущей - непрестанная забота MS об эффективности 8-)

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

Нет. Это дополнительное обновление, которое не ставится через windowsupdate, только руками.

Deleted
()

Шшедевр!

1:"По-видимому, Windows XP2 не распознала автоматически, на каком процессоре она устанавливается, на двухядерном или нет, ..." По картинке _отчетливо_ видно, что Винда распознала-таки, что она установлена на двухкорном компе, иначе все тупо варилось бы на одной корке.

2: Как видно по циферакм (если хорошенько присмотреться), "неоптимизированный" вариант нагрузил систему на 94%, а "оптимизированный" -- на 93%. Вот вам "оптимизация" от M$ в действии! Действительно, раз речь идет о "СИММЕТРИЧНОМ мультипроцессинге", то и "оптимизация" должна состоять в том, чтобы графики загрузки корок выглядели СИММЕТРИЧНО... Железная логика! На любого начальника подействует.

Продолжение следует.

Die-Hard ★★★★★
()
Ответ на: комментарий от dilmah

> ... В принципе есть смысл периодически перекидывать с процессора на процессор чтобы прогрев яичницы был равномерный:)

Спорный вопрос...

Я не эксперт тут, но почему-то мне кажется, что загруженная на 50% корка будет греться не меньше, чем загруженная на 100%.

Вцелом же, мне кажется почти очевидным, что суммарное тепловыделение двух процессоров, загруженных на 50%, значительно превзойдет тепловыделение одного процессора, загруженного на 100%.

Die-Hard ★★★★★
()

Вообще говоря, надо различать SMP и SMP.

Если речь идет о HPC (короче, когда надо посчитать побыстрее -- для чего копьютер и был предназначен поначалу), то во главу угла, очевидно, ставится максимальная производительность -- при этом, разумеется, ни о каком перекидывании с процессора на процессор и речи быть не может. Это _очень_ дорого: и память обычно весьма аффинна, и кэши надо каждый раз чистить.

Если мы говорим про сервер, то возникает т.н. проблема "load balancing", когда может случиться так, что несколько процессов (тредов) продолжают бежать на одном проце, а на втором все уже закончилось, а новых задач пока нет. Тогда, естественно, помогает миграция процессов (ок, тредов) на незанятый проц с целью его занять. Именно так поступает умолчательное ядро Линукса. Главна цель при этом -- обеспечить, чтобы ни один процессор (ядро) не простаивал.

Наконец, на десктопе логично стремиться к "воистинно справедливому" распределению ресурсов, чтобы у крутого "хардгеймера" квака (или во что они там сейчас режуться) не тормозила, пока он в аське слушает песенку, присланную склоняемой им к сексу "пелоткой". Действительно, ему плевать, что общая производительность системы немного падает -- главное, чтобы эта производительность падала равномерно, и он этого не замечал. Именно на это и нацелена обсуждаемая оптимизация. Это бол-мень работает (в обсуждаемом контексте) вплоть до 4 ядер; может, до 8 (хотя лично я и сомневаюсь). Дальше тормоза превысят любой выигрыш -- но больше 8 ядер на десктопы пока никто не взгромождал.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> Вцелом же, мне кажется почти очевидным, что суммарное тепловыделение двух процессоров, загруженных на 50%, значительно превзойдет тепловыделение одного процессора, загруженного на 100%.

Синергитические КорДуо? :-) Про симметричные графики сильно...

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

> Можно ещё почитать http://support.microsoft.com/kb/896256

Да, кстати -- пару мес-цев назад один паренек - виндузятник мне жаловался, что ЭСПЫ2-Хрюша ухитрялась сжевать весь второй процессор его ноутбука пауэрменеджером, и его (пауэрменеджер) приходилось вырубать руками.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> Я не эксперт тут, но почему-то мне кажется, что загруженная на 50% корка будет греться не меньше, чем загруженная на 100%.

Нет, это неправда.

а) исполнительные блоки греются только когда на них исполняются операции; процессор, исполняющий "while(true);" греется меньше, чем "думающий" что-то на FPU.

б) если загрузка неполная, то некоторое время процессор будет проводить в halt-е; а еще он может понизить тактовую частоту.

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

anonymous (*) (31.07.2007 21:31:42):

>> Я не эксперт тут, но почему-то мне кажется, что загруженная на 50% корка будет греться не меньше, чем загруженная на 100%.

>Нет, это неправда.

Че, прямо так конкретно? Я ж даже тип процессора не указал...

Ручаюсь за Итаниумы: им -- все равно, что они делают. У меня их много -- греются! АМД -- да, в зависимости... Альфы есть -- тоже на холостом ходу в сковородку играют!

> а) исполнительные блоки греются только когда на них исполняются операции; процессор, исполняющий "while(true);" греется меньше, чем "думающий" что-то на FPU.

Возможно, хотя и верится с тудом. Повторяю, я -- не эксперт.

> б) если загрузка неполная, то некоторое время процессор будет проводить в halt-е; а еще он может понизить тактовую частоту.

Не может: речь шла про то, что шедулер перекидывает процесс с корки на корку.

Еще раз: я этим специально не занимался, всего лишь общие размышления. Пока твои рассуждения меня не убедили.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

Вдогонку:

Конечно, если есть ссылка на личный опыт -- возражения снимаются.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> Ручаюсь за Итаниумы: им -- все равно, что они делают. У меня их много -- греются! АМД -- да, в зависимости... Альфы есть -- тоже на холостом ходу в сковородку играют!

AFAIK технологии по которым делаются последние процессоры предполагают, что энергия потребляется по большей части в моменты переключения ключей. Если учесть, что в состоянии бездействия ОС обычно усыпляет процессор чем-то типа HLT, то непонятно откуда энергопотребление без нагрузки.

Хотя может быть то, что ты понимаешь под "греется" - это на самом деле лютый мороз? ;)

Померяй температуру без нагрузки, и с полной нагрузкой на все блоки процессора. Разница обязана быть.

execve
()
Ответ на: комментарий от Die-Hard

> Еще раз: я этим специально не занимался, всего лишь общие размышления. Пока твои рассуждения меня не убедили.

Примерно то же, но вот тебе другие "общие размышления"

Ничего не могу сказать про итаники, но любой процессор, сделанный на CMOS (и подобных) технологии, обязан так работать. Наибольшее потребление энергии происходит, как уже было сказано, при переключении ключей; а пока какой-то исполнительный блок ничего не исполняет - он практически не греется.

Да, разница между нагревом постым циклом и числодроблением невелика (потому что большАя, если не бОльшая часть работы совремменного x86 - это вычитывание инструкций из кеша, декодирование во внутрение RISC-команды, передача команда-результатов по длиннющему конвейру и т.п.), но она есть и измерима.

Существуют даже тестовые программы (burnk8), которые создают максимальную термическую нагрузку. Я проверял - разница между ними и вращением while(true) довольно значительная.

Ну и семейство Core Duo, вроде, умеет отключать/замедлять тактирование отдельных блоков.

anonymous
()

Когда процесс бегает по процессорам, производительность падает, ибо всё время обнуляется кэш.

> Это разве оптимально???

Скорее наоборот

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

> Наибольшее потребление энергии происходит, как уже было сказано, при переключении ключей;

Как раз по этой логике двухкорковый процессоор, перекидывающий тред с корки на корку, должен греться сильнее, поскольку идет постоянная инвалидация L2 кыша.

Насчет Итаников и Альф -- я наюлюдал за интегральным тепловыделением. Совершенно не обращал внимание на температуры процов... Просто наблюдение такое: в одной комнате стоят АМД серваки, Альтиксы и 8-процовая Альфа. Кривая температуры (в комнате) довольно лихо отслеживает нагрузку АМД, но совершенно не чувствительна к нагрузке Альфы и Итаников.

Вечером посмотрю на температуру, у меня как раз на одном Альтиксе несколько процессоров освободятся.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

>Как раз по этой логике двухкорковый процессоор, перекидывающий тред с корки на корку, должен греться сильнее, поскольку идет постоянная инвалидация L2 кыша.

Core [12] Duo имеют общий кеш L2 для ядер -- ничего не инвалидируется. TLB в случае с одним процессом можно и не чистить.

Остается работа планировщика по загрузке регистров и обновления статистики, что весьма дешево, учитывая что все это не покидает процессор и работает из кеша.

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

> Core [12] Duo имеют общий кеш L2 для ядер ...

Да, да; я и забыл... Ок, L1 по определению разделен по данным -- иные возражения против этой логики? L1 еще круче инвалидируется!

> TLB в случае с одним процессом можно и не чистить.

8-/? В случае, если две корки одного проца гоняют СОВЕРШЕННО РАЗЛИЧНЫЕ процессы -- как обойтись без чистки TLB? (к нашей ситуации этот вопрос не относится).

Не, я совершенно не прикалываюсь, мне действительно ответы интересны...

> Остается работа планировщика по загрузке регистров и обновления статистики, что весьма дешево, учитывая что все это не покидает процессор и работает из кеша.

Мы, однако, про ТЕМПЕРАТУРУ говорили! Мое утверждение (безосновательное, каюсь) -- две корки одного проца, загруженные вполовину одним процессом, по определению будут греться ощутимо больше, чем одна со 100% нагрузкой.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> Вечером посмотрю на температуру, у меня как раз на одном Альтиксе несколько процессоров освободятся.

Извиняюсь, сегодня не в состоянии... Недавно систему без меня поднимали, и забыли консоль включить, наварнерное -- я не могу на L2 контроллер зайти. Тут сейчас конференция мощная идет, каждый день банкеты... Обещаю результаты завтра.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

Посмотрел.

Итак, Альтих, 32 Итаника. Сейчас под нагрузкой 14 процов, остальные просто спят.

Температура процов от 55 до 63 градусов. Нагруженный проц чуть теплее в среднем, но не шибко.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> Итак, Альтих, 32 Итаника. Сейчас под нагрузкой 14 процов, остальные просто спят.

> Температура процов от 55 до 63 градусов. Нагруженный проц чуть теплее в среднем, но не шибко.

А физический размер сервера какой? Если это что-то типа 5..8 юнитов - то он практически равномерно прогрет изнутри...

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

> А физический размер сервера какой? Если это что-то типа 5..8 юнитов - то он практически равномерно прогрет изнутри...

Altix 3700 -- это не кластер, а такой 40юнитный шкаф, в который блоки напиханы. Процессоры сидят в 3U C-бриках.

Температуру я смотрел прямо с процессора; в том же ящике (C-brick'е) есть еще один термометр (на питании), они около 24 показывают.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> Altix 3700 -- это не кластер, а такой 40юнитный шкаф, в который блоки напиханы. Процессоры сидят в 3U C-бриках.

> Температуру я смотрел прямо с процессора; в том же ящике (C-brick'е) есть еще один термометр (на питании), они около 24 показывают.

А, я его представлял себе более компактным (ну, ээ, blade-системы на x84 сейчас помещают по 14 камней (т.е. до 56 ядей на данный момент) в 4-5 юнитов. Правда, оно даже не греется, а ближе к "плавится" - но это дело десятое ;-)

А если проц греется на холостом ходу - ну, значит, вот так хреново они итаниум сделали. Правильно, значит, что его никто не покупает - в трубу вылетишь на кондиционировании ;-) (и просто потребляемом электричестве - в Калифорнии, говорят, цены на оное ни разу не московские).

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