Предисловие
Заблуждений, касающихся работы компьютера, предостаточно. Какие-то очень популярны, какие-то широко известны в узком кругу. Я выбрал парочку особо живучих, поддерживаемых верой тех, кто любит заниматься оптимизацией компьютера. Их опровержение не требует долгих объяснений нюансов работы операционной системы, программ и процессора. Достаточно использовать логику.
Прежде чем приступлю к описанию мифов, напишу несколько тезисов, на которые буду опираться в дальнейшем. Если вы не согласны со мной — подумайте дважды, почему. Может быть, мы с вами живём в параллельных вселенных?
Итак, вот тезисы, которые для меня являются истиной, подкреплённой фактами и знаниями. Надеюсь, после внимательного прочтения вы поймёте, к чему я веду.
1.Операционная система (ОС) — посредник между «железом» компьютера и программами (играми в том числе). В данном случае речь о Windows. Именно ОС и запущенные драйвера рисуют на экране картинку, обеспечивают запуск программ и позволяют запущенному софту использовать ресурсы компьютера: процессор, оперативную память, видеокарту, сеть и тому подобное. Фактически Windows состоит из ядра — небольшой, но сложной программки, которая регулирует приоритеты выдачи ресурсов, отвечает за изоляцию программ и делает много чего ещё, связанного с функционированием софта, запущенных драйверов, которые взаимодействуют с железом компьютера посредством функций ядра и собственно изолированной от железа части, где и крутятся наши игры, браузеры и прочее. Кто хочет узнать подробнее, может почитать статью на Википедии «Архитектура Windows NT», но это не обязательно. Главное знать, что система — посредник между физической частью ПК и теми программами, с которыми обычно работаем мы, люди.
2. Возможности операционной системы определяют возможности софта. У прикладных программ и игр, которые мы видим на экране, нет прямого доступа к железу компьютера, они всегда работают через посредника — ОС. Если Windows (и установленные в неё драйвера) чего-то не умеют, то программы до этого «чего-то» не доберутся. Например, для звуковой карты моего старого ноутбука есть несколько версий драйверов. Так получилось, что в одном драйвере можно регулировать усиление звука микрофона, а в другом такой регулировки нет, зато можно включить улучшение звука технологией Dolby Surround. Поэтому, если я хочу послушать музыку, мне приходится ставить драйвер с Dolby Surround. Когда записываю видеоурок, ставлю другой, где микрофон работает гораздо лучше. Увы, ни одна программа не может обойти эти ограничения и дать доступ ко всему сразу, потому что нет драйвера, где есть обе упомянутые функции. Это правило соблюдается всегда. У игр нет прямого доступа к железу, только через посредника. Например, графика часто создаётся с помощью команд DirectX, но в контексте данной статьи это не важно.
3. Создатели операционных систем никогда не стремятся намеренно ограничивать производительность компьютера. Иначе будет а-та-та и много исков. Например, Apple наказали штрафом на 5 000 000 евро, когда выяснилось, что ОС старых моделей айфонов снижает производительность со временем. И ещё на 5 миллионов евро за то, что функция замедления работала тайно, без уведомления владельцев устройств. То есть нужно понимать, что если бы в Windows была какая-то функция, без явного уведомления пользователей как-то снижающая скорость вычислений ЦП, отключающая ядра процессора или ограничивающая возможности железа, то об этом бы писали во всех технических (и не только) СМИ. Были бы иски и репутационные потери. Но этого нет и не будет, потому что семейство Windows исследовано вдоль и поперёк, там не осталось спорных моментов.
Оптимизация ядер и памяти с помощью MSConfig
Совет изменения настроек в системной утилите MSConfig основан на допущении, что Windows при загрузке не использует все ядра процессора и мегабайты оперативной памяти. Якобы нужно указать их нужное количество с помощью «секретной» настройки, чтобы компьютер быстрее включался и всё быстрее работало.
До «секретной» опции можно добраться так: Пуск — Выполнить (в Windows 10 используйте поле поиска вместо Выполнить) — msconfig — OK.
Запустится программа Конфигурация системы (msconfig.exe). Вкладка Загрузка:
Нужно нажать Дополнительные параметры, чтобы открыть параметры загрузки Windows и там будут вожделенные «суперсекретные» опции:
Сейчас ничего не настроено
Пока очумелые ручки не добрались до настроек, здесь ничего указано не будет, галочки проставлены не будут. С чего бы разработчикам Windows ограничивать производительность системы?
Но люди, не использующие критическое мышление, думают иначе: раз изначально галка не стоит, значит, ограничение включено. Якобы отсутствие галочек не даёт операционной системе узнать, сколько ядер у процессора и сколько оперативной памяти установлено. И якобы нужно указать вручную:
На компьютере восьмиядерный процессор и 8 Гб оперативной памяти
И после перезагрузки компьютер начнет использовать все ресурсы. Это противоречит третьему тезису о том, что Microsoft не ограничивает производительность изначально.
Вариантов у этого совета несколько. Я прошёлся по сайтам, посвящённым оптимизации Windows, выбрав парочку. Например, некий Юрий считает, что по умолчанию установлена загрузка с одного ядра:
Где автор мог узнать, что «по умолчанию загрузка с одного ядра»?
Другие вспоминают про оперативную память. «Блог мастера ПК» утверждает, что с ней та же беда.
Я обрезал часть текста, чтобы не было длинного скриншота. Вот что автор советует дальше:
Он советует указать не только количество ядер, но и размер памяти. А в конце говорит, что можно снять галочку.
Стоп. Где логика? Устанавливается опция, после отключается, как такая манипуляция может на что-то влиять в принципе?
Откуда миф? Полагаю, дело не только в незнании матчасти советчиков и отсутствии логического мышления, но и неоднозначной официальной справке по MSConfig. В статье MSConfig the System Configuration Tool на официальном сайте Microsoft описание опций действительно оставляет место домыслам, если не знать контекста:
Перевод: «Если вы нажмете на Advanced Options (в любой ОС), вы можете установить такие параметры, как количество процессоров, выделенных для операционной системы при загрузке, или максимальный объем оперативной памяти. (Как правило, обычно не отмечено)».
Текст официальной инструкции по использованию MSConfig не противоречит мифу: действительно можно указать, сколько процессоров и оперативной памяти использовать при загрузке. Вот только предназначены эти опции не для повышения производительности, а для ограничения в целях тестирования.
Опции в msconfig нужны программистам для тестирования программ, чтобы ограничить доступные ресурсы, сымитировав медленный ПК на быстром.
Если задуматься о репутационных потерях, о штрафах и прочем, возникает понимание, что миф о настройке в MSConfig — полная чушь. В каком бреду можно утверждать, что Windows не задействует все возможные ресурсы при загрузке компьютера? Ведь в интересах разработчиков Windows сделать так, чтобы компьютер включался как можно быстрее без шаманств в настройках. Вводить ограничения глупо.
Некоторые «гении» пытаются доказать, что опция «Число процессоров» ускоряет компьютер, потому что при значении 1 игры начинают тормозить. Логики в этом аргументе нет. При включенном лимите на одно ядро производительность действительно снижается (особенно это заметно в играх), но по умолчанию ограничения выключены и программы вольны использовать все ядра, как им вздумается. То есть опции в MSConfig работают так, как задумано — позволяют при желании пользователя ограничивать ресурсы ПК.
К счастью, данный совет о настройках в MSConfig безвреден. Установка максимальных значений никак не влияет на работу компьютера, ведь результат тот же, что и при выключенных опциях.
Для самых непонятливых: просто снимите галочки.
Не имеет никакого значения, что там в полях — одно ядро или миллион. Не важно, что там в поле «Максимум памяти». Во что вы играете, насколько старое у вас железо — тоже не имеет никакого значения. Просто снимите все галки, нажмите ОК и живите спокойно дальше. Нет никаких тайных настроек в MSConfig для «разблокирования» процессорных ядер и памяти.
Заставить игру использовать все ядра процессора
Второй миф объяснить сложнее. Дело в том, что программы работают совсем не так, как представляется пользователям ПК. А где много невежества, там много эффекта Даннинга — Крюгера и, конечно, мифов.
Недовольные скоростью запуска программ, частотой смены кадров в играх, люди любят смотреть потребление ресурсов ЦП в Диспетчере задач и заниматься бессмысленными попытками что-то оптимизировать. К примеру, пытаются регулировать параметры вроде предыдущей настройки, чтобы их любимая программа загружала на 100% все ядра процессора.
Проблема в том, что многие манипуляции, популярные благодаря магическому мышлению, на деле в лучшем случае бесполезны. Это сродни использованию чехлов для телефонов, защищающих тело от «вредной» радиации. Знающие физику люди только покрутят пальцем у виска, в то время как остальные скупают чехлы пачками и рекомендуют знакомым поступать так же.
Но вернёмся к работе программ на многоядерных процессорах. На границе знания и незнания возникла «гениальная» идея использовать программу CPU Control для назначения играм всех ядер.
Совет начал встречаться более десяти лет назад. Например, при обсуждении игры Gothic 3, которая любила тормозить на любом, даже самом мощном ПК:
У людей тормозит третья Готика. Что делать? Заниматься шаманством!
На скриншоте выше пользователь s063r посчитал, что игра не задействует второе ядро процессора. Товарищ Shifroval посоветовал использовать программу CPU Control.
Что же это за чудо-зверь такой, который залезает в программный код и заставляет программу изменить логику своей работы? CPU Control — это примитивная утилита для назначения процессу одного или нескольких ядер процессора:
К сожалению, разработчики этой софтины поступили глупо, сделав так, что при запуске все запущенные программы автоматически «назначаются» на первое ядро процессора (включается некий режим «Manual»). Обратите внимание на столбец «CPU» при запуске CPU Control:
Единица и три нуля означают, что программе назначено только первое по счету ядро процессора (четырёхъядерного, по мнению CPU Control). И это происходит после запуска самой утилитой. То, что до запуска ситуация была иной, с помощью CPU Control увидеть нельзя. Можно, конечно, до всех манипуляций глянуть назначения процессов на ядра в Диспетчере задач, но кто в наше время мыслит критически и проверяет работу программ родными утилитами Windows?
То есть получается нехорошая ситуация: человек запускает CPU Control и видит — о ужас — все программы назначены только на одно ядро!
Ложный совет звучит так: программы работают только на одном ядре, в чем можно убедиться, запустив CPU Control. И там можно назначить программе использование всех ядер процессора.
Но это абсолютно неверное утверждение легко опровергнуть. Если до запуска утилиты CPU Control запустить Диспетчер задач и на вкладке «Подробности» нажать по любому процессу правой кнопкой мыши и выбрать пункт «Задать сходство», то становится понятно, что изначально программам всегда доступны все ядра:
В Диспетчере задач Windows видно, что по умолчанию программам назначены все ядра
Если задействовать критическое мышление, возникнут вопросы:
- А почему Windows так сама не делает? Одноядерные процессоры днём с огнём уже не сыщешь, даже в офисных ПК минимум двухъядерники стоят. Почему какая-то утилита якобы может запустить программу на всех ядрах, а Windows спустя десятки лет развития — нет?
- Как вообще посторонней утилите удаётся что-то там регулировать внутри программ, якобы распределяя потоки по всем ядрам?
Ответ прост: CPU Control не делает того, что ей приписывают. Более того, на умение софта «задействовать» все ядра процессора нельзя повлиять извне. Это, в общем-то, внутреннее дело программ — в зависимости от алгоритмов некоторые задачи могут выполняться параллельно на нескольких ядрах, а могут только на одном. Даже слово «назначить» тут не совсем верное — правильнее употреблять «ограничить».
Без переписывания исходного кода программ как-то повлиять на то, сколько и как ядра ЦП будут «задействоваться», невозможно. Ограничить или дать потенциальную возможность — да, можно. А «задействовать», если изначально программа этого не умеет — нет, никак. Это как если бы человеку, который привык считать на калькуляторе, подсунули второй и сказали: считай на двух! Это бы ускорило его работу? Нет, конечно.
Задачу, которая предназначается для одного потока, нельзя запараллелить влиянием извне. Нужно менять саму задачу, применять другие алгоритмы. Это касается не только компьютеров, а вообще всех сфер деятельности — от производственных процессов до офисной работы.
Однако в интернете и в комментариях под этим текстом люди на полном серьёзе убеждают, что утилита помогает, что игры начинают работать быстрее. Неправы ли они? Не совсем!
Миф очень живуч, потому что иногда переназначение софта на разные ядра делает компьютер отзывчивее. Происходит в ситуации, когда в системе запущен процесс, сильно нагружающий процессор, о которой юзер из-за неумения пользоваться системным Монитором ресурсов не знает. Это может быть какой-нибудь скрытый вирус-майнер или вкладка браузера с большим количеством тяжёлых элементов на странице (видео, онлайн-игр, рекламы). Тогда назначение только на одно ядро ограничивает доступные зловреду ресурсы и дает возможность остальным ядрам процессора работать на благо игры, ведь пользователь назначит ей все ядра. Но это лечение симптома, не решение проблемы.
Как нужно настраивать на самом деле?
- Займитесь нормальной оптимизацией Windows.
- Смотрите через Диспетчер задач и системный Монитор ресурсов, что именно нагружает ЦП (или через стороннюю утилиту типа Process Explorer, потому что майнеры любят закрываться при запуске Диспетчера, скрывая таким образом своё негативное влияние).
- Сделайте апгрейд: поставьте SSD вместо жёсткого диска, установите процессор и видеокарту побыстрее, добавьте оперативной памяти.
Тогда получите что хотели: увеличение производительности ПК.
Кстати, CPU Control на восьмиядерных системах видит только четыре ядра. Ждём советы по включению пропавших ядер?
Дубликаты не найдены
С точки зрения программиста, даже такого лажового, как я, это полный бред.
Есть процесс, есть поток — автор поста явно не знает, что это такое, одаривая нас такими перлами как "поток процессора".
Поясню на пальцах: есть процесс. Если очень просто, то процесс — это выполняемый экзешник. Когда Вася Пупкин включает одновременно Word и Opera, он запускает 2 процесса. Такой сценарий хорошо распараллеливается: одно ядро тянет Word, другое — Oперу. Третье тянет порево через торренты =)
Теперь есть поток. Поток — это часть процесса. Т.е. запустившись, Word, может одним потоком, к примеру, проверять орфографию, а другим — заниматься отрисовкой пользовательского интерфейса. Пользователь НИКАК не может заставить программу запустить больше потоков, потому что потоки, как и вся логика программы, прописываются программистом заранее. Потоки нужно синхронизировать между собой, чтобы они не вешали систему, не дрались из-за памяти, не засирали друг другу входные данные и т.д. Это непросто, не говоря уже о том, что не все задачи можно вменяемо распараллелить.
Вывод: вышеописанной хернёй заниматься НЕ НУЖНО (автор, разумеется, не приложил результатов тестирования в обычном и "четырёхъядерном" режимах), она вам ничего хорошего не даст.
хотите я вас разочарую?после того как вы попытаетесь развернуть игру вы получите веселого зеленого жука который снесет к чертям все ваши настройки.
значит вы качали плохие модификации.
Сколько масштабных модов я не качал вылетов не наблюдал.Может пара всего за весь мой игровой опыт
ну блин, может проблема в том, что планировщик большинство прог, в том числе и сталкер, пихает на цп0 (что и видно на графике). а эта махинация как-то дала понять, что можно и другие ядра использовать. но эти махинации вряд ли можно назвать "многопоточностью". поток команд бывает у программы. и если он один, его не разделить на несколько ядер, другое дело можно оптимизировать выбор, на каком ядре будет исполняться код в то или иное время.
короче, мне кажется я просто прицепился к слову "многопоточность", потому что в моем понимании (и вроде не только моем) у него другой смысл.
Писос, это и в 10ке работает.
Чувак, это херня полная. Знал бы как, уже давно удалил бы этот пост
Позор моим сидинам.
Раскаяние на пикабу
Мне это помогло.
У меня проц слабый AMD x2 250, 2 ядра, частота с разгоном 3,5Ггц.
Изначально игра жрала ровно 50% проца, то есть одно ядро на 100%.
А теперь игра есть 80% процессора. 40% одно ядро и 40% второе ядро.
хоть проц и слабый, но скорость работы игры заметно увеличилась.
Это дело работает не у всех, но работает. Например, у меня атлон 2,9ГГц х 3. Даже оригинальный сталкер идет с мелкими подергиваниями, какие настройки ни выставляй. К ним быстро привыкаешь, но после игры в нормальный шутер они сразу бросаются в глаза. Проделываю вышеописанное шаманство и игра начинает идти ровно. В модах подергивания разрастаются до размеров неприятных фризов. Например, OGSE. С помощью этого шаманства они становятся гораздо реже. При этом, если судить по показаниям седьмых виндов, до шаманства процесс забивал одно ядро на 100%, после начинает грузить три ядра примерно по 50%. Т.е. нагрузка больше, качество выше. И речь не о ФПС, а о мелких фризах. В общем, вполне годный рецепт шаманства.
Бля, ребят. Хотите — верьте, хотите — нет, НО
была проблема, попробовал этот рецепт и помогло.
Автору — моё почтение! Играю в Тень OGSE)
Предыстория, как я здесь оказался:
Утром заменил проц с AMD Phenom II x2 545 3.0GHz
(разлочил Asus M4A79XTD EVO AM3 DDR3 1333 SATA3 USB2.5 etc. третье ядро и разогнал их до стабильных 3.45ГГц по частоте (множитель залочен), попутно ОЗУ ускорилось до 1520+- и перестроил весь остальной конфиг биоса на максимальную производительность без всего лишнего (включил AHCI, оффнул всякую безопасность, энергосбережение, понижение частоты, вентиляторы тапкой в пол, Hyper-V и всё остальное, что мешает дышать)
на Phenom II x4 970 Black Edition 3.5GHz и докинул 2х2 гига к своим 2х2Гб абсолютно одинаковой двухранговой DDR3 1333 от Samsung.
Так же на борту почти устраивающая меня Gygabyte GeForce GTX 750 ti с двумя гигами и удовлетворительным набором логики для комфортной игры в околосовременные игры.
Приблизительно 3 часа пытался подружить комп с обновками, перебирая в нём всё до оловянных дорожек и реконфигуря биос чёртову дюжину раз. Почему-то лишь через несколько сбросов завелось на 98% дефолте конфига.
Вообще, в моём конфиге, если задуматься, меня всё устраивало для комфортной игры в желаемые игрушки в FHD на высоких настройках графики, но недавно обновил монитор до 27" 2K 2560*1440 и вот тут и начался троттлинг, перегрев, а так же нехватка памяти, хотя файл подкачки в 64Гб на отдельном диске и очень спасал ситуацию.
Здесь хочу вбросить свои 5 копеек мнением, что система в зарезервированном пространстве на диске, если оно фиксировано и его больше, чем нужно, работает лишь в определённой его области — там, куда ещё не дропался лут из оперативки, при этом используя столько, сколько просит и не перезаписывая старые данные до его заполнения, т.к. когда я чистил файл софтом, при первом запуске каждой игры у меня наблюдались просадки, пока я не погляжу на всю локацию и не поделаю все действия.
Ещё ситуацию усложняла третья, тогда стоявшая, планка на 2 гига от Патриота, с другими таймингами и инструкциями, ну и неполноценная из-за этого работа проца ни в 2-ух канальном, ни в 4-х, режиме, который обязательно нужно было указать в BIOS.
В такой солянке вдогонку регулярно прилетали бсоды по рандомным компонентам пека из-за "сильного" разгона (14%).
Кстати — нет-нет, да игра не запустится просто потому, что не 4 ведра или мало памяти, хотя рядом зарезервирован вагон.
С этим нужно было что-то делать.
Запускаю, потестил, прирост оправдал ожидания, доволен. Теперь бутылочное горлышко — что логично — видеокарта, но пока не важно — и так проапгрейдился). Сейчас мой спек упирается в AM3, SSE4.1 и OpenCl. Ещё видюшка ASIC Quality 70.9% :с Нужно 4 гига и 200-400 бит.
Поигрался в игры, настала очередь Сталкера. Играю, а всё подвисает по-старому. Чекаю — ГПУ дефолтно почти на пределе, общая загрузка процессора 100ШТАА?! Переключаю график по ядрам и вижу, что печётся о Сталкере лиш одно. Ватафак мазафака! Полез в гугл, думал — мб какие дрова перевоткнуть или чего ещё, а то винда первые пяток раз не распознавала новый ЦП, и сформулировал запрос "тень чернобыля грузит одно ядро". 😁
Отака хуня, малята.
СИЛА ПИКАБУ! 😼 #ЭТОМОЩНО 😎
вот он — трушный овнер хэштега
Все, теперь приложение будет использовать все ядра.
бред. не надо людям голову морочить.
С точки зрения программы многопоточность это возможность создавать внутри своего процесса несколько потоков. И эта возможность реализуется только кодом приложения. Т.е. если приложение однопоточное, то ОС просто неоткуда взять второй поток из процесса этого приложения и однопоточное приложение всегда останется однопоточным на любом железе и под управлением любых ОС.
CPU control просто перебрасывает поток с одного ядра на другое и все.