Сколько процессоров поддерживает семерка?
Johny-electric, та хоть 32-ядерные, тут же разговор о количестве процессоров.
Я знаю. И хорошо, что интел не стала делать игровую платформу на 4-ех восьмиядерных процессорах... Для игрового компьютера использовать серверную ОС не самый лучший вариант. Только я не понимаю одного: операционная система видит многоядерный процессор как несколько вполне самостоятельных процессоров, и не должно быть разницы от того, является процессор многоядерным или это несколько одноядерных процессоров. Но впрочем я это уже спрашивал и получил исчерпывающий ответ =))
Lico :
Johny-electric, та хоть 32-ядерные, тут же разговор о количестве процессоров.
Вот как раз не "хоть". 32-разрядные виста и семерка больше 32 ядер в сумме использовать не могут, так что два 32-ядерника будут уже перебором. ;) И даже два 16-ядерника, если каждое ядро видится как два процессора.
Игорь Лейко, ставить 32-битную ось на такие процессоры - извращение =)
Lico, этот компьютер позиционируется как игровая станция для энтузиастов, а большинство игр до сих пор выпускаются в 32-х битном варианте. Главной причиной использования х64 систем в таких компах является не процессор, а огромный объём ОЗУ. Да и игры на таком компе будут скорее всего запускаться на самых максимальных настройках качества и процессу не хватит 2 гб памяти, адресуемых в 32х разрядной ОС...
Кто-нибудь может мне объяснить причину вот такого поведения многих программ? Почему ядра не загружены на 100%? При этом, если Hyper Treading отключить, то все 4 ядра грузятся на 100% и скорость конвертирования заметно возрастает.
Ведь HT - это всего лишь возможность обрабатывать на одном ядре два потока. Но это ведь не означает (?), что при одном потоке на ядро оно не будет "выкладываться" на 100%. Если бы процессор имел 8 физических ядер, у меня не возникло бы вопросов. Ясное дело, что при работе 4-х поточной программы использовалась бы мощь только 4 ядер такого процессора, а остальные 4 бы простаивали. Но в данном случаем мне не совсем понятна работа ядер.
Есть такое подозрение, что программа не оптимизирована для использования HT.
Давайте рассмотрим логику:
При отключенном НТ программа получает от системы информацию, что работы доступны все 4 ядра и задействует их на полную.
При включенном НТ системная логика виртуально делит каждое ядро напополам, чтобы на одном ядре можно было распараллелить 2 процесса одновременно (что отражено на вашем скриншоте). При этом программе выдается информация, что от каждого ядра физически доступно 50% и столько же доступно виртуально. Если программа корректно отрабатывает НТ - и физически и виртуально доступные ядра будут для нее доступны. Если поддержка НТ изначально не заложена или заложена криво, то виртуальные ядра просто не будут приниматься во внимание и программа будут использовать те самые приблизительно 50% доступных физических ядер (что опять же отражено на вашем скриншоте).
Tosha30, почитайте forums.php?m=posts&p=189387#189387 и несколько постов далее. Почему же тогда инженеры интел просто не разрезали каждое ядро напополам? Получился бы НАСТОЯЩИЙ 8-ми ядерный процессор. Но тогда производительность отдельно взятого ядра была бы слишком мала. Для этого и придумали НТ. Чтобы при работе одного приложения у процессора оставалась возможность выделить отдельный поток для второго. Вспомните, насколько заметным было преимущество интел пентиум 4 с НТ. Я к тому, что количество ядер процессоров растет, гораздо быстрее, чем программ, умеющих их использовать. Я уже давно жду того момента, когда производители процесоров научат свои детища складывать производительность ядер аппаратно. Проще говоря гипертрединг наоборот. Вот это было бы здорово. Представьте 16 ядерный проц (а до этого весьма недолго), переключенный в режим 4х4, когда мощь одного виртуального ядра равна 4 физическим.
Ну так я приблизительно то же самое и написал. Пусть другими словами.
Вы спросили: "Почему так?", я, основываясь на собственной логике и вашем скриншоте, написал почему по-моему. И оказался близок к истине.
Кодировщик видит только реальные ядра и не обращается к виртуальным.
Tosha30, да блин, как бы вам попроще объяснить мою мысль... Представьте одно ядро процессора с HT как качели. Если на такое ядро дать нагрузку в 2 потока, то она распределится 50/50 и качели уравновесятся (читай - вычислительная мощность ядра поделится на оба потока). Но если поток дать один, то одна сторона качелей (не важно какая, так на которую дали нагрузку) просядет на 100%, а вторая наоборот поднимется до 0%. При этом все 100% вычислительной мощности должны уйти в первый поток. И это не должно зависеть от поддержки приложением HT. Да и что вы вообще имели в виду под "поддержкой HT"? Приложение откуда знает, физические это ядра, или нет? Ему видны 8 логических ядер, и всё тут. Оно должно просто уметь работать в 8 потоков. Вот, например, программа Xilisoft Video Converter при пакетной обработке умеет конвертировать видео во сколько угодно потоков, и здесь разница в скорости между 4 и 8 потоками видна невооружённым глазом. Когда я закидываю 8 клипов и включаю конвертирование, то при включенном HT программа запускает все 8 клипов конвертироваться одновременно. По одному процессу кодера на виртуальное ядро. А без HT при запуске конвертирования стартуют только 4 клипа (по числу ядер) и только по завершении процесса запускаются следующие 4 клипа. И в общей сложности это дело занимает заметно больше времени, чем при конвертировании 8 клипов одновременно. Вот мне и интересно, зависит ли от операционной системы эффективность использования вычислительных ресурсов современных процессоров?
А вот фиг там правда. Впрочем вы сами себе ответили, сославшись на Xilisoft.
При включенном НТ система рапортует приложению, что в ней есть столько-то физических ядер и столько-то логических. Если приложение "научено" обращаться к логическим ядрам (то есть воспринимает их как обыкновенные физические), то оно и задействует их все. Если приложение "не знает" что такое логическое ядро, то оно плюет на него с высокой колокольни и обращается только к доступным ресурсам физических ядер (коих, как вы справедливо отметили, остается 50%).
Было бы, конечно, здорово, если бы система сама умела бы включать, отключать и распределять ресурсы НТ по мере надобности. Однако этого нет (иначе в БИОСе не было бы этой опции за ненадобностью). И вам приходится самостоятельно решать сколько ресурсов процессора вы готовы отдать для выполнения той или иной конкретной задачи: 50 или 100.
Tosha30, ну вообще-то я считал, что эти "качели" реализованы аппаратно, и если программа "давит" только на одну половину качелей, то физическое ядро должно всё равно полностью на 100% загрузиться. В вашем же понятии противоположную сторону качелей кто-то держит. И кто же её держит? Программу ведь ничто не ограничивает.
Johny-electric, а может лучше перейти от "я считал" к теории и практике?
при включении HT ресурсы одного физического ядра начинают разделяться между двумя виртуальными (иногда ещё и не динамически, а строго пополам) — в результате чего производительность одного «виртуального» ядра в некоторых случаях оказывается объективно меньше, чем если бы это ядро было физическим.
Резонно предположить, что Windows Vista, обнаружив, что запущена на десктопе с 8-ю процессорами, была настолько ошеломлена этим чудом, что её планировщик задач просто не смог справиться с такой бездной новых возможностей. По крайней мере, нам такое объяснение множества «провалов» HT именно на 8-процессорной (с точки зрения ОС) системе кажется наиболее логичным. А стало быть, если принять данную гипотезу в качестве рабочей — дело лишь в системном ПО, и ситуация может быть скорректирована без вмешательства в аппаратную часть (читай: «Intel не виновата»).
Вот про это я и писал выше. И вообще, я не зря это написал в этой ветке форума. Вопрос остаётся открытым: зависит ли от ОС эффективность использования ресурсов процессора?