Понимание влияния оперативной памяти на общую производительность системы
Прежде чем я начну
Прежде чем я начну, я хочу отметить, что в этой статье делается несколько предположений. Во-первых, я предполагаю, что вы используете Windows 2000, Windows XP или Windows Server 2003 на 32-разрядном компьютере. Второе предположение, которое я делаю, заключается в том, что компьютер, о котором идет речь, относительно новый и не слишком маломощный. Информация в этой статье может не соответствовать другим версиям Windows, 64-разрядным системам или компьютерам, которые сильно устарели.
Windows и память
Одна из основных причин, по которой память является таким важным ресурсом, связана с тем, как Windows ее использует. Когда создавалась первая версия Windows, было трудно достать память. Память была чрезвычайно дорогой, и даже если вы могли себе это позволить, компьютеры в то время были очень ограничены в том, сколько памяти они могли принять. Даже совсем недавно, в середине 1990-х годов, память все еще была огромной проблемой. Например, мой первый компьютер Pentium имел 8 МБ ОЗУ и поддерживал максимум 64 МБ. Это может показаться смехотворно маленьким по сегодняшним меркам, но в то время цены на память до 50 долларов за МБ не были редкостью.
Высокие цены и ограниченные возможности материнских плат сделали память, мягко говоря, дефицитным товаром. Из-за этого Microsoft всегда разрешала Windows до некоторой степени полагаться на виртуальную память. Идея виртуальной памяти заключается в том, что, поскольку стоимость мегабайта места на жестком диске намного меньше, чем физическая оперативная память, Windows может использовать пространство на жестком диске для компенсации недостатков системной оперативной памяти.
Виртуальная память казалась идеальным решением на заре Windows, но у ее использования были некоторые недостатки, которые актуальны и сегодня. Одна из проблем с использованием виртуальной памяти заключается в том, что жесткий диск намного медленнее, чем физическая память. На самом деле время доступа к памяти измеряется в наносекундах или миллиардных долях секунды. С другой стороны, доступ к жесткому диску измеряется в миллисекундах или тысячных долях секунды.
Еще одна проблема с виртуальной памятью заключается в том, что ее нельзя использовать напрямую. Например, предположим, что страница памяти записывается в виртуальную память, а позже компьютеру требуется доступ к этой странице данных. Компьютер не может каким-либо осмысленным образом получить доступ к данным непосредственно с жесткого диска. Вместо этого страница данных должна быть скопирована в оперативную память, прежде чем компьютер сможет работать с данными. Этот процесс известен как пейджинг.
Как видите, подкачка замедляет работу системы, потому что компьютеру приходится останавливаться и ждать, пока данные будут скопированы с жесткого диска в память системы. Однако на самом деле подкачка на самом деле более неэффективна, чем вы могли бы сначала ожидать. Вот в чем проблема… как вы помните, причина, по которой у нас есть виртуальная память, в первую очередь заключается в том, что у компьютера недостаточно оперативной памяти для поддержки потребностей операционной системы. Если системная память заполнена, компьютер не может просто скопировать страницу данных с жесткого диска в оперативную память. Компьютеру некуда поместить данные. В этом случае операционная система должна найти страницу данных в ОЗУ, которая в данный момент не используется, а затем переместить эти данные на жесткий диск, чтобы освободить место для данных, которые в настоящее время необходимо переместить с жесткого диска на другой. память системы.
Если вы считаете, что пейджинг неэффективен, просто подождите; становится хуже. Пейджинг — это процесс, которым необходимо управлять. Компьютер должен использовать память, чтобы отслеживать использование памяти. Правильно, система должна выделить часть памяти для ведения записи о том, какие страницы находятся в ОЗУ, а какие — в виртуальной памяти. Точно так же система должна использовать значительное количество циклов ЦП для перемещения данных между физической ОЗУ и виртуальной памятью. Проще говоря, компьютеры работают намного быстрее, когда им не нужно беспокоиться о подкачке.
Хорошо, время для проверки реальности. В начале этой статьи я упомянул, что физическая память часто является обновлением, которое дает вам максимальную отдачу от затраченных средств. Надеюсь, теперь вы понимаете, что причина этого в том, что добавление физической оперативной памяти снижает зависимость Windows от виртуальной памяти, что, в свою очередь, освобождает ресурсы ЦП и диска, повышая эффективность работы компьютера. В этом случае вы можете предположить, что лучше всего добавить много оперативной памяти в вашу систему и полностью отключить использование виртуальной памяти.
Хотя это, безусловно, вариант, обычно не рекомендуется отключать использование виртуальной памяти Windows. Windows была разработана для использования виртуальной памяти, и, следовательно, операционная система ожидает, что виртуальная память будет ей доступна. Windows имеет тенденцию работать не так надежно, если вы отключите виртуальную память.
Однако вы можете предположить, что чем больше физической памяти вы помещаете в свою машину, тем меньше виртуальной памяти ей нужно. В конце концов, виртуальная память существует только для решения проблемы нехватки оперативной памяти, верно? Ну, тут все становится немного странно. Идея о том, что добавление дополнительной оперативной памяти в вашу систему снижает потребность машины в виртуальной памяти, верна лишь наполовину.
Вот в чем дело. Как правило, Microsoft рекомендует настраивать использование виртуальной памяти машины в зависимости от объема физической оперативной памяти, установленной на машине. В частности, Microsoft рекомендует, чтобы на вашей машине было в 1,5 раза больше виртуальной памяти, чем физической. Это означает, что если на вашей машине 512 МБ ОЗУ, Windows ожидает доступ как минимум к 768 МБ виртуальной памяти.
Теперь предположим, что вы решили, что наличие 512 МБ ОЗУ недостаточно, поэтому вы решили обновить машину, чтобы иметь в общей сложности 1 ГБ ОЗУ. При этом вы фактически увеличили требования Windows к виртуальной памяти. Теперь Windows ожидает, что на машине будет доступно 1,5 ГБ ОЗУ.
Хотя все не так, как кажется. То, что вы увеличили размер файла подкачки машины (файла, используемого в качестве виртуальной памяти), не означает, что машина использует файл подкачки более интенсивно. Обычно все наоборот. Установка большего объема памяти в машину снижает вероятность того, что Windows вообще придется что-либо выгружать на страницы. Даже если Windows по-прежнему в какой-то степени использует виртуальную память, установленная дополнительная память поможет гарантировать, что страницы, связанные с приложением, работающим на переднем плане, не выгружаются. Это помогает приложению быть более отзывчивым и повышает общую производительность пользователя.
Есть ли предел?
Как вы помните, в начале этой статьи я упомянул, что информация в этой статье применима только к 32-битным системам, а не обязательно к 64-битным. Правда в том, что даже 64-битные системы полагаются на виртуальную память, но 32-битные и 64-битные версии Windows используют совершенно разные модели памяти.
Тот факт, что 32-битные системы имеют только 32-битные данные для работы, означает, что они могут адресовать только до 4 ГБ ОЗУ. С другой стороны, 64-разрядная система теоретически может адресовать до 16 экзабайт ОЗУ (это более 16 000 000 ГБ ОЗУ). Однако на самом деле 64-битных систем, поддерживающих 16 экзабайт ОЗУ, очень мало, если они вообще есть. Создание машины, поддерживающей такой объем памяти, было бы чрезвычайно дорого. Чтобы компенсировать эту стоимость, многие производители налагают ограничения на адресное пространство ОЗУ, которые находятся где-то между ограничением в 4 ГБ для 32-разрядных машин и теоретическими 16 экзабайтами, которые должна быть способна адресовать 64-разрядная система. Большинство существующих 64-разрядных систем ограничивают физическую оперативную память где-то между 8 ГБ и 256 ТБ.
Так что же означает это ограничение в 4 ГБ для 32-разрядных машин под управлением операционной системы Windows? Windows предназначена для адресации полного пространства памяти объемом 4 ГБ. Windows разделяет 4 ГБ доступного адресного пространства памяти на два отдельных адресных пространства по 2 ГБ. Одно из адресных пространств размером 2 ГБ используется операционной системой Windows, а другое адресное пространство размером 2 ГБ используется для процессов пользовательского режима (приложений).
В качестве примечания: на самом деле есть способ изменить способ, которым Windows выделяет адресные пространства. Возможно, вы видели случайные развертывания Windows Server, в которых в файле BOOT.INI сервера использовался переключатель /3GB. Переключатель /3GB изменяет распределение памяти таким образом, что Windows выделяется только 1 ГБ адресного пространства, а процессам пользовательского режима выделяется 3 ГБ адресного пространства. Подобное разделение адресного пространства помогает Windows лучше управлять приложениями с высокой нагрузкой, такими как Exchange Server. Однако Windows не просто так настроена на 2 ГБ адресного пространства для операционной системы. Если вы используете переключатель /3GB, вы можете серьезно повлиять на способность Windows запускать несколько приложений одновременно. Кроме того, никогда не следует использовать переключатель /3GB на сервере Small Business Server или на контроллере домена.
Имея это в виду, возникает вопрос на миллион долларов: как реализовать виртуальную память в системе с 4 ГБ физической ОЗУ? К сожалению, мне не удалось получить прямой ответ от Microsoft, и на самом деле у меня нет машины с 4 ГБ ОЗУ, поэтому я основываю этот ответ на логике. Если у кого-то есть определенный ответ, пожалуйста, пришлите мне сообщение по электронной почте, потому что я хотел бы знать.
Мне кажется, что если Windows может выделить только 4 Гб адресного пространства, то не было бы смысла оставлять включенной виртуальную память на машине с 4 Гб ОЗУ. Даже если бы требовался небольшой объем виртуальной памяти, правило о том, что размер виртуальной памяти должен быть в 1,5 раза больше размера физической памяти, не применялось бы. Это будет означать, что машина будет иметь 6 ГБ виртуальной памяти и 4 ГБ физической памяти, всего 10 ГБ пространства памяти. Это может быть нормально для 64-битной системы, но не будет работать для 32-битной системы с ограничением адресного пространства в 4 ГБ.
Вывод
В этой статье я объяснил, что память может иметь огромное влияние на производительность системы. По мере увеличения физической памяти зависимость машины от виртуальной памяти уменьшается. Чем меньше компьютер должен зависеть от виртуальной памяти, тем эффективнее будет работать эта машина.