Да и еще отключение опции 6.03 и включение 6.11 прибавляет 2-4 фпс. Не знаю почему) но есть такое дело
Да и еще отключение опции 6.03 и включение 6.11 прибавляет 2-4 фпс. Не знаю почему) но есть такое дело
Эта программа скорее всего делает 1 весьма простую вещь - принудительно отключает установленную игрой AffinityMask - т.е. маску которая блокирует выполнение игры на некоторых потоках/процессорах. Но работает это только _если игра блокирует часть ядер_, и зачастую добавляет глюков, а не производительности.
Верить в "чудеса многоядерности" в исполнении которое есть на современных процессорах не стоит, оно предназначено для параллельного выполнения нескольких программ (а не одной программы) и исключительно для вычислительных задач. А игра в большей степени это не вычислительная задача.
Нормальная многоядерность для игр это что-то типа SPU на приставке PS3.
--- Добавлено ---
P.S. Ну подумайте логично, если бы существовал какой-то способ гарантированного использования многоядерности для любой игры, при помощи _внешней_ программы, то неужели бы:
1) разработчики не встраивали его в игры сами (не считаете же вы что разработчики которые могут сделать рабочую игру на 200-300К строк кода не в состоянии добавить еще 100 строк кода для могоядерности )
2) производители процессоров не кричали бы об этом на каждом углу и сразу же не сделали свою собственную супер программу для включения этого дела. Но нет они почему-то упорно проводят всякие конференции на тему "как добавить еще 1% к производительности при помощи нашей новой особо кривой реализации многоядерности", а секрет то прост - "мегапрограмма" на 100 строчек кода, вот дураки в Intel и AMD сидят
Подумайте над этим и хватит уже верить в сказки
Безусловно, знаю. Сперва "LockOn. ГС", потом "DCS. Чёрная акула". И по-секрету скажу - толку было ноль. И более того, с того времёни ничего не изменилось.
Сказки о "приросте производительности" - не более, чем сказки (анекдот про "А вы тоже говорите!" знаешь? ). А чтобы совсем вопрос закрыть (если интересно, конечно) - почитай про многоядерность, многопоточность и её реализацию в Windows (смело на MSDN).
Долго пишу. Пока писал - увидел, что Андрей уже ответил. Мне добавить нечего
Там ещё более простая вещь (если память не подводит). Выполнение процесса переносится на заданное ядро (или заданные ядра). Как в "Диспечере задач": "Задать соответствие...".
Да, но формулировки "маску которая блокирует выполнение игры на некоторых потоках/процессорах" и "Но работает это только _если игра блокирует часть ядер_" неверны.
а) Никто там ничего не блокирует. "Блокирует" и "указывает, что использовать" не одно и то же.
б) Работает переназначение процесса/треда ядру всегда. Affintiy Mask можно изменить в любой момент, независимо от того, кто там чего "блокирует" (извращения типа Set*AffintiyMask внутри приложения по таймеру пока забудем, ибо - извращения).
Ты же в курсе, зачем запутываешь?
А с результатами назначения Affintiy Mask - в самую дырочку. Ведёт оно себя совершенно непредсказуемо. И более - а ну как кто-то ещё на свеженазначенное ядро уже привязан? Очередь-то и приоритеты никто не отменял.
С уважением.
Вы неправы
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
"...as the system is restricted from running the threads on certain processors..."
Restricted: ограниченный, ограниченного пользования, узкий, для служебного пользования, закрытый
Маска задает для ОС допустимые ядра на которые можно назначить выполнение потока. Если мы ставим 0х1 - то он будет только на первом ядре (логическом процессоре) выполняться. По умолчанию стоит 0xffffffff, т.е. все доступно _на выбор ОС_.
И я настаиваю что это именно блокировка , потому что, если, например поставить звуковую библиотеку DX и основной поток игры на 0x1 то они перестанут параллелиться на многоядерном процессоре (в каком-то патче у нас так было сделано ).
А и самое главное, что если в игре два нагруженных потока стоят с масками 0x1, то программа которая их "разведет" по ядрам (снимет блокировку ) может иметь смысл. Другое дело что непонятно зачем так делать в игре.
Ага, а "running"?
"Ограниченный" - не "заблокированный", опять же.
Сами вы неправы
Переводим всю фразу на русский? Она не имеет никакого отношения к определениям.
"...так как операционная система вынуждена запускать на выполнение потоки на определённых процессорах...".
И оттуда же: "...affinity mask must specify...". Перевести?
Кто бы спорил! Заметь - "задает для ОС допустимые ядра". Это не я написал. Не "блокирует", что характерно.Маска задает для ОС допустимые ядра на которые можно назначить выполнение потока. Если мы ставим 0х1 - то он будет только на первом ядре (логическом процессоре) выполняться. По умолчанию стоит 0xffffffff, т.е. все доступно _на выбор ОС_.
Так, пора прекращать.И я настаиваю что это именно блокировка ,...
... потому что - акваланг! А серьёзно - да, ожидаемо, что параллелиться не будут. Но где здесь блокировка? Двум потокам специально и осознанно задано выполняться на первом ядре....потому что,если, например поставить звуковую библиотеку DX и основной поток игры на 0x1 то они перестанут параллелиться на многоядерном процессоре (в каком-то патче у нас так было сделано ).
Так вышеупомянутая программа не потоки разводит (не снимает с них блокировку, а назначает потокам ядра ). Она с процессом целиком работает. Это раз.А и самое главное, что если в игре два нагруженных потока стоят с масками 0x1, то программа которая их "разведет" по ядрам (снимет блокировку ) может иметь смысл. Другое дело что непонятно зачем так делать в игре.
Второе - ага. Свой обработчик на CreateThread, в нём SetThreadAffintiyMask и на выходе всё равно получить "In most cases, it is better to let the system select an available processor". Лихо!
С уважением.
З.Ы. Прекращаем? Я лично, уже заряд хорошего настроения получил. Хороший у тебя юмор, правильный. Жму руку.
попробуемс...Да и еще отключение опции 6.03 и включение 6.11 прибавляет 2-4 фпс. Не знаю почему) но есть такое дело
Камрады, если не сложно залейте пожалуйста патч еще куда нибудь, обе ссылки не рабочие.
Данке Шён