Все о пространстве подкачки в ОС Линукс
Оригинал: All about Linux swap space
Автор: Gary Sims
Дата: 3 декабря 2007
Свободный перевод: Алексей Дмитриев
Дата перевода: 6 декабря 2007
При копировании материала обязательны указание автора, переводчика и ссылки на оригинал статьи и настоящую страницу как первоисточник перевода!
В случае, когда компьютер должен выполнить программу, размер которой превышает физический объем оперативной памяти, современные операционные системы прибегают к технологии подкачки, или своппинга. При этом блоки памяти временно сохраняются на жестком диске, а освободившийся объем оперативной памяти используется для обработки другой информации. В настоящей статье рассмотрены несколько приемов, которые могут помочь вам лучше управлять подкачкой на Линукс-системах и получить наибольшую производительность подсистемы своппинга.
Линукс разделяет доступную физическую оперативную память (RAM — random access memory) на блоки, называемые страницами. Своппинг — это процесс, при котором страница памяти копируется в заранее заготовленное место на жестком диске, называемое пространством подкачки, чтобы освободить данную страницу памяти для новой информации. Сумма объемов физической оперативной памяти и пространства подкачки называется объемом доступной виртуальной памяти.
Подкачка необходима по двум причинам. Во-первых, когда системе требуется больше памяти, чем физически доступно, ядро переносит из памяти на диск наименее используемые страницы и отдает освободившуюся память тому приложению (процессу) который нуждается в ней немедленно. Во-вторых, значительное количество страниц памяти задействуется приложениями только во время их загрузки, и может больше не понадобиться по окончании процесса инициализации. Система может откачать эти страницы на диск, освободив тем самым память для других приложений, или даже для дискового кэша.
Однако подкачка имеет и оборотную сторону. По сравнению с памятью, диск работает очень медленно. Скорость памяти измеряется в наносекундах, тогда как скорость диска в миллисекундах, получается, что доступ к диску может быть в десятки тысяч раз медленнее доступа к физической памяти. Чем больше происходит подкачки, тем медленнее работает система. Иногда чрезмерный своппинг приводит к пробуксовке, когда страница откачивается, затем тут же закачивается обратно, потом снова откачивается и так далее. В такой ситуации система борется за свободную память, «гоняя» приложение на месте. В такой ситуации только добавление дополнительной оперативной памяти может помочь.
В Линуксе пространство подкачки бывает двух видов: раздел подкачки (swap partition) и файл подкачки (swap file).
Раздел подкачки — это независимая секция жесткого диска, используемая исключительно для подкачки, никаких других файлов там нет. Файл подкачки — это файл особого типа внутри файловой системы, среди прочих файлов всех других типов. Чтобы узнать каким пространством для подкачки вы располагаете, наберите в командной строке:
В ответ вы получите что-то типа:
Каждая строка относится к отдельному пространству подкачки, имеющемуся в системе. В данном случае строка всего одна. Поле ‘Type’ (Тип) говорит, что мы имеем раздел (partition), а не файл. Поле ‘Filename’ сообщает, что этот раздел находится на диске sda5. Поле ‘Size’ (размер) показывает размер раздела в килобайтах. Поле ‘Used’ (Использовано) сообщает, сколько килобайт пространства подкачки используется (в данном случае ноль). ‘Priority’ (Приоритет) сообщает, какое из пространств подкачки Линукс использует первым. Подсистема подкачки в линуксе имеет замечательное свойство: если вы смонтируете с одинаковым приоритетом два (или больше) пространств подкачки (желательно на разных устройствах), Линукс станет использовать их для подкачки поочередно, что существенно увеличит производительность своппинга.
Раздел подкачки
Для того чтобы добавить дополнительный раздел подкачки в свою систему, необходимо сначала подготовить его. Шаг первый — убедиться, что раздел помечен как swap partition (раздел подкачки). Шаг второй — создать на нем специальную файловую систему — swap filesystem. Чтобы удостовериться, что раздел помечен как swap, с правами root (суперпользователя) наберите команду:
Замените /dev/hdb на то устройство, которое хотите проверить. В ответ получите что-то вроде:
Если раздел не помечен как Linux swap, то придется изменить его с помощью программы fdisk, используя опцию ‘t’. Будьте предельно осторожны при работе с разделами, если не хотите по ошибке удалить важный раздел, или переформатировать системный раздел в раздел подкачки. Вся информация на swap-разделе будет потеряна, так что семь раз отмерьте, один раз отрежьте. Также имейте в виду, что Solaris помечает свои разделы тем же идентификатором, что Линукс — свои разделы подкачки (Linux swap), так что поостерегитесь случайно испортить раздел Solaris (если они у вас есть). Когда раздел помечен как swap, необходимо отформатировать его командой mkswap (make swap), опять же, как root:
Если не появляется сообщений об ошибках, значит ваш раздел отформатирован и готов к работе. Чтобы немедленно его активировать напечатайте:
Убедиться, что раздел используется, можно запустив команду swapon -s . Чтобы новый раздел автоматически подключался (монтировался) при запуске компьютера, нужно отредактировать файл /etc/fstab, который содержит список файловых систем, подключаемых (монтируемых) при загрузке. Формат каждой строки таков:
Так как пространство подкачки является специальным типом файловой системы, многие из этих параметров не понадобятся. Для раздела подкачки добавьте строку
/dev/hdb1 none swap sw 0 0
Здесь /dev/hdb1 — сам раздел подкачки, он не имеет специальной точки монтирования (mount point), следовательно, пишем none (нет). Его тип (type) — swap, обозначается опцией sw. Последние два параметра не используются, поэтому там нули.
Можно проверить без перезагрузки компьютера, будет ли ваш новый раздел подкачки автоматически подключаться. Для этого сначала отключим все пространства подкачки командой swapoff -a , затем обратно подключим все пространства подкачки, перечисленные в /etc/fstab командой swapon -a , затем проверим, что именно подключилось, командой swapon -s .
Файл подкачки (Swap file)
Кроме разделов подкачки, Линукс поддерживает также файлы подкачки, которые можно создавать, подготавливать и монтировать способом, похожим на вышеописанный. Преимущество файлов подкачки в том, что не нужно искать свободный раздел или создавать новый для увеличения пространства подкачки.
Для создания файла подкачки используйте команду dd , которая «умеет» создавать пустые файлы. Для создания файла в 1Гб напечатайте:
dd if=/dev/zero of=/swapfile bs=1024 count=1048576
Здесь: /swapfile — имя файла подкачки, а число 1048576 — это размер файла в килобайтах (т.е. 1Гб) Подготавливаем файл подкачки при помощи команды mkswap, также как поступали с разделом, но на этот раз указываем имя файла:
Аналогично монтируем его командой swapon:
Строка в файле /etc/fstab для файла подкачки выглядит так:
Какого размера должно быть пространство подкачки?
В принципе, возможно использовать Линукс систему вообще без подкачки, и система будет работать хорошо, если у нее большая оперативная память. Но, если, в один прекрасный момент, этой памяти не хватит, то систему ждет крах — ей просто не останется шансов. Так что советую иметь пространство подкачки, особенно в наши дни, когда место на винчестере сравнительно дешево.
Ключевой вопрос — сколько? Старые версии Unix-подобных операционных систем (такие как Sun OS и Ultrix) рекомендовали пространство подкачки вдвое или втрое превышающее размер оперативной памяти. Современные разработки (такие как Линукс) не требуют так много, но могут использовать его, если им дадут. Правило тут такое: 1) для настольных систем выделяйте пространство подкачки равное удвоенному размеру оперативной памяти, это позволит вам одновременно запускать много приложений (многие из которых, будучи неактивны, легко могут быть откачаны на диск, освободив память для активных); 2) для сервера выделяйте меньше пространства подкачки (около половины размера оперативной памяти), так, чтобы обеспечить при необходимости возможность своппинга, но следите за использованием пространства подкачки, и при необходимости наращивайте оперативную память (RAM); 3) для старых компьютеров с маленьким объемом оперативной памяти (скажем, только 128Мб), выделяйте столько пространства для подкачки, сколько сможете, вплоть до 1Гб.
Ядро Linux 2.6 добавило новый параметр, называемый swappiness (перевода не существует), позволяющий администратору регулировать то, как Линукс оперирует с пространством подкачки. Это число от 0 до 100. В общих чертах, чем больше это число, тем больше страниц откачиваются из оперативной памяти на диск, а чем меньше значение swappiness, тем большее число приложений остаются в оперативной памяти, даже если они неактивны. Разработчик ядра Andrew Morton утверждает, что выставляет на своих десктопах swappiness на высочайший уровень — 100, говоря при этом: «Я считаю, что не следует ограничивать ядро в его стремлении откачивать мусор. Вы же не хотите, чтобы сотни мегабайт памяти, занятой раздувшимися приложениями, без пользы зависли в вашей машине. Выгрузите их на диск, а память используйте на что-нибудь полезное». У идеи Мортона есть и оборотная сторона: если память освобождается слишком быстро, то время отклика приложений возрастет, так как при вызове приложения, система должна будет сначала закачать его обратно в память, что создаст ощущение медлительности.
Значение swappiness по умолчанию равно 60. Можно изменить его временно (до следующей перезагрузки) командой от имени root:
echo 50 > /proc/sys/vm/swappiness
Если хотите изменить его на постоянной основе, тогда нужно изменить параметр vm.swappiness в файле /etc/sysctl.conf
Заключение
Управление пространством подкачки является важным аспектом системного администрирования. Хорошо спланированный и правильно используемый своппинг дает много преимуществ. Не бойтесь экспериментировать и постоянно ведите мониторинг своей системы, чтобы убедиться, что вы достигли именно того результата, к которому стремились.
Источник
Что такое раздел подкачки в Linux и для чего он нужен?
Доброго времени суток. Большинство дистрибутивов Linux рекомендуют вам включить раздел подкачки. Это может показаться странным для пользователей Windows, привыкших к тому, что операционная система расположена на одном разделе.
Итак, что же делает раздел подкачки, нужен ли он вам, и насколько большим он должен быть? Всё это — важные вопросы, правильные ответы на которые позволят вам серьёзно улучшить производительность системы.
Переполнение памяти
В своей простейшей форме раздел подкачки играет роль помощника оперативной памяти (RAM). Если память системы полностью занята, все дополнительные приложения будут использовать вместо неё раздел подкачки.
Может показаться, что это простой способ увеличения объёма доступной памяти, не требующий покупки дополнительных плашек RAM, но это не так. RAM является идеальным оборудованием для хранения данных благодаря своей скорости, тогда как жёсткие диски работают очень медленно. Появление твердотельных дисков, работающих на более высоких скоростях, немного сократило разрыв, но им всё равно не сравнится с RAM. Вдобавок, вы же не хотите ускорять износ своего твердотельного устройства хранения.
Ближайшим аналогом раздела подкачки является файл подкачки Windows, хотя между ними есть множество технических отличий.
Определение приоритетности
Раздел подкачки так же может помочь перенести некоторые данные из оперативной памяти на жёсткий диск, чтобы освободить место для более важных задач. Это означает, что на жёсткий диск будут перемещены редко запрашиваемые данные.
Граница того, какие данные будут считаться редко запрашиваемыми, определяется «коэффициентом подкачки», который можно настраивать. Данные с высоким коэффициентом, скорее всего, будут перемещены в раздел подкачки, тогда как данные с низким коэффициентом чаще всего остаются в оперативной памяти.
Включение спящего режима
Ну и наконец, раздел подкачки используется для хранения содержимого памяти, когда система переходит в спящий режим. То есть без раздела подкачки переход в спящий режим на Linux был бы невозможен.
На самом деле, пользователи довольно редко пользуются функцией спящего режима, поэтому для вас это может не иметь большого значения.
Нужен ли вам файл подкачки?
Итак, означает ли это, что раздел подкачки необходим? Ни в коем случае! Linux способен абсолютно нормально функционировать и без раздела подкачки. Однако у него есть свои преимущества и недостатки.
Преимущества:
- Предоставляет дополнительное место, когда основная память переполнена.
- Переносит редко запрашиваемые данные из высокоскоростной памяти.
- Позволяет включить спящий режим.
Недостатки:
- Занимает место на вашем жёстком диске, так как разделы подкачки не могут изменять свой размер в процессе работы.
- Может ускорить износ жёсткого диска.
- Не во всех случаях улучшает производительность (смотри ниже).
Когда разделы подкачки не помогают
Что? Разделы подкачки не во всех случаях увеличивают производительность? Позвольте мне описать ситуацию, в которой лучше вообще не иметь раздела подкачки.
Я установил Linux на нетбук с 1Гб. оперативной памяти и жёстким диском, работающим на скорости 5400 об/мин. Как вы, наверное, догадались, 1Гб. памяти очень быстро заполнился после открытия нескольких вкладок браузера. Раздел подкачки позволял мне держать все эти вкладки открытыми, используя жёсткий диск в качестве временного места хранения.
Но потом возникла проблема, вызванная скоростью в 5400 об/мин. Из-за того, что жёсткий диск работал медленно и система постоянно обращалась к разделу подкачки, работать с нетбуком становилось всё сложнее и сложнее. В конечном итоге, чтобы добиться хоть какой-то производительности, мне приходилось закрывать всё, чтобы освободить память.
Установленный коэффициент подкачки не гарантировал, что данные будут перенесены назад в оперативную память, хотя в ней теперь было свободное место. Вместо этого, данные оставались в разделе подкачки, из-за чего нетбук продолжал работать медленно. Решением проблемы стала перезагрузка, которая заняла довольно времени, так как перед выключением системе необходимо было очистить раздел подкачки.
Рекомендации
Итак, вот что я могу порекомендовать:
- Если вы хотите иметь возможность переключать компьютер в спящий режим, тогда вам нужен раздел подкачки. Размер этого раздела должен равняться объёму установленной оперативной памяти плюс дополнительные 10-25%, чтобы оставить место для данных, которые уже находились в разделе подкачки.
- Если вам требуется небольшое увеличение производительности (и у вас стоит жёсткий диск, работающий на скорости 7200 об/мин. или выше), тогда, вы, при желании, можете создать раздел подкачки. Но он поможет вам только в том случае, если на компьютере меньше 4Гб. оперативной памяти. Размер можно устанавливать по вашему желанию, но не стоит делать его больше, чем раздел для спящего режима.
- Если ваша система работает на жёстком диске с 5400 об/мин., вам не стоит создавать раздел подкачки, так как он только ухудшит производительность компьютера. Однако если вы всё же хотите это сделать, следуйте рекомендациям выше, но измените значение коэффициента подкачки на более низкое.
Изменение коэффициента подкачки
Чтобы изменить коэффициент подкачки, вам нужно выполнить команду «gksu gedit /etc/sysctl.conf», которая запустит текстовый редактор Gedit, при помощи которого мы будем править конфигурационный файл. Затем, найдите параметр «vm.swappiness» и измените его значение (лучше всего поставьте 10). Если параметра нет, добавьте в конец файла следующую строку: «vm.swappiness=10».
Значение, которое вы подставили, используется для определения момента, когда Linux начнёт активно перемещать процессы из памяти в раздел подкачки. Например, значение 10 означает, что перемещение процессов начнётся, когда использование памяти достигнет 90%. Стандартным значением коэффициента подкачки в Ubuntu является 60. Это значит, что перенос процессов начинается, когда использование памяти достигает 40%.
С разделом подкачки связано ещё множество подробностей, но они только собьют вас с толку.
Заключение
Разделы подкачки могут сильно повлиять на производительность вашей системы. Иногда в лучшую, а в некоторых случаях и в худшую сторону. Теперь, когда у вас есть все необходимые сведения, вы сами можете сделать правильный выбор.
Ищете другие способы повышения производительности Linux? Ознакомьтесь с этими четырьмя простыми советами.
А что вы слышали о разделах подкачки? Считаете ли вы, что их стоит использовать? Поделитесь своим мнением в комментариях!
Источник