vm swappiness что это

Файл подкачки Linux

В операционной системе Linux, как и в других ОС, файл подкачки нужен для страховки оперативной памяти. Когда установленный объем ОЗУ заканчивается, используется именно выделенная область из файла подкачки. Это может понадобиться в двух случаях:

В последних версиях операционной системы Ubuntu Linux файл подкачки создается автоматически вне зависимости от того, хотите вы этого или нет. При этом его размер составляет около 1 Гб.

Как посмотреть swap в Linux

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

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

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Как видите, в нашем случае под swap выделено 1.4 Гб и это файл. То есть, он находится не на отдельном разделе, а на том же диске, на котором установлена операционная система.

Если это будет отдельный логический том, то под надписью « TYPE » мы увидим слово «partition».

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

То есть, вместо каких-либо данных о файле подкачки вы увидите нули.

Создание файла подкачки Linux

Если вы удостоверились в том, что файл подкачки отсутствует, можно переходить к его созданию. Пример, приведенный ниже, будет показан с использованием операционной системы Ubuntu 18.04, но работать это должно и на других дистрибутивах Linux.

Шаг 1: Создаем swap файл

Давайте создадим файл подкачки для нашей Ubuntu. Для примера его размер составит 1 Гб. Запустите терминал и введите команду, приведенную ниже:

Для обеспечения безопасности файла обязательно устанавливаем на него нужные права.

sudo chmod 600 /swapfile

При этом вместо «swapfile» мы можем указать любое другое название.

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Шаг 2: Создание файловой системы

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

sudo mkswap /swapfile

Если все сделано верно, результат будет выглядеть так:

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Шаг 3: Активируем файл подкачки

Хорошо, теперь наш Linux понимает, что это файл подкачки, но этого недостаточно. Нам также необходимо включить SWAP :

sudo swapon /swapfile

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Давайте проверим, все ли мы сделали правильно:

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Шаг 4. Сохранение изменений после перезагрузки

Все операции, которые мы предприняли выше, временны. Как только компьютер будет перезагружен, они отменятся. Для того чтобы сделать изменения постоянными, нам необходимо дописать кое-какую информацию в /etc/fstab. Для этого поступаем так:

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

sudo cp /etc/fstab /etc/fstab.back

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

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

/swapfile none swap sw 0 0

Это реализуется через текстовый редактор, запущенный с правами суперпользователя, либо при помощи введенной в терминал команды:

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

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

Настройка swappiness

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Как видите, в нашем случае «свопинг» установлен как 60. Если же вы хотите поменять swappiness, можете воспользоваться оператором, цифра в конце которого и будет новым значением:

sudo sysctl vm.swappiness=25

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Как и в случае с конфигурацией файла подкачки, данный параметр изначально будет временным и обнулится при следующей перезагрузке. Для того чтобы сделать его постоянным, в самом конце файла /etc/sysctl.conf записываем значение vm.swappiness=25.

Для этого можно воспользоваться, например, текстовым редактором, запущенным с администраторскими полномочиями.

Размер swap файла в Linux

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

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

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

sudo swapoff /swapfile

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Вторым этапом меняем размер файла подкачки, воспользовавшись командой, приведенной ниже. При этом размер вашего swap файла нужно указать вместо параметра 2G (2 гигабайта):

Теперь форматируем полученный файл в файловую систему swap:

sudo mkswap /swapfile

А затем включаем его обратно:

sudo swapon /swapfile

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

При этом операционная система Linux позволяет использовать сразу несколько swap.

Как удалить файл подкачки в Linux

Если по каким-то причинам файл подкачки вам не нужен, можете удалить его. Для этого сначала надо отключить swap linux:

sudo swapoff /swapfile

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Не забудьте установить права на вновь созданный файл подкачки так, как мы описывали это выше.

В заключение

Надеемся теперь концепция файла подкачки в Linux ясна вам на 100%. Можете переходить к практике и проверять наличие swap на вашем компьютере или ноутбуке, его настройке, созданию или даже удалению. Если в результате у вас останутся какие-то вопросы, предложения или замечания, можете задать их нам, воспользовавшись формой комментирования ниже.

