Приводит ли гиперпоточность к нестабильным системам?

StackOverflow https://stackoverflow.com/questions/462549

  •  19-08-2019
  •  | 
  •  

Вопрос

Я собираю КОМПЬЮТЕР с новым четырехъядерным процессором Intel I7.При включенной гиперпоточности он будет сообщать о 8 ядрах в диспетчере задач.

Некоторые из моих коллег говорят, что гиперпоточность сделает систему ненадежной, и предлагают отключить ее.

Может ли кто-нибудь из вас, добрые люди, просветить меня и остальных пользователей stockoverflow.

Следуйте дальше:Я постоянно использую hyperthreading, и это было на высоте.Никакой нестабильности вообще.Я использую:

  • Microsoft Server 2008 64-разрядная версия
  • Microsoft SQL Server 2008 64-разрядная версия
  • Microsoft Visual Studio 2008
  • Сервер Diskeeper
  • Множество элементов управления (Telerik, Dundas, Rebex, Resharper)
Это было полезно?

Решение

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

Честно говоря, я не могу сказать, так ли это до сих пор, но, по крайней мере, когда впервые появились процессоры с поддержкой HT, были известные проблемы по крайней мере с некоторыми приложениями.Например, известно, что MySQL и многопоточные приложения, такие как Java-приложение, которое я поддерживаю для своей повседневной работы, имели пониженную производительность при включении HT.Мы всегда рекомендовали удалить его, по крайней мере, для нашего конкретного случая использования серверного корпоративного приложения.

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

Другие советы

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

  • Несколько статей о том, как производительность SQL страдает при гиперпоточности.Я считаю, что это приводит к слишком большому переключению контекста или перегрузке кэша.не могу точно вспомнить.

  • Ранний переход от однопоточного к многопроцессорному или, что более вероятно для большинства людей, к гиперпоточным процессам выявил множество проблем с потоками.Условия гонки, тупики и т.д., которых они никогда раньше не видели.Несмотря на то, что это проблема с кодом, некоторые люди обвинили процедуры.

Делают ли они те же самые заявления о многоядерности / многопроцессорности или просто о гиперпоточности?

Что касается меня, я разрабатываю на hyperthreaded box уже 4 года, единственной проблемой была проблема с тупиковым интерфейсом, созданная мной самим.

Гиперпоточность в основном повлияет на поведение / производительность планировщика при отправке потоков на один и тот же процессор, в отличие от разных процессоров...

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

Так что обычно это плохой дизайн / код....это позволяет внезапно обнаружить условие режима сбоя

Ненадежный?Я сомневаюсь в этом.Единственный недостаток гиперпоточности, о котором я могу думать, - это тот факт, что если операционная система не знает об этом, это может запланировать два потока на одном физическом процессоре, когда другие физические процессоры простаивают, что приведет к снижению производительности.

Существовала проблема с SQL server и гиперпоточностью для некоторых запросов, поскольку SQL server имеет свой собственный планировщик, maxdop 1 решил бы это

В какой бы степени Windows ни была нестабильна, крайне маловероятно, что гиперпоточность вносит значительный вклад (иначе это уже стало бы большой новостью).

У меня уже пару лет есть КОМПЬЮТЕР с гиперпоточностью.Не так уж много ядер, но у меня все работало нормально.

Хотел бы я иметь тестовые данные, чтобы доказать неправоту ваших коллег, но, похоже, на данный момент это всего лишь мое мнение, а не их.;)

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

Насколько я знаю, с точки зрения операционной системы, гиперпоточность ничем не отличается от наличия реальных нескольких ядер.С точки зрения операционной системы, нет никакой разницы - она изолирована.

Итак, помимо того факта, что "дополнительные ядра" hyperthreading не являются "реальными" (в строго техническом смысле) и не обладают полной производительностью "реальных" ядер процессора, я не вижу, чтобы это было менее надежно.Возможно, медленнее, в некоторых редких случаях, но не менее надежно.

Конечно, это зависит от того, что вы используете - я полагаю, что некоторые приложения могут "зависать" из-за процессора, и гиперпоточность может сбить их с толку, но это, вероятно, довольно редко.

Я сам использую компьютер с hyperthreading уже несколько лет, и я не видел никаких проблем со стабильностью.

Извините, у меня нет более конкретных данных!

У меня есть система i7, и у меня не было никаких проблем.

Если он работает с несколькими ядрами, он работает с гиперпоточностью.

Короткий ответ:ДА.

Длинный ответ, как и почти на каждый вопрос, звучит так: "это зависит".Зависит от операционной системы, программного обеспечения, версии процессора и т.д.Мне лично приходилось отключать hyperthreading дважды, чтобы программное обеспечение работало должным образом (один раз с приложением Synergy и два раза с установщиком Windows NT 4.0), но ваш пробег может отличаться.

Пока у вас установлена Windows, обнаруживающая несколько ядер HT с самого начала (она загружает некоторые соответствующие драйверы и тому подобное), вы всегда можете отключить (и повторно включить) HT "постфактум".Если у вас возникли странные проблемы со стабильностью работы определенного программного обеспечения, которые вы не можете устранить, нетрудно отключить HT, чтобы посмотреть, оказывает ли это какое-либо влияние.

Я бы не стал отключать его для начала, потому что, честно говоря, он, вероятно, будет нормально работать в 99,99% случаев вашего ежедневного использования.Но имейте в виду, что да, иногда это может приводить к странному поведению, поэтому не исключайте этого, если в будущем вам случится устранять что-то очень странное.

Лично я обнаружил, что гиперпоточность, хотя и не вызывает никаких проблем, на самом деле тоже не так уж сильно помогает.Это может быть похоже на наличие дополнительного процессора .1.На моей рабочей машине HT я лишь очень редко вижу, что мой процессор работает выше 50%.Я не знаю, стал ли HT лучше с новыми процессорами, такими как i7, но я не настроен оптимистично.

Помимо нескольких сообщений о SQL Server, все, что я могу сообщить, является положительным.Я получаю примерно на 25% лучшую производительность в тяжелых многопоточных приложениях с включенным HT.С этим никогда не возникало проблем, и я использую процессор HT первого поколения...

Опаздываю на вечеринку, но для дальнейшего ознакомления;

В настоящее время у меня возникла проблема с этим с помощью SQLServer.В принципе, я понимаю, что гиперпоточность на одном процессоре использует один и тот же кэш L1 и L2, что может вызвать проблемы между ними.Судя по тому, что я читаю, у Citrix также есть эта проблема.

Слава Ок написал а хороший пост в блоге на нем.

Я здесь очень поздно, но нашел эту страницу через Google.Возможно, я обнаружил очень тонкую проблему.У меня есть i7 950 под управлением сервера 2003, и это здорово.Изначально я оставил hyperthreading включенным в BIOS, но во время некоторого тестирования я запустил программу под названием "crashme" от Carrette.Эта программа пытается привести к сбою ОС, создавая процесс и загружая в него мусор для попытки запуска.Моя установка dual Opteron запускала ее вечно без проблем, но 950-й вышел из строя в течение часа.Он не разбился ни из-за чего другого, если только я не сделал какую-нибудь глупость, так что это было очень удивительно.По наитию я выключил HT и снова запустил программу.Он работает всю ночь, даже в нескольких его экземплярах.Один анекдот мало что значит, но попробуйте его и посмотрите, что получится.Кроме того, кажется, что процессор немного прохладнее при любой заданной нагрузке, если HT выключен.ИММВ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top