Тарифы        04.07.2019   

Как оптимизировать свой процессор: изменить и включить L2 и L3 своих кэшей процессора. Делиться не всегда полезно: оптимизируем работу с кэш-памятью

Как известно, компьютер — не телевизор, и желание усовершенствовать его возникает уже на второй день после покупки. Первое, что приходит в голову — оптимизировать Windows. Благо, материалов на эту тему предостаточно как в Web, так и на страницах компьютерных изданий. Но стоит ли вот так сразу набрасываться на систему и всегда ли можно получить положительный результат? Дабы сберечь нервные клетки, а в некоторых случаях и деньги рядовых пользователей ПК, я предлагаю разобраться в некоторых вопросах работы Windows более подробно. Итак, начнём.

Никогда, ни при каких обстоятельствах не производите изменений в реестре и системных файлах Windows, не имея резервной копии последних. Существует множество способов резервирования системы как стандартными средствами Windows, так и при помощи специальных программ. Этот вопрос неоднократно освещался на страницах компьютерной прессы и я надеюсь, что у каждого читателя уже имеется необходимый опыт в области резервирования реестра. А тем, кто пожелает создать свою программку backup, не изучая языки программирования, предлагаю прочитать статью, где подробно описано создание командных файлов для резервирования и восстановления системы. Будем считать, что резервная копия у Вас уже имеется, и мы можем продолжить наши исследования.

Оптимизация кэша жёсткого диска.

По мнению многих специалистов в области ОС Windows, размер кэша должен быть фиксированным и полностью зависит от объема оперативной памяти, установленной на компьютере. Мол, Windows не умеет работать с кэшем и тратит на это слишком много оперативки. Предлагаются даже стандартные схемы для определения размера кэша, исходя из размера памяти. Всё это прописывают в разделе файла system.ini в виде MinFileCache = размер в кб и MaxFileCache = размер в кб. Такой подход действительно позволит сэкономить некоторый объем памяти, но может привести к общему замедлению работы системы, особенно на домашних компьютерах, где в течение дня могут выполняться десятки самых разных программ, как мультимедийных, так и офисных и каждая из них требует разного размера кэша и оперативной памяти. Вряд ли Вам доставит удовольствие редактировать system.ini и перезагружать компьютер перед каждым запуском новой программы.

Универсальный же размер дискового кэша, на мой взгляд, возможность чисто теоритическая, так как в одних случаях всё равно будет наблюдаться избыток кэша и недостаток оперативки, в других — наоборот. А завтра сынишка притащит какую-нибудь игру с нестандартным использованием ресурсов памяти и system.ini снова придется редактировать? Современные версии Windows способны выполнять код программы прямо из кэша, т.е. кэш перестал быть промежуточным звеном между винчестером и памятью, а является ни чем иным, как частью оперативной памяти. Так что же мы, в таком случае, пытаемся ограничить? Вывод: Ограничение размера кэша жёсткого диска в большинстве случаев приводит к понижению производительности системы. Исключение составляют разве что компьютеры, выполняющие сходные задачи, в основном связанные с передачей больших объемов данных. Здесь оптимизация размера кэша действительно поможет добиться максимальной производительности системы.

Виртуальная память.

Большинство советов по этому поводу появилось на свет во времена победного шествия Windows 95, когда новый графический интерфейс потребовал дополнительной и достаточно дорогой оперативной памяти. Почему же эти древние советы перетаскиваются за седую бороду на новые платформы? Ведь современные версии Windows работают с виртуальной памятью абсолютно иначе. Итак, что же нам предлагают сотворить с файлом подкачки? Да всё то же, что и для древних окон, а именно: сделать его размер фиксированным и равным 3–4 размерам оперативной памяти. Необходимость этих действий объясняется обычно тем, что OS затрачивает чуть ли не целую вечность на изменение размера файла подкачки, данные излишне фрагментируются и тем самым тормозится работа системы.

