Буферная память жесткого диска: что это, на что влияет и какая лучше
Буферная память жесткого диска: что это, на что влияет и какая лучше?
Приветствую вас, дорогие читатели! У нормальных людей, сознание которых пока не замутнено знакомством с компьютерными технологиями, при слове «винчестер» первая ассоциация, которая возникает – знаменитое охотничье ружье, чрезвычайно популярное в США. У компьютерщиков же ассоциации совершенно иные – так большинство из нас называют жесткий диск.
В сегодняшней публикации мы разберем что такое буферная память жесткого диска, для чего она нужна и насколько важен этот параметр для выполнения различных задач.
Использование pagefile.sys и swapfile.sys в Windows
Оперативная память нужна Windows для загрузки в нее используемых на данный момент программ, чтобы процессор имел к ним быстрый доступ. Если объема ОЗУ недостаточно, либо приложение не используется (свернуто или работает в фоновом режиме), Windows переместит часть информации в файл подкачки pagefile.sys.
Виртуальная память (жесткий диск) работает гораздо медленнее, чем оперативная. Если файл подкачки будет использоваться в играх или требовательных к ресурсам ОЗУ приложениях, возможны серьезные проблемы с быстродействием. Увеличение файла подкачки не поможет — виртуальная память слишком медленно работает. Решение: увеличивать объем ОЗУ и уменьшать файл подкачки, либо переносить pagefile.sys на более быстрые SSD-диски.
Отдельно следует упомянуть про системный файл swapfile.sys, использующийся в новых версиях Windows (8/8.1, 10). Многие пользователи уже поинтересовались, можно ли перенести данный файл на другой диск или удалить полностью. Можно, но пользы от этого не будет.
Несколько фактов о swapfile.sys:
- Файл swapfile.sys используется Windows 10 в качестве файла подкачки для Metro-приложений и плиточных приложений (UWP).
- Максимальный размер файла в текущих версиях Windows всего 256 Мб. Удаление файла негативно скажется на производительности самой Windows, особенно на слабых машинах.
- Перенос swapfile.sys на SSD-накопитель ожидаемо даст прирост скорости в сравнении с виртуальной памятью HDD.
Файл включается и начинает работать вместе с pagefile.sys, но при этом функционирует отдельно от него. Поскольку swapfile имеет динамический объем — размер файла изменяется в зависимости от нагрузки — даже 256 мегабайт места вряд ли будет израсходовано. Все это делает отключение swapfile.sys абсолютно бесполезным — его можно перенести только на быстрый диск для ускорения работы системы.
Какой размер файла подкачки выбрать
Компания Microsoft, являющаяся разработчиком Windows, каких-то конкретных рекомендаций по размеру файла подкачки не дает. И это не случайно. В большинстве случаев, определение размера файла подкачки можно оставить компьютеру, выбрав в настройках пункт «Размер по выбору системы». Windows самостоятельно определит оптимальный размер, исходя из параметров компьютера.
Намного важнее правильно выбрать диск для размещения своп-файла (об этом речь пойдет ниже).
Но если по каким-то причинам Вы все же решили настроить размер «вручную», эксперты советуют исходить из того, какой объем оперативной памяти установлен в компьютере и какие задачи на нем решаются.
Чем меньшим является размер оперативной памяти, тем большим должен быть файл подкачки:
• если оперативной памяти меньше 4 ГБ, файл подкачки должен быть 4096 МБ или больше;
• если памяти 4-6 ГБ — от 2048 до 3072 МБ;
• если 8 ГБ и больше — файл подкачки можно попробовать отключить вообще (на всех дисках).
В то же время, некоторые программы без файла подкачки не работают. Если вы их используете, появится сообщение о нехватке виртуальной памяти. В таком случае файл подкачки нужно включить, выбрав для него размер от 512 до 2048 МБ.
Исходный и максимальный размеры файла подкачки по возможности должны быть одинаковыми. Но если места на жестком диске мало, исходный размер можно сделать на 30-50 % меньше максимального.
Первый способ подразумевает установку новых планок оперативной памяти взамен старых. Но здесь не все так гладко: новые планки должны быть совместимы с материнской платой, а также процессором. Для использования этого метода необходимо точно знать, как правильно добавить оперативную память для компьютера.
В общем случае порядок действий следующий:
- снять крышку системного блока;
- найти крепления ОЗУ на материнской плате;
- вынуть старую память, оттянув клипсы-фиксаторы;
- поставить новые ОЗУ;
- зафиксировать планку держателями.
Данный метод позволяет быстро и эффективно добавить ПК производительности.
Установите fio для случайного чтения / записи тестов
В то время как Linux имеет встроенный dd Команда, которая может использоваться для измерения производительности последовательной записи, не указывает на то, как она будет вести себя в реальных условиях. Вместо этого вы захотите проверить скорость случайного чтения и записи.
fio это утилита, которая может справиться с этим. Установите его из диспетчера пакетов вашего дистрибутива:
Затем запустите базовый тест, используя следующую команду:
При этом выполняются произвольные тесты на чтение и запись с использованием 250 МБ данных при соотношении операций чтения от 80% до 20%. Результаты будут отображаться в единицах IOPS и в МБ / с:
Вышеуказанный тест был выполнен на AWS gp2 SSD, довольно средний SSD, который показывает довольно среднюю производительность. Производительность записи всегда будет ниже при любом типе ввода-вывода; многие твердотельные накопители и жесткие диски имеют встроенный кэш для использования контроллером накопителя, что делает многие операции чтения достаточно быстрыми. Однако всякий раз, когда вы пишете, вы должны вносить физические изменения в диск, что медленнее.
Запуск теста на жестком диске показывает низкую производительность случайного смешанного ввода-вывода, которая является типичной проблемой для жестких дисков:
Однако жесткие диски обычно используются для больших последовательных операций чтения и записи, поэтому случайный тест ввода-вывода здесь не соответствует сценарию использования. Если вы хотите изменить тип теста, вы можете передать другой аргумент для —readwrite , fio поддерживает множество разных тестов:
- Последовательное чтение: seqread
- Последовательная запись: seqwrite
- Случайное чтение: randread
- Случайная запись: randwrite
- Случайный смешанный ввод-вывод: randrw
Кроме того, вы можете изменить размер блока с помощью —bs аргумент. Мы установили его на 4K, что является довольно стандартным для случайных тестов, но последовательные чтения и записи могут показывать лучшую или худшую производительность при больших размерах блоков. Размеры от 16 КБ до 32 КБ могут быть ближе к тому, с чем вы столкнетесь при реальной нагрузке.
Определение типа ОЗУ
С технической точки зрения добавить оперативную память несложно: новые планки сразу после покупки за считанные секунды устанавливаются в отмеченные разъемы на материнской плате. Но вот проблема – какой ОЗУ выбрать? Сколько понадобится гигабайт, какой частоты и типа?
Определиться с выбором помогут специальные инструменты мониторинга, вроде AIDA64 – в полуавтоматическом режиме собирающие информацию о системе и отображающие подробные спецификации.
Необходимые данные скрываются в разделах «Системная плата» (там отображаются свойства шины и количество разъемов под RAM) и SPD, где выводится статистика по таймингам, скорости и сторонних функциях.
Перемещаясь между блоками с информацией, остается вывести примерную формулу из типа поддерживаемой ОЗУ (на скриншоте – DDR3), числа интерфейсов (2 или 4) и эффективной частоты (1600 МГц или больше). С полученными характеристиками намного проще выбирать память в магазинах, да и шансы столкнуться с непредвиденными ошибками (или синим экраном смерти) уменьшаются в несколько раз.
Итог:
- Смотрим поддерживаемую частоту на материнской плате – частота новой плашки должна быть или такая же, или ниже по герцам.
- Лучше, чтобы плашки были одинаковые и от одного производителя – так они будут работать на полную.
- DDR3 и DDR4 не совместимы, так что не перепутайте.
Установка и проверка работоспособности
Место под планки RAM каждый производитель материнских плат размещает в неожиданных местах: рядом с процессором, под видеокартой или неподалеку от систем охлаждения. Для новичков ориентиром станут белоснежные защелки сверху и снизу на каждом разъеме, которые перед установкой новых планок придется «разводить», высвобождая место для монтажа.
Дальнейший порядок действий элементарен – планки необходимо взять в руки и буквально вдавить в разъем до характерного щелчка. Главное – не перестараться и не перепутать сторону для крепления ОЗУ (попасть в цель помогут специальные разделители и направляющие на материнской плате).
Закрывать системный блок еще рано: после включения ПК желательно проверить, работает ли двухканальный режим (в том же AIDA64), сколько памяти доступно и на каких частотах работают планки. Возможно, придется еще раз заниматься перестановками и искать источник неполадок. Перед сменой RAM белоснежные защелки придется отвести вновь! Не стоит ничего тянуть из всех сил (лучше точно не станет).
Важно помнить – 32-битная версия операционной системы Windows не поддерживает больше 3.5 гигабайт оперативной памяти. И, если в материнской плате появились планки в 4-8-16 или даже 32 Гб, то «лишний» объем затеряется и останется недоступным для использования. Проблема решается установкой чистой 64-битной версии Windows.
Кроме ограничений, зависящих от разрядности Windows, повлиять на итоговый результат апгрейда могут и остальные компоненты ПК. С дополнительной оперативной памятью жить не станет легче, если и процессор давно сдал позиции, и видеокарта сильно отстает.
Оценить общую производительность компьютера и нацелиться на будущие изменения поможет сервис User Benchmark. Пара минут на тест и на экране подробная статистика по каждой спецификации, в том числе и по ОЗУ. User Benchmark даже подскажет, если планки не работают в двухканальном режиме (хотя должны), тайминги не подходящие или частоты не те, которые предлагает производитель.
ОЗУ — это энергозависимая память, что означает, что для сохранения хранимых в ней данных требуется питание. Это означает, что данные, хранящиеся в оперативной памяти, исчезнут после выключения компьютера. В моем случае я использую базу данных только для тестирования и разработки на моем локальном компьютере. Если мне когда-нибудь понадобится сохранить данные для тестирования, я просто сделаю резервную копию базы данных, а затем восстановлю ее в следующий раз, когда она мне понадобится.
Теперь, когда вы знаете преимущества и недостатки перемещения баз данных MySQL на RAM-диск, я расскажу вам, как этого добиться.
Сначала сделайте резервную копию всех баз данных. Скопируем его в /var/lib/mysql.bak
sudo cp -pRL /var/lib/mysql /var/lib/mysql.bak
Создайте каталог для RAM-диска.
sudo mkdir /tmp/ramdisk
Установите его. Я назначил рамдиску размер 2ГБ. Вам решать, сколько места вы хотите, просто убедитесь, что оно может вместить все данные, которые вы будете записывать в базу данных.
sudo mount -t tmpfs -o size=2G tmpfs /tmp/ramdisk/
Переместите базы данных MySQL на RAM-диск.
sudo mv /var/lib/mysql /tmp/ramdisk/mysql
Создайте символическую ссылку на RAM-диск.
sudo ln -s /tmp/ramdisk/mysql /var/lib/mysql
Измените принадлежность на MySQL, чтобы разрешить доступ.
sudo chown mysql:mysql /tmp/ramdisk/mysql
Перезапустите MySQL, чтобы изменения вступили в силу.
sudo /etc/init.d/mysql restart
Теперь мы закончили! После перемещения баз данных на RAM-диск выполнение миграции и сеялки заняло всего минуту по сравнению с почти часом при использовании жесткого диска.
Создание RAM-диска
Создать RAM-диск относительно просто. Вы можете создать небольшой скрипт под названием ramdrive.sh со следующим кодом:
#! / bin / bash если [ «$(mount | grep -o «/mnt/ram»)» != «/mnt/ram» ]; затем sudo mkdir -p / mnt / ram sudo mount -t ramfs -o size = 1g ramfs / mnt / ram sudo chown -R $ (whoami): $ (whoami) / mnt / ram fi mount | grep ram
И еще один скрипт umount_ram.sh со следующим кодом:
#! / bin / bash sudo umount / mnt / ram
Посмотрим на первый сценарий. Во-первых, мы указываем, что хотим использовать Bash в качестве интерпретатора команд с помощью символа Shebang (#!). Если вы хотите узнать больше о Shebang, взгляните на Bash Automation & Scripting Basics, нашу трехчастную статью об автоматизации и сценариях Bash.
После этого мы проверяем, есть ли у нас монтирование в / mnt / ram (каталог, который мы будем использовать для монтирования нашего RAM-диска), используя grep-only (grep -o) для / mnt / ram в полном объеме. список «в настоящее время смонтирован», отображаемый командой mount. Если то же самое не найдено, мы выполняем три команды sudo. Все три требуют sudo, хотя и по разным причинам.
Первая команда требует sudo, поскольку она делает каталог, возможно, корневым и, по крайней мере, / mnt, которые являются привилегированными / защищенными каталогами. Следующая команда, фактическое монтирование и создание RAM-диска, требует sudo, поскольку монтирование является привилегированной операцией. Мы устанавливаем размер 1 ГБ, используя size = 1g. Мы также указываем, что нам нужен диск типа ramfs (-t ramfs), исходящий от устройства ramfs (как указано вторым ramfs), и, наконец, указываем точку монтирования как / mnt / ram.
В третьей команде с поддержкой sudo мы меняем владельца каталога / mnt / ram (теперь наш RAM-диск, наша точка монтирования ramfs) на текущего пользователя и собственную группу текущего пользователя, дважды используя команду whoami. Вы можете изменить это на конкретную и / или конкретную группу, которая будет использовать ramdrive, или на более широкую группу, если больше пользователей будут использовать ramdrive.
После этого мы завершаем нашу условную команду if .. fi и выполняем последний вызов для монтирования с помощью grep for ram, чтобы убедиться, что сценарий сообщает, что уже было смонтировано с точки зрения ОЗУ, или что было смонтировано только что в качестве скрипт выполнен. Это удобная / быстрая проверка успешности выполнения сценария.
Наш вторичный сценарий, umount_ram.sh, размонтирует диск RAM с точкой монтирования / mnt / ram, то есть диск ramfs, который мы только что создали. ПРЕДУПРЕЖДЕНИЕ: выполнение этого немедленного сброса / удаления всех данных, хранящихся в энергозависимой памяти, и повторное подключение диска RAMFS не вернет этого; он просто создаст новый, но пустой RAM-диск. Пожалуйста, имейте в виду!