Приводит ли гиперпоточность к нестабильным системам? - PullRequest
6 голосов
/ 20 января 2009

Я собираю ПК с новым четырехъядерным процессором Intel I7. При включенной гиперпоточности в диспетчере задач будет отображаться 8 ядер.

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

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

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

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

Ответы [ 15 ]

9 голосов
/ 20 января 2009

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

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

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

4 голосов
/ 20 января 2009

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

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

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

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

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

3 голосов
/ 20 января 2009

Гиперпоточность в основном будет влиять на поведение и производительность планировщика при отправке потоков на один и тот же ЦП, а не на другой ЦП ...

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

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

2 голосов
/ 20 января 2009

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

2 голосов
/ 20 января 2009

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

2 голосов
/ 20 января 2009

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

1 голос
/ 20 января 2009

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

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

1 голос
/ 20 января 2009

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

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

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

Я сам управляю ПК с гиперпоточностью уже несколько лет, и у меня не было проблем со стабильностью.

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

1 голос
/ 20 января 2009

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

1 голос
/ 20 января 2009

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

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

...