Hyper-Threading

Как создать сервер оптимальной конфигурации.

Модераторы: Trinity admin`s, Free-lance moderator`s

[RAF]TAHKuCT
Advanced member
Сообщения: 138
Зарегистрирован: 19 окт 2002, 15:49
Откуда: г. Волжский, Волгоградская область
Контактная информация:

Сообщение [RAF]TAHKuCT » 09 дек 2002, 21:04

Однако на двухпроцессорной системе SCB2 была таже ситуация - при запуске одного CPUBURN система рапортовала о 50% загрузке камней, при двух CPUBURN 100%

Аватара пользователя
a_shats
Advanced member
Сообщения: 5010
Зарегистрирован: 27 авг 2002, 10:55
Откуда: Москва
Контактная информация:

Сообщение a_shats » 10 дек 2002, 11:09

Одно приложение с одним активным тредом никогда не загрузит 1 процессор более, чем на 100%. Поскольку все в нем выполняется последовательно (не параллелится), и W2K пытается выровнять нагрузку на процессоры, то и выходит - (n-число процессоров) загрузка 100/n %.

Аватара пользователя
Курдиков Сергей
Advanced member
Сообщения: 199
Зарегистрирован: 27 авг 2002, 14:35
Контактная информация:

Сообщение Курдиков Сергей » 10 дек 2002, 17:37

Уважаемый народ. :)

Вот вам конкретные результаты.
Платформа: P4DSE, 2x2.4Ghz, 1GB DDR и т.д.
Софтина: Windows XP + SP1 + 3dMax5.

Взял стандартно-поставляемую анимацию в 280 кадров и прогнал её в разрешении 800x600 по два раза в каждом режиме (для точности и для статистики).

Результаты:
HT on: Rendering time 0:43min
HT off: Rendering time 0:40min

Как видим, дифференс в 7 процентов. :shock:
Делаем выводы. :wink:

Аватара пользователя
a_shats
Advanced member
Сообщения: 5010
Зарегистрирован: 27 авг 2002, 10:55
Откуда: Москва
Контактная информация:

Сообщение a_shats » 10 дек 2002, 18:09

Hemul
Хорошо. Вы установили факт, что на тяжелых счетных задачах с включенной НТ даже и проиграть в производительности можно. Но - имхо, ничего удивительного. Кстати: 3DMax умеет использовать несколько процессоров ? По-любому это - тяжелая счетная задача. Дык ведь никто и не обещал вроде два ядра Р4 на одном чипе ? ;)
Ых... на чем бы показать...
Проще всего - как я смотрел: база 1С MSSQL. Или - что-нибудь еще, что обычно делают на сервере приложений(3DStudio rendering farm не предлагать ;) ) . В общем, имхо, от НТ выигрыш получается в такой ситуации: куча активных задач или задача с кучей активных нитей, при этом средняя нагрузка на все процессоры не превышает 70-80% (т.е. помимо "голого" счета идет еще и обмен с винтами). В ситуациях, когда нагрузка на все процессоры 100%, выигрыша не будет, и - возможен даже небольшой проигрыш.
Здесь была ссылка где-то на статью про НТ на iХBT.

Аватара пользователя
CyberDrake
free-lance moderator
Сообщения: 338
Зарегистрирован: 23 авг 2002, 10:39
Откуда: Санкт-Петербург
Контактная информация:

Сообщение CyberDrake » 11 дек 2002, 16:52

Немного о HyperThreading
информация взята непосредственно отсюда:
http://www.microsoft.com/hwdev/platform ... indows.asp

1. ОС, выпущенные до появления HT, воспринимают логический процессор как физический, со всеми вытекающими отсюда последствиями по лицензированию.

2. Windows 2000, включая все сервиспаки, не поддерживает технологию HT. Соответственно:

Windows 2000 Version Maximum Processor Limit
Windows 2000 Professional 2
Windows 2000 Standard Server 4
Windows 2000 Advanced Server 8
Windows 2000 Datacenter Server 32

Что может случиться при нераспознавании HT ОС:
Порядок инициализации логических процессоров
Physical Processor 1 2
Logical Processor 1 3 2 4 - все замечательно, нагрузка распараллеливается по двум физическим процессорам
Logical Processor 1 2 3 4 - физический процессор 2 будет простаивать

4. Windows XP и .NET технологию HT поддерживает, соответственно