Нет похожих записей

Оцените статью:

Об авторе

18 комментариев

>> В последних версиях операционной системы Ubuntu Linux файл подкачки создается автоматически вне зависимости от того, хотите вы этого или нет. При этом его размер составляет около 1 Гб.

Конечно же это не так!

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

Вообще, автор несколько недоговаривает насчет свапа в GNU/Linux (вероятно, ввиду незнания). Дело в том, что свап нужен не столько для срочного получения памяти, сколько для ровного и эффективного высвобождения памяти. Использовать его в качестве «срочной памяти» в общем случае очень вредно.

И отключение swap не спасает от проблемы дискового ввода/вывода при конкуренции за память — дисковый I/O просто перемещается с анонимных страниц на файловые. Это не только может быть менее эффективным, поскольку остаётся меньший пул страниц, доступных для высвобождения, но и само по себе может способствовать появлению этой высокой конкуренции.

Источник

Что такое Swappiness в Linux? (и как это изменить)

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Значение подкачки в Linux не имеет никакого отношения к тому, сколько ОЗУ используется до начала подкачки. Это широко распространенная и широко распространенная ошибка. Мы объясняем, что это на самом деле.

Разрушая мифы о свопности

Обмен — это метод, при котором данные в оперативной памяти (ОЗУ) записываются в специальное место на жестком диске — раздел подкачки или файл подкачки — для освобождения ОЗУ.

В Linux есть параметр, называемый значением swappiness. Существует много путаницы в отношении того, что контролирует этот параметр. Наиболее распространенное неправильное описание подкачки — это то, что оно устанавливает порог для использования ОЗУ, и когда количество используемой ОЗУ достигает этого порога, начинается подкачка.

Это заблуждение, которое повторялось так часто, что теперь оно получило мудрость. Если (почти) все остальные скажут вам, что именно так работает подмена, почему вы должны верить нам, когда мы говорим, что это не так?

Просто. Мы собираемся доказать это.

Ваша оперативная память разделена на зоны

Значение PAGESIZE

ОЗУ выделяется в страницах, которые имеют фиксированный размер. Этот размер определяется ядром во время загрузки, определяя архитектуру компьютера. Обычно размер страницы на компьютере с Linux составляет 4 Кбайт.

Вы можете увидеть размер своей страницы с помощью команды getconf :

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Зоны привязаны к узлам

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Это вывод 64-битного компьютера, на котором исследовалась эта статья:

Существует один узел, узел ноль. Этот компьютер имеет только 2 ГБ оперативной памяти, поэтому нет «нормальной» зоны. Есть только две зоны, DMA и DMA32.

Каждый столбец представляет количество доступных страниц определенного размера. Например, для зоны DMA32, чтение слева:

Но на самом деле единственная причина, по которой мы смотрим на эту информацию — это видеть взаимосвязь между узлами и зонами.

Страницы файлов и анонимные страницы

Отображение памяти использует наборы записей таблицы страниц для записи, какие страницы памяти используются и для чего.

Отображения памяти могут быть:

Для замены нам нужны только первые два списка: страницы файлов и анонимные страницы.

Swappiness

Вот описание перестановки из документации Linux на GitHub :

«This control is used to define how aggressive (sic) the kernel will swap memory pages. Higher values will increase aggressiveness, lower values decrease the amount of swap. A value of 0 instructs the kernel not to initiate swap until the amount of free and file-backed pages is less than the high water mark in a zone.

The default value is 60.»

Это звучит так, как будто своппинг становится интенсивнее. Интересно, что в нем говорится, что установка своппинга на ноль не отключает своп. Он указывает ядру не менять местами, пока не будут выполнены определенные условия. Но обмен может все же произойти.

Давайте копать глубже. Вот определение и значение по умолчанию vm_swappiness в файле исходного кода ядра vmscan.c :

Значение своппинга может варьироваться от 0 до 100. Опять же, комментарий, безусловно, звучит так, как будто значение свопинга влияет на объем обмена, причем более высокая цифра ведет к большему обмену.

int swappiness = mem_cgroup_swappiness(memcg);

