отмена
Отображаются результаты для 
Вместо этого искать 
Вы имели в виду: 

Присоединяйтесь и станьте частью нашего Сообщества!

Отключение hyper-threading

РЕШЕНО
MaximuS__87
Исследователь

Отключение hyper-threading

Добрый день. Имеется ноутбук vpcf23s1r и для использования некоторых программ наличие hyper-threading является причиной сбоев. Скажите, существует ли возможность отключения huper-threading на данном ноутбуке? В биосе вообще нет никаких настроек компьютера. Может, существует другой биос под эту модель? На сайте ничего нет. Что можно сделать?
1 УТВЕРЖДЕННОЕ РЕШЕНИЕ

Утвержденные решения
MaximuS__87
Исследователь

Совершенно не понял двух последних сообщений... :slight_smile:

Вообщем, делюсь методом. Распишу поподробнее, чтобы было понятно всем.

В общем все довольно незамысловато: есть программа CPU Control, которая распараллеливает целевую программу; для успешной её работы нужно, чтобы в окне программы CPU Control отображался как процесс самой программы, так и процесс целевой программы. Для целевой программы все просто: в диспетчере задач процессу потом зададим соответствие, а вот CPU Control должна запуститься с уже выставленными ядрами. Для этого используется программка imagecfg.exe. Далее по пунктам.

1. Качаем из любого источника маленькую программку (50кб) imagecfg.exe и копируем ее в любой каталог. Для удобства можно скопировать её в c:\\windows\system32 - это позволит запустить команду через "Пуск > Выполнить..." Можно сделать как я: в активном окне Total Commander войти в каталог, где лежит программа и вписать команду в командную строку внизу.

2. Установить CPU Control, например, в каталог "D:\CPU-Control\CPU_Control.exe". Можно запустить и убедиться, что в окне программы нет ни одного процесса. Тут же сразу делаем копию CPU_Control.exe, т.к. imagecfg изменит исполняемый .exe файл.

3. Теперь вводим в командную строку Total Commander или в окно "Пуск > Выполнить..." команду

imagecfg -a 0x0f "D:\CPU-Control\CPU_Control.exe"  Должно появиться и пропасть черное окошко. После этого повторно запускаем CPU_Control.exe, в окне программы должен появиться процесс самой программы. Пока закрываем.

4. Теперь нужно запустить целевую программу и в диспетчере задач задать соответствие для её процесса. Выставляем 1, 2, 3 и 4 ядро, т.к. в команде для CPU Control было выставлено аналогичное соответствие (в команде это 0x0f).

5. После снова запускаем модифицированный CPU_Control.exe, в нем теперь видно оба процесса. Для того, чтобы целевая прога распараллелилась, нужно пару раз переключить справа режим на Авто, потом опять на ручной, чтобы напротив целевой программы были все единички (при необходимости правой кнопкой на процесс и выставить все ядра). Все. Теперь должно работать.

 

Опытным путем выяснил, что работают именно первые 4 ядра, если задать командой другие, процесс не отображается в окне CPU Control. Сначала хотел выставить 1, 3, 5, 7, но не вышло, видимо прога начинает подозревать, что ее обманывают, раз она видит ядра с больше CPU3 :). Если будет желание можете тоже попробовать, может заработает (если да, поделитесь). 0x0f указывает, что присвоить надо 1, 2, 3, 4 ядра. Привожу константы для всех:

0x01 = 1 = CPU0
0x02 = 2 = CPU1
0x04 = 4 = CPU2
0x08 = 8 = CPU3
0x10 = 16 = CPU4
0x20 = 32 = CPU5
0x40 = 64 = CPU6
0x80 = 128 = CPU7
0x0f = 15 = CPU0, CPU1, CPU2, and CPU3 (1+2+4+8 = 15)

Или, например: 0xc3 = 195 = CPU0, CPU1, CPU6, CPU7 (1+2+64+128)

Я пробовал на игре WOT, распараллелилось на 1 и 3 ядро, потоки hyper-threading она почему-то проигнорировала, может другие будут лучше. Есть оченьмалое кол-во программ, которые не распараллеливаются, однако инструмент довольно универсальный. Надеюсь, кому-нибудь пригодится.

Просмотреть решение в исходном сообщении

12 ОТВЕТ 12
profile.country.RU.title
ActuatedDrake
Герой

Я вас категорически приветствую,  @MaximuS__87 

 

Через BIOS в  VAIO вы ничего не получите. Это забота разработчиков от слишком любопытных пользователей, любителей рискованных экпериментов. Правильно ли это или нет - вопрос философский.

 

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

НО...

Для начала, окажите любезность, сообщите нам:

1: У вас установлена заводская ОС или вы уже поставили "чистую"? Какая версия ОС текущая?

2: Какие конкретно приложения приводят к сбою/сбоям, какие сообщения от ОС вы получаете, и почему вы однозначно определяете причину таких сбоев как наличие Hyper Threading.