Предвижу всеобщее негодование, но всё же берусь утверждать, что подобные объяснения если не полная чепуха, то, по крайней мере, давно потеряли свою актуальность. Лишив Windows возможности самостоятельно определять необходимый размер файла подкачки, Вы рискуете получить сообщение о невозможности запуска определённых программ. Риск увеличивается, если используется многозадачность Windows. К примеру, запросто может возникнуть ситуация, когда Вам будет необходима одновременная работа с Photoshop, текстовым процессором, HTML редактором и ещё каким-нибудь аниматором. Где гарантия, что в это время Вам не понадобится открыть графический файл размером в несколько десятков Мб для последующего редактирования? Представьте себе, что в этот момент произойдёт сбой системы из за того, что Windows не сможет увеличить размер виртуальной памяти, а результаты своих трудов Вы по какой-то причине не сохранили?! Это уже не смешно. Хочу обратить внимание уважаемых читателей на следующий факт. Windows изменяет размер файла подкачки динамически и в основном тогда, когда ресурсы системы относительно свободны и обращение к диску не вызывает никаких неудобств.

После завершения текущей задачи, размер файла подкачки остаётся неизменным в течение некоторого периода времени. Если в это время Вы пойдёте приготовить себе очередную чашечку кофе, то даже не заметите никаких действий со стороны OS, ну а если предпочтёте продолжить работу, то вряд ли будете сидеть сложа руки эти 2,5 минуты, а запустите очередную программу. Кроме того, потребность в виртуальной памяти для современных программ уменьшена в несколько раз благодаря использованию так называемого принципа прямого считывания (Linear Executable). Такие программы не загружаются в память полностью, а сопоставляют свой код страницам памяти и производят загрузку необходимых библиотек по мере необходимости. Таким образом обеспечивается наиболее полное и оптимальное использование как оперативной, так и виртуальной памяти. Сомнительными являются и предположения, что фиксация размера файла подкачки позволит избежать излишней фрагментации данных. Ведь внутри самого файла данные всё равно будут фрагментированы, возможно, даже в большей степени, чем при обычном использовании. Что касается переноса файла подкачки в начало диска или на отдельный физический диск, то такие методы действительно имеют право на жизнь. Но эффект от этого Вы едва ли сможете заметить.

Для осуществления подобных мероприятий понадобятся специальные дорогостоящие утилиты вроде знаменитого пакета господина Нортона, которые неизбежно пропишут в автозагрузку свои программы, тем самым компенсируя улучшенную виртуальную память уменьшением физической. Чтобы избежать этого, придётся оптимизировать уже сами утилиты. Кроме этого, работа с утилитами требует хотя бы элементарного понимания того, что происходит при их использовании. Особенно опасны автоматизированные функции. Мне не раз приходилось восстанавливать системы после использования Norton Utilities. Причина до смешного проста - неправильные региональные настройки. Дело в том, что программа Norton Disk Doctor, входящая в состав утилит считывает код страны. И если на Вашей машине установлена русская версия Windows, а региональные настройки, скажем, США, то программа посчитает все русскоязычные имена файлов и папок за ошибку. Результат, я думаю, понятен. И это всего лишь незначительная часть возможных проблем. Вывод: Современные версии Windows не нуждаются в оптимизации виртуальной памяти. А если Вы всё же решите переместить своп файл в начало диска или на отдельный диск, то не забудьте изучить цены на лицензионные утилиты + дополнительный жёсткий диск. На мой взгляд, линейка памяти обойдётся значительно дешевле.

Интернет и модем.

Продвинутые пользователи Windows советуют добавить в раздел реестра HKEY_LOCAL_MACHINE\ System\ CurrentControlSet\ Services\ Class\ NetTrans\ 0000 (может быть 0001 и т.д.) некоторые параметры, оказывающие прямое влияние на быстродействие модема. Главным параметром является MaxMTU. Напомню, что MTU (Maximum Transmition Unit) - это максимальный размер пакета данных, который может быть передан по сети за один физический фрейм. Наиболее оптимальным считается значение MaxMTU=576. Но простите, оптимальным - то для чего? Чтобы ответить на этот вопрос, я предлагаю провести маленький эксперимент. Давайте воспользуемся гостевым подключением к сети Интернет, предоставляемым одним из самых популярных столичных провайдеров — Svit Online. Для подключения к удалённому компьютеру будем использовать порядком подзабытую программу Hyper Terminal, номер дозвона 490-0-490, логин- svit, пароль - online. И что же мы увидим после ввода пароля?

