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

Что происходит при нехватке

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

Разница в порядках величин здесь решает всё. Обращение к оперативной памяти занимает десятки наносекунд, обращение к твердотельному накопителю — десятки микросекунд, к механическому диску — миллисекунды. Между памятью и SSD разница примерно в тысячу раз, между памятью и жёстким диском — в сотни тысяч. Когда система входит в режим постоянного вытеснения и подкачки, она тратит на ожидание диска больше времени, чем на вычисления. Внешне это выглядит как замирания интерфейса, рывки в игре при подгрузке локации, отклик на клик через несколько секунд. Загрузка процессора при этом низкая — он ждёт.

Ключевое свойство этого перехода — он резкий. Пока объёма хватает, добавление гигабайтов не даёт ничего; как только не хватает, нехватка одного гигабайта роняет отзывчивость несопоставимо сильнее, чем могла бы дать любая прибавка частоты. Поэтому объём и скорость находятся не на одной шкале: сначала закрывается объём, и только потом имеет смысл разговор о частоте и таймингах.

Как оценить потребность по характеру задач

Полезнее считать не по типу пользователя, а по классам нагрузки. Первый класс — фоновая среда: сама операционная система, драйверы, кэш файловой системы, мессенджеры, браузер с десятком вкладок. Это несколько гигабайт, и цифра растёт от версии к версии, потому что браузерные вкладки давно стали полноценными приложениями со своими процессами.

Второй класс — рабочее приложение с ограниченным набором данных: офисные документы, разработка средних проектов, лёгкая обработка фотографий. Здесь потребление предсказуемо и обычно укладывается в единицы гигабайт сверх фона.

Третий класс — приложения, чей аппетит определяется размером обрабатываемых данных, а не самим приложением. Работа с видео высокого разрешения, крупные растровые композиции со множеством слоёв, трёхмерные сцены, виртуальные машины, локальные базы данных, компиляция больших кодовых баз в много потоков. У этого класса потребность растёт линейно с размером задачи, и никакого универсального числа для него не существует: гигабайты считают от объёма материала.

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

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

Когда объём перестаёт давать выигрыш

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

Именно на этом участке начинает работать скорость. Когда объёма достаточно, разница между медленным и быстрым комплектом проявляется в задачах, где процессор постоянно обращается к памяти за новыми данными: встроенная графика, обработка потоков, часть игровых сцен с большим числом объектов. Порядок выигрыша здесь — единицы и первые десятки процентов, а не кратный разрыв, который даёт устранение подкачки.

Есть и третий фактор, который часто перевешивает оба: конфигурация каналов. Один модуль вдвое большего объёма даёт тот же объём, что два вдвое меньших, но работает в одноканальном режиме и теряет половину пропускной способности. Поэтому при равном бюджете гигабайтов пара модулей почти всегда предпочтительнее одного. Характеристики модулей и их взаимодействие с платой разобраны в разделе про оперативную память.

Запас на будущее и его цена

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

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

Сводя воедино: объём — это порог, а не шкала. Ниже порога система работает в разы медленнее возможного независимо от остальных характеристик; выше порога дополнительные гигабайты нейтральны, и дальнейший выигрыш ищут в числе каналов, частоте и задержках.