Значение подкачки в Linux фактически устанавливает соотношение между двумя значениями.

Золотое сечение

Страницы файлов содержат данные, которые можно легко извлечь, если освободить эту память. Linux может просто прочитать файл снова. Как мы уже видели, если данные файла были изменены в оперативной памяти, эти изменения должны быть записаны в файл, прежде чем страница файла может быть освобождена. Но, так или иначе, файловая страница в оперативной памяти может быть переполнена чтением данных из файла. Так зачем добавлять эти страницы в раздел подкачки или файл подкачки? Если вам снова понадобятся эти данные, вы можете также прочитать их обратно из исходного файла вместо избыточной копии в пространстве подкачки. Таким образом, страницы файла не хранятся в разделе подкачки. Они «хранятся» обратно в исходном файле.

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

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

Как видно из последнего фрагмента кода, есть две переменные. Один называется file_prio для «приоритет файла», а другой называется anon_prio для «приоритет анонимный».

Эти переменные содержат значения, которые работают в тандеме. Если они оба установлены на 100, они равны. Для любых других значений anon_prio уменьшится со 100 до 0, а file_prio увеличится со 100 до 200. Два значения file_prio в сложный алгоритм, который определяет, работает ли ядро ​​Linux с предпочтением восстановления (освобождения) файловых страниц или анонимным страницы.

Вы можете думать о file_prio как о готовности системы освободить файловые страницы, а о anon_prio — о готовности системы освободить анонимные страницы. Чего эти значения не делают, так это устанавливают какой-либо триггер или порог, когда будет использоваться своп. Это решено в другом месте.

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

Когда своп фактически включается?

Мы установили, что значение подкачки в Linux устанавливает предпочтительный тип страниц памяти, которые будут сканироваться для возможного восстановления. Это хорошо, но что-то должно решить, когда своп собирается сработать.

Каждая зона памяти имеет верхний и нижний отметки. Это системные значения. Это проценты оперативной памяти в каждой зоне. Именно эти значения используются в качестве пороговых значений запуска свопа.

Чтобы проверить, какие у вас /proc/zoneinfo и нижние отметки уровня воды, загляните в файл /proc/zoneinfo с помощью этой команды:

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Каждая из зон будет иметь набор значений памяти, измеренных в страницах. Вот значения для зоны DMA32 на тестовом компьютере. Низкая отметка составляет 13966 страниц, а верхняя отметка — 16759 страниц:

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Таким образом, вы можете видеть, что вы не можете использовать значение подкачки в Linux, чтобы влиять на поведение подкачки в отношении использования ОЗУ. Просто так не работает.

Что должно быть установлено Swapiness?

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

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

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

Вот некоторые моменты для рассмотрения:

Как установить значение подкачки в Linux

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

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Чтобы настроить значение подкачки, используйте команду sysctl :

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Новое значение используется сразу, перезагрузка не требуется.

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Управление памятью сложное

Управление памятью сложно. И именно поэтому для обычного пользователя обычно лучше оставить это ядру.

Легко думать, что вы используете больше оперативной памяти, чем вы. Такие утилиты, как top и free могут произвести неправильное впечатление. Linux будет использовать свободную оперативную память для различных своих целей, например для кэширования диска. Это искусственно увеличивает показатель «используемой» памяти и уменьшает показатель «свободной» памяти. Фактически, ОЗУ, используемое в качестве дискового кэша, помечается как «использованное» и «доступное», потому что оно может быть восстановлено в любое время, очень быстро.

Для непосвященных это может показаться, что своп не работает или что значение своппинга нужно изменить.

Как всегда, дьявол кроется в деталях. Или, в этом случае, демон. Демон обмена ядрами.

Источник

Ускоряем Ubuntu. Оптимизация работы подкачки (swap) в Ubuntu — Linux

Автор: Константин Карпович

Известно, что в современных операционных системах используется такая технология, как виртуальная память, разработанная для многозадачных ОС.

В ОС семейства Windows файл, служащий для хранения неиспользуемой оперативной памяти в области жесткого диска, именуется «файлом подкачки» (pagefile.sys).