Удалённый компьютер сообщает нам присвоенный IP адрес и… MTU=1500! Теперь Вам ясно, для чего значение MaxMTU=576 является оптимальным? Не иначе, как для замедления передачи данных. Для оптимальной передачи, оказывается, нужно исходить из значения 1500. Я не буду подробно останавливаться на расчётах других параметров, таких, как MSS, TTL, так как считаю все эти мероприятия далеко не безобидными, учитывая стоимость услуг провайдеров и поминутную оплату городского телефона. Windows прекрасно справляется с задачей автоматического определения MTU сама, без нашего вмешательства. Лучше сосредоточить своё внимание на повышении качества линии связи, хотя бы в пределах собственной квартиры. Чаще причиной ухудшения связи являются разного рода скрутки, плохие контакты и множество параллельных телефонных аппаратов, а не железо и soft. Но это-тема для отдельного разговора.

Участь быть оптимизированной постигла и Windows Me. Чего тут только не предлагают: и удалить PC Health, и отключить System Restore, и избавиться от Media Player 7 с Movie Maker’ом, и заменить IE 5,5 более старой версией, и даже ввести реальный режим DOS. И всё это только для того, чтобы установить новую операционку на ПК с Pentium 133 МГц и 32 Мб ОЗУ. Но тогда что от неё останется? О какой платформе Windows Me идёт речь? Ведь даже если Вам удастся поместить двигатель от «Mersedes» в «Запорожец», он от этого «Mesredes’ом» не станет. В результате — дополнительные сбои, неудобство в работе, а чаще — format C:. Вот тут то пользователь и поверит рассказам о легендарной глючности Windows. Точнее, не поверит, а проверит на собственном горьком опыте.

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

Мы все «немного читали» об оптимизации работы с памятью, и у нас отложилось, что полезно, когда «кэш остается горячим», то есть данные, к которым часто обращаются потоки, должны быть компактными и находиться в ближайшем к процессорному ядру кэше. Все так, но когда дело доходит до того, чтобы делиться доступом, потоки становятся злейшими врагами [производительности], а кэш не просто горячий, он аж «горит адским огнем » – такая во круг него разворачивается борьба.

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

Рассмотрим случай, который хорошо описан в Intel64 and IA-32 Architectures Optimization Manual , однако про который программисты часто забывают, работая со массивами структур в могопоточном режиме. Они допускают обращение (с модификацией) потоков к данным структур, расположенных очень близко друг к другу, а именно в блоке, равном длине одной кэш-линии (64 байт). Мы это называем Сache line sharing . Существует два типа разделения кэш-линий: true sharing и false sharing .
True sharing (истинное разделение) – это когда потоки имеют доступ к одному и тому же объекту памяти, например, общей переменной или примитиву синхронизации. False sharing (от лукавого) – это доступ к разным данным, но по каким-то причинам, оказавшимся в одной кэш-линии процессора. Сразу отметим, что и тот, и другой случай вредит производительности из-за необходимости аппаратной синхронизации кэш-памяти процессора, однако если первый случай часто неизбежен, то второй можно и нужно исключать.

Почему страдает производительность, поясним на примере. Допустим, мы обрабатываем последовательность структур данных, находящихся в очереди, в многопоточном режиме. Активные потоки один за одним вынимают следующую структуру из очереди и каким-либо образом обрабатывают ее, модифицируя данные. Что может произойти на аппаратном уровне, если, например, размер этой структуры небольшой и не превышает нескольких десятков байт?


Условия для возниконовения проблемы:
Два или более потока пишут в одну кэш-линию;
Один поток пишет, остальные читают из кэш-линии;
Один поток пишет, в остальных ядрах стработал HW prefetcher.

Может оказаться, что переменные в полях разных структур так расположились в памяти, что будучи считанными в L1 кэш процессора, находятся в одной кэш-линии, как на рисунке. При этом, если один из потоков модифицирует поле своей структуры, то вся кэш-линия в соответствии с cache coherency протоколом объявляется невалидной для остальных ядер процессора. Другой поток уже не сможет пользоваться своей структурой, несмотря на то, что она уже лежит в L1 кэше его ядра. В старых процессорах типа P4 в такой ситуации потребовалась бы долгая синхронизация с основной памятью, то есть модифицированные данные были бы отправлены в основную память и потом считаны в L1 кэш другого ядра. В текущем поколении процессоров (кодовое имя Sandy Bridge) синхронизационным механизмом используется общий кэш третьего уровня (или LLC – Last Level Cache), который является инклюзивным для подсистемы кэш-памяти и в котором располагаются все данные, находящиеся как в L2, так и в L1 всех ядер процессора. Таким образом, синхронизация происходит не с основной памятью, а с LLC, являющегося частью реализации протокола механизма когерентности кэшей, что намного быстрее. Но она все равно происходит, и на это требуется время, хотя и измеряемое всего несколькими десятками тактов процессора. А если данные в кэш-линии разделяются между потоками, которые выполняются в разных физических процессорах? Тогда уже придется синхнонизироваться между LLC разных чипов, а это намного дольше - уже сотни тактов. Теперь представим, что программа только и занимается тем, что в цикле обрабатывает поток данных, получаемых из какого-либо источника. Теряя сотни тактов на каждой итерации цикла, мы рискуем «уронить» свою производительность в разы.

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

Потоковая функция в цикле пробегает по двум массивам float a[i] и b[i], перемножает их значения по индексу массива и складывает в локальные переменные потоков localSum. Для усиления эффекта эта операция делается несколько (ITERATIONS) раз.

< ITERATIONS; j++){ for (i = tid; i < MAXSIZE; i+= NUM_PROCS){ a[i] = i + a[i] * b[i]; localSum += a[i];}} }

Беда в том, что для разделения данных между потоками выбран способ перемежевания индексов цикла. То есть, если у нас работают два потока, первый будет обращаться к элементам массивов a и b, второй - к элементам a и b, первый - a и b, второй - a и b, и так далее. При этом элементы массива a[i] модифицируются потоками. Не трудно видеть, что в одну кэш-линию попадут 16 элементов массива, и потоки будут одновременно доступаться к соседним элементам, «сводя с ума» механизм синхрониции кэшей процессора.

Самое неприятное в том, что мы даже не заметим по работе программы существование этой проблемы. Она будет просто работать медленнее, чем может, вот и все. Как оценить эффективность программы с помощью профилировщика VTune Amplifier XE, я уже описывал в одном из постов на Хабре. Используя профиль General Exploration , о котором я там упоминал, можно увидеть описываемую проблему, которая будет «подсвечена» инструментом в результатах профилировки в колонке Contested Access . Эта метрика как раз и измеряет соотношение циклов, потраченых на синхронизацию кэшей процессора при их модификации потоками.

Если кому-то интересно, что стоит за этой метрикой, то во время комплексной профилировки инструмент среди других аппаратных счетчиков собирает и данные счетчика:
MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM_PS – Точный счетчик(PS) выполненной(RETIRED) операции(OUPS) загрузки(LOAD) данных(MEM), которые оказалиcь(HIT) в LLC и модифицированны(M). «Точный» счетчик означает, что данные, собранные таким счетчиком в семплировании, относятся к указателю инструкции (IP), следующему после инструкции, которая была той самой загрузкой, приведшей к синхронизации кэшей. Набрав статистику по этой метрике, мы можем с определенной точностью указать адрес инструкции, и, соответственно, строку исходного кода, где производилось чтение. VTune Amplifier XE может показать, какие потоки читали эти данные, а дальше мы уже должны сами сориентироваться, как реализован многопоточный доступ к данным и как исправить ситуацию.

Относительно нашего простого примера ситуацию исправить очень легко. Нужно просто разделить данные на блоки, при этом количество блоков будет равно количеству потоков. Кто-то может возразить: если массивы достаточно большие, то блоки могут просто не вместиться в кэш, и данные, загружаемые из памяти для каждого потока, будут вытеснять друг друга из кэша. Это будет верно в случае, если все данные блока используются постоянно, а не один раз. Например, при перемножении матриц мы пройдемся по элементам двумерного массива сначала по строкам, потом по столбцам. И если обе матрицы не помещаются в кэш (любого уровня), то они буду вытеснены, а повторный доступ к элементам потребует повторной загрузки из следующего уровня, что негативно влияет на производительность. В общем случае с матрицами применяется модифицированное перемножение матриц поблочно, при этом матрицы разбиваются на блоки, которые заведомо помещаются в заданную кэш-память, что значительно увеличивает производительность алгоритма.

Int work(void *pArg) { int j = 0, i = 0; int tid = (int) pArg; for (j = 0; j < ITERATIONS; j++){ chunks = MAXSIZE / NUM_PROCS; for (i = tid * chunks; i < (tid + 1) * chunks; i++){ a[i] = i + a[i] * b[i]; localSum += a[i];}} }

False sharing

No False sharing

Сравнение доступа потоков к элементам массива в случае False sharing и в исправленном коде

В нашем простом случае данные используются всего один раз, и даже если они будут вытеснены из кэш-памяти, они нам уже не понадобятся. А о том, чтобы данные обоих массивов a[i] и b[i], расположенные далеко друг от друга в адресном пространстве, вовремя оказались в кэше позаботится аппаратный prefetcher – механизм подкачки данных из основной памяти, реализованный в процессоре. Он отлично работает, если доступ к элементам массива последовательный.

В заключение, можно дать несколько общих рекомендаций, как избежать проблемы потери эффективности вычислений из-за разделения кэша между потоками. Из самого названия проблемы можно понять, что следует избегать кодирования, где потоки обращаются к общим данным очень часто. Если это true sharing мьютекса потоками, то возможно существует проблема излишней синхроницации, и следует пересмотреть подход к разделению ресурса, который защещен этим мьютексом. В общем случае старайтесь избегать глобальных и статических переменных, к которым требуется доступ из потоков. Используйте локальные переменные потоков.

Если вы работаете со структурами данных в многопоточном режиме, уделите внимание их размеру. Используйте «подкладки» (padding), чтобы нарастить размер структуры до 64 байт:
struct data_packet { int address; int data; int attribute; int padding; }
Выделяйте память под структуры по выровненному адресу:
__declspec(align(64)) struct data_packet sendpack
Используйте массивы структур вместо структур массивов:
data_packet sendpack;
вместо
struct data_packet { int address; int data; int attribute; }
Как видно, в последнем случае потоки, модифицирующие одно из полей, приведут к запуску механизма синхронизации кэш-памяти.

Для объектов, аллоцируемых в динамической памяти с помощью malloc или new, cоздавайте локальные пулы памяти для потоков, либо используйте параллельные библиотеки, которые сами умеют это делать. Например, библиотека TBB содержит масштабируемые и выравнивающие аллокаторы , которые полезно использовать для масштабируемости многопоточных программ.

Ну и заключительный совет: не стоит бросаться решать проблему, если она не сильно влияет на общую производительность приложения. Всегда оценивайте потенциальный выигрыш, который вы получите в результате затрат на оптимизацию вашего кода. Используйте инструменты профилировки, чтобы оценить этот выигрыш.

P.S. Попробуйте мой примерчик, и расскажите, на сколько процентов увеличилось быстродействие теста на вашей платформе.

Теги: Добавить метки

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

Тем не менее, если вы будете «правильно» записывать данные в память и удалять оттуда ненужную информацию, ничто не сможет помешать вам насладиться высокими скоростями работы оперативной памяти:

  • С помощью утилиты Dataram RAMDisk вы можете использовать часть вашей оперативной памяти в качестве жесткого диска.
  • В нашей пошаговой инструкции ниже «Настраиваем бесплатный RAMDisk » мы показываем, как вы можете создать и настроить небольшого размера флеш-диск в оперативной памяти. О том, как вы можете использовать такой диск, например, для хранения кэша браузера Firefox, мы расскажем в нижеприведенной инструкции «Размещаем в RAM-диске кэш браузера ».
  • С помощью бесплатной программы CleanMEM вы можете автоматизированно или вручную удалять более ненужные данные из вашей оперативной памяти.

Увеличиваем размеры оперативной памяти

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

  • О том, как идентифицировать тип используемой на вашем компьютере оперативной памяти и узнать о количестве свободных слотов, мы рассказываем в . Так вы можете узнать, какую оперативную память и в каком количестве можно установить в вашем случае.
  • Инструкцию на тему того, как вы можете установить новую оперативную память, мы тоже вам даем в .
  • В случае с ноутбуками замена отдельных компонент может оказаться несколько более сложной. Однако, именно к жестким дискам и модулям памяти, как правило, вы можете получить доступ через специальные «сервисные крышки», открывающиеся без необходимости в полной разборке корпуса. В этой статье мы даем вам .
  • Обратите внимание на условия гарантии на ваш компьютер - не потеряется ли она при вскрытии корпуса. В том случае, если у вас есть сомнения, для установки компонент или их замены лучше будет привлечь специалиста.

Размещаем в RAM-диске кэш браузера:

Настраиваем бесплатный RAMDisk

1 Бесплатная утилита


С помощью Starwind RAMDisk вы можете бесплатно настроить под Windows один или несколько RAM-дисков. Единственное ограничение: размеры каждого такого RAM-диска не могут превышать 1 Гбайт.

2 Может понадобиться драйвер


Windows должна думать, что в случае с RAM-диском речь идет как бы о жестком диске. Этого программное обеспечение добивается с помощью нового драйвера.

3 Обзор RAM-дисков


Windows может работать даже с несколькими RAM-дисками. Утилита представит вам обзор всех имеющихся в системе RAM-дисков.

4 Добавляем RAM-диск


Для добавления и настройки нового RAM-диска кликните на пункт «Add Device».

5 При настройке поможет ассистент


Сразу же вам на помощь приходит «ассистент», который поможет пройти самые важные шаги.

6 Ограничение в 1 Гбайт


В случае со свободно распространяемой версией программы размеры RAM-диска не могут превышать 1 Гбайт. Тем не менее, в большинстве случаев этого должно быть достаточно. Для разных действий вы можете использовать разные RAM-диски. Важно: обязательно поставьте галочку перед «Automount this Device», чтобы при каждой перезагрузке системы RAM-диск появлялся в «Проводнике» автоматически.

На многих сайтах компьютерной тематики обязательно найдутся ссылки на программы, которые обещают в один клик улучшить работу нашего компьютера и превратить старенький медленный компьютер в скоростной «космолет». о том, что подобные «однокликовые» оптимизаторы как минимум бесполезны, и что к вопросу оптимизации необходимо подходить совершенно иначе — более продуманно и уж никак не с инструментом вида «в один клик». Также встречаются и оптимизаторы оперативной памяти, которые в линейке бесполезных утилит стоят особо высоко, потому что они не только не приносят никакой пользы, но и снижают скорость работы вашего компьютера. И сейчас я объясню почему.

На чем основана популярность оптимизаторов памяти?

Популярность оптимизаторов памяти основывается на нашем убеждении, что малый объем свободной памяти — это очень плохо. Хотя на самом деле никакой трагедии в этом нет, потому что это хорошо! Это может показаться странным, но это так.

Что такое «свободная память»?

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

Что такое кэш?

Кэш — это данные, которые использовались системой или программами, и которые были зарезервированы в оперативной памяти на тот случай, если они еще понадобятся. Данные резервируются именно в памяти потому, что скорость чтения из оперативной памяти в разы выше, чем скорость чтения с жесткого диска. В случае необходимости система снова использует эти данные и без задержек выведет результат пользователю на экране. Если бы эти данные каждый раз резервировались на жестком диске, то скорость их загрузки была бы значительно ниже, что сильно бы замедляло скорость работы системы в целом и создавало повышенную нагрузку на жестких диск.

В качестве аналогии можно привести пример с кэшем браузера, который хранится на жестком диске компьютера (графика, стили, скрипты, флэш-анимация и прочее). Загружать все эти данные из интернета для каждой отделной страницы было бы слишком расточительно и занимало бы слишком много времени. Потому все современные браузеры резервируют эти «тяжелые» данные на жестком диске и подгружают только основной контент, что в разы ускоряет отображение страниц для пользователя. Подобный принцип используется и при работе системного кэша, который хранится в оперативной памяти для быстрого доступа к данным.

Поэтому стоит менять свои взгляды на память: в новых операционных системах понятие «свободная память» есть синоним бездарно пропадающих без дела ресурсов. Это всего лишь резерв, чтобы система могла выдать его очередному приложению на некоторое время, пока освобождается занятая память. Windows сама освободит нужный приложению объем оперативной памяти от данных кэша или перебросит данные редко используемых программ в файл подкачки.

Заметьте, делает все это операционная система самостоятельно, без помощи каких-либо оптимизаторов. Тогда зачем нужны такие «очистители памяти» и «бустеры»?

Как работают утилиты по освобождению памяти?

Основных принципов их работы всего два:

  • Они используют функцию EmptyWorkingSet из API Windows. Эта функция делает принудительный сброс неиспользуемых данных из памяти в файл подкачки на жестком диске компьютера. Визуально в диспетчере задач количество свободной памяти увеличится, но станут ли быстрее работать программы? Однозначно — нет. Потому что скорость чтения с диска значительно ниже, чем скорость чтения из оперативной памяти компьютера.
  • Второй метод «очистки памяти» — приложение-оптимизатор требует у системы под себя достаточно много памяти. Система сама принудительно освобождает память от кэша и неиспользуемых данных. Но минут через десять Windows поймет, что программе-оптимизатору эта память не требуется и отдаст ее обратно под кэш и данные других программ.

