В итоге, вот насколько быстрее ваша память, чем жёсткий диск:
Системная память - в 37 раз быстрее.
L2 кэш процессора - в 82 раза быстрее.
L1 кэш процессора - в 283 раза быстрее.
Эти данные объясняют, почему в Vista осталось всего 6 мегабайт свободной памяти. Vista старается предельно заполнить каждый байт памяти данными, которые, по её мнению, могут понадобится в следующий момент. Vista запускает с низким приоритетом фоновые процессы и размещает их в неиспользованную системную память. У Microsoft для этих процессов есть даже причудливое маркетинговое название - SuperFetch: "В прошлых версиях Windows реакция системы могла быть неравномерной. Вы могли сталкиваться с медленной работой системы после загрузки, после нескольких быстрых переключений пользователей или просто после обеда. Также как большое количество углеводов могут вас замедлить после еды, так и ваш компьютер может начать тормозить по разным причинам. Когда вы активно не используете компьютер, то фоновые задачи, включая автоматические резервные копии и антивирусное сканирование, пользуются этим, чтобы исполнятся, в тот момент, когда они меньше всего вас могут потревожить. Эти фоновые задачи могут занимать место в системной памяти, которое использовали ваши приложения. После того, как вы снова начнёте использовать компьютер, потребуется какое-то время, чтобы повторно загрузить ваши данные в память, что снизит производительность.
SuperFetch понимает, какие приложения вы используете чаще всего, и загружает их в память заранее, таким образом, ваша система быстрее реагирует на запросы. SuperFetch использует интеллектуальную схему системы приоритетов, которая понимает, какие приложения вы используете чаще всего, и даже способна различить какие приложения, вероятно, вы будете использовать в разное время, например, на выходных, а не во время рабочей недели, так что компьютер готов делать то, что хотите делать вы. Windows Vista может также расположить по приоритетам ваши приложения в фоновых задачах, так что даже когда вы выводите свой компьютер из режима простоя, система практически моментально готова к работе".
Конечно, это не новый концепт. Но Vista обрабатывает системную память как кэш намного агрессивнее и эффективнее, чем предыдущие версии Windows. Как вы можете заметить из вышеуказанного скриншота менеджера задач, Windows XP совершенно не волнуется по поводу того, что свободен целый гигабайт памяти. С перспективы кэширования - это уму непостижимо. Vista на пределах возможного старается, как может, чтобы заполнить системную память.
Я являюсь приверженцем религии использования системной памяти в качестве кэша, но SuperFetch всё еще может иметь несколько побочных эффектов. Первое, что я заметил, это то, что было что-то не так, когда я запустил Battlefield 2 в Vista и подключился к сетевой игре. Battlefield 2 - достаточно серьезный потребитель ресурсов. Игра регулярно использует 1 Гб памяти на больших картах для 64-х игроков. Во время первых нескольких минут я заметил, что система работала слегка замедленно и постоянно были обращения к диску. Это было очень необычно, и абсолютно не похоже на поведение в XP. Как только вы загружаете карту и входите в игру - вся игра находится в памяти. Что в данный момент могло загружаться с диска? Оказлось, что SuperFetch увидела кучу освобождённой для игры памяти и продолжила заполнять свободную память фоновыми процессами с низким приоритетом. Обычно, это осталось бы незамеченным, но даже фоновый низкоприоритетный дисковый поток достаточно заметен, когда вы в онлайне играете в шутер да еще с 63 пользователями на разрешении 1600х1200.
Я абсолютно спокойно отношусь к тому, чтобы SuperFetch по-своему использовала мою системную память. Вопрос не должен стоять "Почему Vista использует всю мою память?", но "Какого чёрта предыдущие версии Windows используют мою память так неэффективно?". Я не знаю. Возможно, до того как 2 Гб памяти стали стандартом в большинстве ПК, правила были другие.
Чем меньше у меня свободной памяти, тем лучше - каждый байт памяти должен всё время работать в мою пользу. Однако я хочу, чтобы был способ сообщить SuperFetch, чтобы он приостанавливал свою работу, когда я играю.
Источник: codinghorror.com