Его организация реализована далеко не лучшим образом (мягко говоря!). В ОС Linux еще при установке создается отдельный раздел подкачки — «Swap», что гораздо лучше.

Файл подкачки Windows и Linux-swap, располагаются на HDD (жестком диске). Когда оперативной памяти становиться недостаточно, происходит выгрузка страниц памяти из ОЗУ на жесткий диск, а когда вы снова обращаетесь к файлам, находящимся в разделе подкачки (swap), они снова загружаются в оперативную память.

Вся проблема в том, что скорость чтения-записи жесткого диска HDD (даже самого быстрого) В РАЗЫ меньше скорости оперативной памяти. Вот это и ведет к замедлению работы компьютера и снижению производительности в целом.

Здесь есть два способа решения этой проблемы: использовать большие объемы ОЗУ или правильно настроить работу системы с файлом подкачки и swap.

Итак, в Ubuntu есть такой параметр, который контролирует процент свободной памяти, при которой начнется сброс страниц памяти в swap — vm.swappiness.

В Ubuntu по умолчанию он имеет значение равное — 60. Это означает, что при 40% занятой оперативной памяти начнется активный сброс страниц памяти в раздел swap, т. е. 100% — 60% = 40%.

Проверить, каково значение параметра у вас, можно следующим образом.

Открываем терминал комбинацией клавиш Ctrl+Alt+T и выполняем команду:

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Если у вас современный компьютер или ноутбук с большим объемом ОЗУ (4-6, а то и 8 ГБ), то это вам вряд ли подойдет.

На многих форумах и блогах, посвященных Ubuntu рекомендуется выставить значение параметра vm.swappiness = 10 (т. е. 100% — 10% = 90%). Но, по моему личному опыту, при наличии оперативной памяти объемом в 6 ГБ можно повести себя и по-агрессивнее, выставив значение равным 0. В данном случае система будет обращаться к разделу swap только в крайнем случае.

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

Сделать это можно так.

Опять же открываем всемогущий терминал комбинацией клавиш Ctrl+Alt+T и выполняем в нем следующую команду:

После знака равенства выставите значение от 100 до 0 (в зависимости от объема вашего ОЗУ).

После этого попробуйте «погрузить» свою систему: открыть несколько браузеров с большим числом вкладок, покопировать большие файлы на внешние носители (это, кстати, является больной стороной linux-систем — скорость копирования на внешние носители. Но об этом как-нибудь в следующий раз) и тому подобное.

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

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

Сохраняем файл. Он должен выглядеть, как на скриншоте внизу:vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это

Перезагружаем компьютер. После перезагрузки выполняем в терминале:

Я, как уже было отмечено выше, выбрал параметр равным 0, фактически отключив раздел swap, т. к. для моего компьютера с шестью гигабайтами ОЗУ он оказался наиболее оптимальным. Вы можете выбрать значение параметра равным 10, как это рекомендовано на многочисленных форумах.

В качестве примера мне бы хотелось продемонстрировать загрузку оперативной памяти в Ubuntu 12.10 x64 с 6 ГБ ОЗУ.
Итак, я открыл три браузера — штатный Mazilla Firefox, Opera и Google Chrome с общим количеством вкладок около 40, аудиоплеер Clementine (кстати, довольно требовательный к ресурсам компьютера), Skype, торрент-клиент qBittorrent.
И вот скриншот htop (это довольно продвинутый консольный монитор процессов). Для установки набираем в терминале

vm swappiness что это. Смотреть фото vm swappiness что это. Смотреть картинку vm swappiness что это. Картинка про vm swappiness что это. Фото vm swappiness что это
Я думаю, что все становится понятно: занято менее половины установленной оперативной памяти.
Поэтому если у вас много ОЗУ, то использовать раздел подкачки не имеет никакого смысла. Это будет только замедлять скорость работы компьютера!
В заключении могу сказать, что это не единственное, что можно сделать для ускорения работы Ubuntu. Об этом в следующих статьях. Подписывайтесь на RSS — канал!
Отличного настроения, быстрой работы компьютера и с наступающим Новым годом!
В качестве приятной неожиданности сегодня видео о том, каким увидели уходящий год сотрудники компании Google.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *