12.4.06

Два или один

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

Для начала хочу обратить внимание, что активно рекламировавшаяся в свое время технология HyperThreading фактически умерла - Intel больше не будет ее использовать в новых процессорах. Ссылок не даю, об этом не пишет только ленивый "железный" сайт. Соответственно, не могу не сопроводить это фразой - "я же говорил!": статью о вреде HyperThreading я написал больше года назад, однако маркетинговый посыл Intel был настолько силен, что до сих пор много людей уверены, что это замечательная технология.

Двухъядерные процессоры - это шаг вперед, который первой совершила AMD. Я предпочитаю AMD Интелу, поэтому попробую оценить преимущества двухъядерных процессоров именно на продукции этой фирмы. Для Intel, как показывают тесты, ситуация примерно похожая.

Итак, задача - понять, даст-ли что-нибудь мне приобретение двухъядерного процессора по сравнению с однопроцессорным. Во времена, когда ничего такого не было, и для серверов выбирали двух- или четырех-процессорные системы, результат был прост и понятен - в среднем увеличение производительности сервера в 1.7 раз.
А вот с двухъядерными - не так все просто и понятно. Допустим - процессор AMD 64 X2 3800+ - это два AMD 64 3800+ внутри одного, или нет?
Оказалось, что нет - как по тактовой частоте, так и по производительности.
У этих двух процессоров одинаковый размер кэша, но у одноядерного тактовая частота 2.4 мегагерца против 2-х мегагерц у двухъядерного.

Не буду мучить вас выкладками сравнений, тем более что мне физически нечего сравнивать. Я поступил просто - взял цифры из обзора, и провел дополнительные вычисления, базирующиеся на готовых цифрах производительности.
Если будете смотреть обзор, то не смотрите на цифры по "разогнанным процессорам". Если не нравится сам сайт, обратитесь к аналогичным статьям на ixbt.com или другом "железном" сайте.
Результат исследования, при сравнении одноядерных и двухъядерных процессоров с одинаковым "индексом" (как упомянутые выше):
  • одноядерный быстрее двухъядерного на обычных задачах, примерно на 15-25%.
  • двухъядерный быстрее одноядерного на multithread-приложениях, примерно на 20-30%
Вполне ожидаемый результат (хотя много ниже среднего коэффициента 1.7 для двухпроцессорных систем). Однако, есть несколько нюансов.
  • повышенную производительность (до 50%) на двухъядерном процессоре показали только редкие, специфические (вычислительные) приложения.
  • операционная система на двухъядерном процессоре работает более "стабильно", в смысле общей загрузки. Причины этого тоже понятны.
Поскольку спец-программами я не пользуюсь, а "ровность" работы операционной системы меня не так волнует, выходит, что купив X2 3800 вместо обычного 3800 я не только переплачу, но еще и потеряю в производительности - 95% приложений, с которыми я работаю, фактически однопоточные. А такого повышения производительности для параллельного запуска приложений, как на двухпроцессорной системе, на двухъядерном процессоре не будет.
Также, учитывая то, что я регулярно запускаю определенные тестовые процессы, во время работы которых систему лучше не трогать, дабы не искажать результат даже на "двухпроцессорной" машине, получается, что двухъядерный процессор мне просто противопоказан (т.к. работает в этом случае медленнее).

6 комментариев:

Анонимный комментирует...

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

Dmitry Kuzmenko комментирует...

не совсем. если бы не эти чертовы тесты, я бы взял двухъядерный и чуть его разогнал (не до упора, конечно).
То есть, двухъядерные, конечно, для рабочих станций очень хорошо. Если еще на этой раб.станции 2 диска, то совсем хорошо.
Только вот для AMD нижний X2 по цене $310. Недалеко от одноядерного 3800 - $296. Цены привел BOX (проц+фирменный кулер).
В некоторых фирмах выше 3500 (за $188 OEM) не найти, и не потому что нет - просто берут этот 3500, и разгоняют почти до уровня 4000, который стоит $344 (BOX), примерно на $150 дороже.

кстати, о разгоне. я был его полным противником (и остаюсь для видеокарт, и тем более для серверов), до тех пор пока не увидел утилиту nTune для чипсетов NVidia. Она позволяет разогнать проц, память и видео при стабильной работе (исключая вероятный перегрев).

Dmitry Kuzmenko комментирует...

вот и новости на эту тему подоспели
http://www.ixbt.com/news/hard/index.shtml?05/95/56

Анонимный комментирует...

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

Вот и начинаются всякие мифы типа масштабируемости 1.7 при удвоении процессоров...

Dmitry Kuzmenko комментирует...

гм, 1.7 - это коэффициент (для двухпроцессорных), который я наблюдал воочию еще в 1997 году, причем как для корректно распараллеливаемых multithreaded-приложений, так и для "многопроцессовых" приложений (вроде oracle dedicated-режима). Так что ixbt тут ни при чем :-)

Анонимный комментирует...

Кста по поводу "ровности" системы, хотя лично я предпочитаю термин "реактивность" (время реакции). Так вот зря уважаемый автор не видит преимуществ многопроцессорных систем, на практике эта реактивность здорово чувствуется. Сложно описать - это именно плавность, гладкость, равномерность рабочей системы. Не секрет что затормозить систему очень легко, к примеру прочитать CD или DVD. Но в случае с многопроцессорной системой запущенного фонового чтения почти не замечаешь.

А если ещё принять во внимание анаонсированный AND Анти-гипертрейдинг так складывается вчепятление что надо срочно если не мигрировать, то готовиться достаточно спешно.