:four_leaf_clover:

 

"Герой" на форуме - это Эксперт, окончально повредивший свой рассудок (updated)
MaximuS__87
Исследователь

Произведено удаление скрытого раздела и последующая чистая установка win 7 x64. Заменены модули памяти (хоть к делу и не относится). Драйвера родные, все настроено и штатно работает. Проблема при работе с autoGK, но больше всего обламывает, что при 8 ядрах нереально использовать cpu control - а это очень важный инструмент, который помогает компенсировать недостаток тактовой частоты в большинстве однопоточных приложений (пользую много лет и часто действительно спасала). Аналогов по сути у проги нет. Есть еще пара приложений, но упоминать не буду, т.к. пока не уверен, что из-за HT. В целом-то ноут работает хорошо, но отсутствие тонкой аппаратной настройки (напряжение, тайминги, функции энергосбережения и т.д. и т.п.) - серьезный, на мой взгляд, недочет. Например, типовая ситуация, когда ставится ssd, а ты не можешь переключить sata в режим ahci. Вообщем, вы меня понимаете. Модифицированных биосов я не нашел, максимум можно посмотреть через досовые программы, что в биосе присутствует пункт настройки hyper-threading. Вообщем тупик. Подскажете что?
P.s. в любом случае, данный ноут в сервис центр уже сдаваться не будет, все настраиваю на свой страх и риск.
profile.country.RU.title
ActuatedDrake
Герой

Отличное сообщение, коллега

 

Все бы так вот излагали...

 

Для продолжения этой продуктивной ветки, сообщаяю вам что эта "старушка" (autoGK), вполне возможно, заработает у вас корректно, если вы её будете запускать в режиме совместимости с ХР.

 

Ну а теперь по-существу - то, что вас интересует:

 

Запускаете Диспетчер задач--находите экземляр процесса этого конвертера--ПКМ--Задать соответствие--снимаете флаги со всех ядер, за исключение одного, например, 0-го.

 

Вопросы?

Не исчезайте навсегда, делитесь наблюдениями, о_том_о_сем...

:four_leaf_clover:

"Герой" на форуме - это Эксперт, окончально повредивший свой рассудок (updated)
MaximuS__87
Исследователь

Хм.. т.е. Вы предлагаете для конкретного процесса задать соответствие и выставить для него одно ядро. Если так, то вариант не совсем подходит, т.к. ос при загрузке уже инициализировала 8 ядер. Как вариант, можно через команду msconfig > загрузка > кол-во процессоров. Если выставить 4, то после перезагрузки будет активно cpu1 htt1, cpu1 htt2, cpu2 htt 1 и cpu2 htt2, т.е. по 2 потока с 1-го и 2-го ядра. Если бы было cpu1 htt1, cpu2 htt1, cpu3 htt1 и cpu4 htt1 - то нужный эффект был бы достигнут, а так нет. Однако, вы навели меня на одну мысль, которую нужно попробовать: нужно попробовать программно (средствами ос или сторонними) указать для процесса соответствие ДО его запуска. Чтобы во время запуска программы она видела только указанные ядра. Не так, чтобы при запуске инициализировались все и потом руками отключать.. попробую. Тем не менее, спасибо за ответ и если еще мысли на эту тему будут - поделитесь, буду признателен.
profile.country.RU.title
ActuatedDrake
Герой

Коллега,

 

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

 

Ну а, в чисто практическом смысле, объясните: зачем на такой отличной машине как ваша, с ОС 7х64 использовать такие рудиментарные приложения, как это? (Кстати, вы так и не упоминули - запускаете ли вы его в режиме совместимости с ХР?)

 

К сожалению, я у себя использую мощный, многофункциональный (и дорогой:smileyshocked: ) видеоредактор, который конвертирует все-во-все (за исключением рублей в $:smileylaugh:), и поэтому не очень в курсе по поводу наличия современных (в т.ч. и 64-разрядных, возможно?) бесплатных/не_дорогих конверторов видеопотоков. Но уверен, что при желании, найти их и выбрать в СЕТИ для вас труда не составит. Да и здесь могут подсказать,если что...

:thinking:

 

"Герой" на форуме - это Эксперт, окончально повредивший свой рассудок (updated)
MaximuS__87
Исследователь

