вторник, 27 апреля 2010 г.

Windows Vista/7 «жрет» память. Так ли это?

Эта статья написана для "просвещения" заядлых виндузятников использующих всячески устаревшую ХП и категорически против переходна на более современные системы вроде Win7 и современных дистрибутивов Linux.

В интернете можно найти множество гневных комментариев в стиле «Да Windows 7 — полный отстой! Вы посмотрите, как она жрет память!» В доказательство приводятся скриншоты вроде того, что ниже, и опять же — все списывается на «криворуких индусских программистов». Давайте посмотрим, насколько эти наезды на программистов Microsoft обоснованы.

image

Допустим, вы приобрели компьютер с 8 гигабайтами памяти. Но неужели то, что используется от силы 1 гигабайт, а вся остальная память простаивает — так уж хорошо? С выходом Windows Vista и Windows 7 подход к использованию оперативной памяти кардинально поменялся: теперь ОС пытается использовать всю имеющуюся память максимально эффективно. В частности, в Windows Vista и Windows 7 появилась фича с названием SuperFetch.
 
Что же такое SuperFetch?
SuperFetch — это системный сервис, запускающийся внутри системного процесса svchost. Код его находится внутри DLL-ки %SystemRoot%\System32\Sysmain.dll. Этот сервис постоянно следит за тем, какие приложения запускает пользователь, и к каким исполняемым файлам и файлам данных они обращаются. Вся эта информация сохраняется в файлах с расширением *.db в каталоге %SystemRoot%\Prefetch. Для чего это все делается? А вот для чего: сервис SuperFetch, имея информацию о том, с какими приложениями пользователь работает наиболее часто — заранее подгружает в память соответствующий код и данные, и, когда пользователь запускает свое приложение — вся необходимая информация уже имеется в памяти, и запуск происходит намного быстрее — потому как нет необходимости считывать информацию с жесткого диска. Особенно это заметно на таких «тяжелых» приложениях, как семейство MS Office, функционал которых может быть «размазан» по десяткам и сотням exe-шников и dll-ок. SuperFetch настолько «умна», что может даже определять предпочтения пользователя в разные дни и время суток — например, то, что в рабочие дни он работает с Word и Excel, а по выходным — играется в Call of Duty, и, соответственно — подгружает в память нужные данные. Соответственно, эта область памяти помечается как «занятая», что и отображается в Task Manager'e, создавая впечатление «утечек памяти». Тем не менее, если вдруг запускается какое-то приложение, требующее выделения памяти — memory manager спокойно освобождает нужное пространство, а по завершении работы приложения память освобождается и данные подгружаются снова.
Если же какое-нибудь приложение, к примеру, завершает свою работу и освобождает память — то SuperFetch обращается к менеджеру памяти с просьбой подгрузить только что выгруженный код и даннные. Процесс этот происходит с маленькой скоростью и с низшим (Very Low) приоритетом, поэтому работа SuperFetch не приводит к падению производительности. Если вы, к примеру, отойдете покурить, а в это время запустится фоновый процесс, которому необходима память (например — антивирусная проверка), то код и данные приложения, с которым вы работали — возможно будут выгружены из памяти. Благодаря же SuperFetch — к тому моменту, когда вы вернетесь с перекура — данные вашего активного приложения будут полностью или частично подгружены обратно в память.
Более того, SuperFetch может обрабатывать режимы гибернации, «спящий режим» и смены пользователя (fast user switching). К примеру, если система уходит в гибернацию — то SuperFetch сохраняет в файл hiberfil.sys код и данные тех приложений, которые, по его мнению, скорее всего будут использоваться после выхода из гибернации. Как это «мнение» формируется? Очень просто — Большой БратSuperFetch смотрит за тобой, и за тем, что ты запускал после выхода из предыдущих гибернаций, и основываясь на этом — может предположить, что в следующий раз при выходе из гибернации ты наверняка запустишь «аську» и откроешь свой любимый браузер, чтобы почитать «хабрахабр». Ну а через часок-другой — откроешь Visual Studio, потому что проект горит, а сроки сдачи — «вчера».

Можно понаблюдать за работой SuperFetch с помощью того же Task Manager'a:

image

Если какое-то время поюзать Windows Vista/7, то можно заметить, что объем свободной памяти уменьшается. Это происходит из-за того, что SuperFetch стандартный систмный кэш Windows пытаются утилизировать доступную память для кэширования данных с диска. К примеру, если сразу после загрузки Windows запустить Task Manager — видно, что Free Memory — уменьшается, а Cached Memory — наоборот увеличивается. Если же запустить какую-нибудь «жадную до памяти» программу, или же просто запустить копирование большого файла — Free Memory увеличится и график «Physical Memory Usage» резко упадет, потому что система будет освобождать память для запущенного приложения, но потом начнет потихоньку расти — потому что собственно приложение начнет эту память забирать. Однако, со временем SuperFetch будет подгружать в память недавно выгруженные данные, поэтому значение Cached Memory будет расти, а Free Memory — уменьшаться.


По материалам статьи Марка Руссиновича «Inside the Windows Vista Kernel»

Подобная фича есть не только в Windows. В частности, она есть и в Linux, гораздо раньше и называется Preload.

Sapphire Radeon HD 5970 Toxic: игровая видеокарта с 4 Гб памяти

Компания Sapphire сообщила сегодня о начале поставок игровой видеокарты Radeon HD 5970 Toxic с 4 Гб памяти.
Как считают разработчики продукта, на сегодня это самый высокопроизводительный ускоритель на рынке. В основу карты положены два выполненных по нормам 40-нанометровой технологии процессора RV870. Причём карта поставляется в изначально разогнанном виде: тактовые частоты ядра чипов и памяти GDDR5 равны соответственно 900 и 1 200 МГц против стандартных 725 и 1 000 МГц.
Новинка насчитывает 3 200 потоковых процессоров и 160 текстурных блоков; поддерживаются программный интерфейс DirectX 11 и технология ATI Eyefinity, позволяющая формировать изображение на трёх дисплеях, для подключения которых есть разъёмы Dual-Link DVI и Mini DisplayPort.
Видеокарта оснащена системой охлаждения компании Arctic Cooling, могущей похвалиться никелированными тепловыми трубками и тремя вентиляторами на сдвоенных шарикоподшипниках с низким уровнем шума.
Подробнее об Radeon HD 5970 Toxic можно узнать на сайте производителя.

О 
цене Radeon HD 5970 Toxic компания Sapphire умалчивает.
















О цене Radeon HD 5970 Toxic компания Sapphire умалчивает.

Самый простой способ выучить C++ за 21 день