Windows Version Max Physical Procs Max Logical Procs
Windows XP Home Edition 1 2
Windows XP Professional 2 4
Windows .NET Standard Server 4 8
Windows .NET Enterprise Server 8 16
Windows .NET Datacenter Server 32 32

Эти ОС поддерживают HT, а конкретно следующие технологии
1. HT-aware thread sheduling - разделение нитей (трэдов) по логическим процессорам

2. Aggressive HALT of processors in the idle loop - Принудительный останов выполнения iddle цикла (очевидно операции "NOP") - один из логических процессоров вовсю трудится, а второй "отдыхает", выполняя в цикле "NOP", и тем самым загружая ресурс общего с работающим собратом физического процессора. Дабы такого не случалось эта фича и нужна.
Эта возможность поддерживается и на уровне ядра Windows 2000.

3. Using the YIELD instructions to avoid spinlock contention - Использование "YIELD" инструкций для предотвращения блокирования разделяемых ресурсов физического процессора. При активной работе обоих логических процессоров, один может заблокировать под себя разделяемые ресурсы, и его собрат будет простаивать. Дабы этого не произошло, используется инструкция "YIELD" (аналогичная "PAUSE"), приостанавливающая работу логического процессора на 50 циклов.
Эта возможность поддерживается и на уровне ядра Windows 2000.

Аватара пользователя
a_shats
Advanced member
Сообщения: 5010
Зарегистрирован: 27 авг 2002, 10:55
Откуда: Москва
Контактная информация:

Сообщение a_shats » 11 дек 2002, 17:27

И мааааленький комментарий ;) :
1. Вот-вот, обсуждалось уже, что для 8-way с HT, если выбирать W2K, придется добывать Datacenter.
2. Про простой второго физического процессора - не понял...
По НТ, п.2: выполняется именно инструкция HALT (останов процессора (исп. устройств), процессор выходит из него по прерыванию, насколько я помню х86 ассемблер ;) ) NOP(или WAIT(проверка на наличие прерывания)? не помню точно) в пустом цикле - этим 9х/МЕ грешили, отчего загрузка процессора вне зависимости от полезной нагрузки всегда была 100%.
Да, и еще - насчет НТ-aware thread sheduling: что бы это такое могло быть ? W2K и так, по возможности, разбрасывает активные треды на разные процессоры.

Аватара пользователя
CyberDrake
free-lance moderator
Сообщения: 338
Зарегистрирован: 23 авг 2002, 10:39
Откуда: Санкт-Петербург
Контактная информация:

Сообщение CyberDrake » 11 дек 2002, 18:31

для a_shats
Про простой второго физического процессора - не понял...
Здесь важен порядок инициализации логических процессоров. Если они инициализируются в порядке
Первый физический процессор: логические процессоры 1 и 2,
Второй физический процессор: логические процессоры 3 и 4,
то при загрузки процессоров последовательно по номерам логических процессоров привыполнении двух трэдов второй процессор будет простаивать.
При порядке инициализации
Первый физический процессор: логические процессоры 1 и 3,
Второй физический процессор: логические процессоры 2и 4,
все будет работать нормально.
Да, и еще - насчет НТ-aware thread sheduling: что бы это такое могло быть ? W2K и так, по возможности, разбрасывает активные треды на разные процессоры.
дык я же про это и написал :kz:

Аватара пользователя
a_shats
Advanced member
Сообщения: 5010
Зарегистрирован: 27 авг 2002, 10:55
Откуда: Москва
Контактная информация:

Сообщение a_shats » 18 дек 2002, 12:11

CyberDrake писал(а): Первый физический процессор: логические процессоры 1 и 2,
Второй физический процессор: логические процессоры 3 и 4,
то при загрузки процессоров последовательно по номерам логических процессоров при выполнении двух трэдов второй процессор будет простаивать.
Хм. Во-первых, тот самый упомянутый Вами thread-sheduling все равно разбросает на все 4 процессора принудительно, если ОС (W2K) не знает о НТ. Если знает (ХР), то это ведь и хорошо будет, исходя из соображений о кэше в постах выше ? Трэды ведь разделяют память, занятую запустившим их процессом, вроде ? С одонй стороны, тогда это хорошо.С другой стороны - если есть два приложения с 1 активным трэдом каждое, их лучше бы разнести на разные физ. процессоры.
дык я же про это и написал :kz:
Неа ;)
"просто" thread-sheduling уже был. А вот HT-aware - это, имхо и есть та ситуация, которая описана выше.

Ответить

Вернуться в «Серверы - Конфигурирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 27 гостей