Понимаете, если проблема в одном приложении, то в абсолютном большинстве случаев можно найти замену. Но тут другое дело: программа cpu control не имеет аналогов, но работает только с 4-мя ядрами. Согласитесь, что бывают случаи, когда однопоточное приложение загружает одно ядро до 100% и компьютер начинает тормозить несмотря на то, что 7 ядер простаивают. Неприятно? Конечно. Вот тут и помогает cpu control, которая распределит однопоточную программу по нескольким ядрам. Хорошее подспорье для многоядерных ноутбуков, не так ли? Поэтому отключение hyper-threading могло бы качественно изменить производительность во многих приложениях в лучшую сторону, как это не парадоксально. Впрочем, вчерашнюю идею я обмозговал и реализовал обман проги cpu control, что позволило мне любое (практически любое) однопоточное приложение размазать на 2 ядра. Больше не вышло из-за нумерации ядер. Но, тем не менее, положительный эффект достигнут. Если вам интересно, могу описать рецепт обмана cpu control, в интернете такого не нашел, но уверен, что многим будет полезно.
profile.country.ru_RU.title
BitFlood
Участник

Можно я тоже буду называть вас коллеги?

Хотя, честно говоря, вот @ActuatedDrake , какой он мне коллега? 

На днях он опять предпринял "героические" усилия удалить меня из Flash BIOS на своем дивайсе.  И это человек, который считает себя гуманистом и интеллигентом? 

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

Ну, да ладно... Я же не об этом хотел выразиться

 

Конечно же нам интересно! 

А, иначе, для чего вообще наш форум?

:smileyshocked::smileywink:


Человек никогда не поймет котабота, потому что он и себя-то не в состоянии понять. IMHO
profile.country.ru_RU.title
utyf69
Опытный

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

Дустом пробовать-не предлагаю из соображений фаунизма и атеизма.

"Правильно поставленная задача может стоять очень долго..."(нИззя Финкельштейн)
MaximuS__87
Исследователь

Совершенно не понял двух последних сообщений... :slight_smile:

Вообщем, делюсь методом. Распишу поподробнее, чтобы было понятно всем.

В общем все довольно незамысловато: есть программа CPU Control, которая распараллеливает целевую программу; для успешной её работы нужно, чтобы в окне программы CPU Control отображался как процесс самой программы, так и процесс целевой программы. Для целевой программы все просто: в диспетчере задач процессу потом зададим соответствие, а вот CPU Control должна запуститься с уже выставленными ядрами. Для этого используется программка imagecfg.exe. Далее по пунктам.

1. Качаем из любого источника маленькую программку (50кб) imagecfg.exe и копируем ее в любой каталог. Для удобства можно скопировать её в c:\\windows\system32 - это позволит запустить команду через "Пуск > Выполнить..." Можно сделать как я: в активном окне Total Commander войти в каталог, где лежит программа и вписать команду в командную строку внизу.

2. Установить CPU Control, например, в каталог "D:\CPU-Control\CPU_Control.exe". Можно запустить и убедиться, что в окне программы нет ни одного процесса. Тут же сразу делаем копию CPU_Control.exe, т.к. imagecfg изменит исполняемый .exe файл.

3. Теперь вводим в командную строку Total Commander или в окно "Пуск > Выполнить..." команду

imagecfg -a 0x0f "D:\CPU-Control\CPU_Control.exe"  Должно появиться и пропасть черное окошко. После этого повторно запускаем CPU_Control.exe, в окне программы должен появиться процесс самой программы. Пока закрываем.

4. Теперь нужно запустить целевую программу и в диспетчере задач задать соответствие для её процесса. Выставляем 1, 2, 3 и 4 ядро, т.к. в команде для CPU Control было выставлено аналогичное соответствие (в команде это 0x0f).

5. После снова запускаем модифицированный CPU_Control.exe, в нем теперь видно оба процесса. Для того, чтобы целевая прога распараллелилась, нужно пару раз переключить справа режим на Авто, потом опять на ручной, чтобы напротив целевой программы были все единички (при необходимости правой кнопкой на процесс и выставить все ядра). Все. Теперь должно работать.

 

Опытным путем выяснил, что работают именно первые 4 ядра, если задать командой другие, процесс не отображается в окне CPU Control. Сначала хотел выставить 1, 3, 5, 7, но не вышло, видимо прога начинает подозревать, что ее обманывают, раз она видит ядра с больше CPU3 :). Если будет желание можете тоже попробовать, может заработает (если да, поделитесь). 0x0f указывает, что присвоить надо 1, 2, 3, 4 ядра. Привожу константы для всех:

0x01 = 1 = CPU0
0x02 = 2 = CPU1
0x04 = 4 = CPU2
0x08 = 8 = CPU3
0x10 = 16 = CPU4
0x20 = 32 = CPU5
0x40 = 64 = CPU6
0x80 = 128 = CPU7
0x0f = 15 = CPU0, CPU1, CPU2, and CPU3 (1+2+4+8 = 15)

Или, например: 0xc3 = 195 = CPU0, CPU1, CPU6, CPU7 (1+2+64+128)

Я пробовал на игре WOT, распараллелилось на 1 и 3 ядро, потоки hyper-threading она почему-то проигнорировала, может другие будут лучше. Есть оченьмалое кол-во программ, которые не распараллеливаются, однако инструмент довольно универсальный. Надеюсь, кому-нибудь пригодится.