Что делать, чтобы реально помочь своей системе с оптимизацией памяти?

Ответ банален — просто не мешайте работать Windows и следуйте простым советам.

  • Старайтесь не запускать слишком много приложений без дела. Есть пользователи, которые после редактирования текста не закрывают окно Word. А документов за день они редактируют много и все они висят в фоне и «съедают» память.
  • Удалите ненужные приложения с компьютера, особенно если они «висят» в автозагрузке.
  • Добавьте память физически, если ваш компьютер это позволяет. Стоимость оперативной памяти сейчас весьма демократична, а эффект от увеличения памяти вы увидите сразу!

Все сторонние «оптимизаторы» и «бустеры» памяти как минимум бесполезны, а как максимум замедлят работу системы, показав кратковременное освобождение небольшого количества оперативной памяти.

Windows был построен для использования на максимум машин с разными конфигурациями, и поэтому она обычно не оптимизирована для вашего компьютера и использования. Я также приглашаю вас, чтобы прочитать наши другие статьи статьи об оптимизации ваших компьютеров, если это уже сделано. «Не оптимизации», это на уровне процессора. Наши процессоры имеют кэшей, которые позволяют им положить в памяти некоторые данные для ускорения восстановления своих данных в будущем: http://fr.wikipedia.org/wiki/M%C3%A9moire_cache по словам процессоров, вы можете иметь 2 или 3 уровнях ()) кэша. По умолчанию Windows использует кэш L2 (Level 2) 256 Кбайт, который означает, что если ваш процессор может использовать больше пространства, (что обычно происходит и будет больше времени будет проходить с учетом постоянной эволюции процессоров), ограниченный Windows возможности вашего процессора! И я даже не говорить не кэш L3, потому что Windows не использовать его, это как если вы не имеете этот третий кэш-память является крупнейшим из 3 уровней процессор!

Его процессор информация:

Первое, что сделать это знать возможности CPU (процессор), это:

  • Скачать CPU – Z:-http://www.cpuid.com/softwares/cpu-z.html
  • Установите его и открыть его
  • Чтобы увидеть различные уровни кэша, у вас есть 2 возможности: 1 вкладку Нижний правый или 2

Для увеличения L2 кэша в Windows:

  1. В меню «Пуск», найдите и откройте «regedit» (база данных реестра) (как в любой манипуляции в базе данных реестра, рекомендуется выполнить резервное копирование его компьютера в случае возникновения проблем)
  2. Дважды щелкните на HKEY_LOCAL_MACHINE > система > CurrentControlSet > управления > Менеджер сессий > Управление памятью
  3. в правом окне вы должны найти ключ с именем «SecondLevelDataCache», щелкните правой кнопкой мыши на нем и нажмите «Изменить»
  4. Нажмите кнопку «Десятичная»
  5. И замените значение true вашего процессора. В моем случае, CPU – Z говорит мне 2 x 256, так что положить в моем случае значение 512.
  6. Нажмите кнопку «ОК»

Чтобы включить кэш L3 в Windows:

  1. Шаг 1-2 так же, как L2 и поэтому прибывают в том же окне на шаге 3.
  2. В свободной зоне в правом окне, щелкните правой кнопкой мыши и нажмите на «Новый» > «DWORD 32 бита»
  3. Переименуйте новый ключ на «ThirdLevelDataCache» (без кавычек)
  4. Щелкните правой кнопкой мыши на этот новый ключ переименован и нажмите «Изменить»
  5. Нажмите кнопку «Десятичная»
  6. Измените значение, что ваш процессор обозначается CPU – Z: в моем случае, я 3MBytes, так что я должен сделать 3 x 1024, что означает, что я должен положить 3072 как значение.
  7. Нажмите кнопку «ОК».

Перезагрузите компьютер. 1 после перезагрузки, ваш компьютер может быть немного медленнее, чем обычно, что из того факта, что Windows необходимо включить эти новые данные, но позже, ваш компьютер должен быть быстрее и мощнее! Лично я не медленно во время перезагрузки, 1-й, но я заметил улучшение в скорости программ, особенно на уровне multi-tasking, несмотря на тот факт, что ВОЗ уже SSD на моем компьютере! Примечание: этот трюк не разгона, и поэтому нет никакого риска перегрева, который может быть найден в оверклокинга.