Как изменить значение swappiness в linux 2021

How much swap do I need?

For less then 1GB of physical memory (RAM), it’s highly recommended that the swap space should, as a base minimum, be equal to the amount of RAM. Also, it’s recommended that the swap space is maximum twice the amount of RAM depending upon the amount of hard disk space available for the system because of diminishing returns.

For more modern systems (>1GB), your swap space should be at a minimum be equal to your physical memory (RAM) size «if you use hibernation», otherwise you need a minimum of round(sqrt(RAM)) and a maximum of twice the amount of RAM. The only downside to having more swap space than you will actually use, is the disk space you will be reserving for it.

The «diminishing returns» means that if you need more swap space than twice your RAM size, you’d better add more RAM as Hard Disk Drive (HDD) access is about 10³ slower then RAM access, so something that would take 1 second, suddenly takes more then 15 minutes! And still more then a minute on a fast Solid State Drive (SSD)…

Example Scenarios

(last 3 columns denote swap space)

        RAM   No hibernation    With Hibernation  Maximum
      256MB            256MB               512MB    512MB 
      512MB            512MB              1024MB   1024MB
     1024MB           1024MB              2048MB   2048MB

        RAM   No hibernation    With Hibernation  Maximum
        1GB              1GB                 2GB      2GB
        2GB              1GB                 3GB      4GB
        3GB              2GB                 5GB      6GB
        4GB              2GB                 6GB      8GB
        5GB              2GB                 7GB     10GB
        6GB              2GB                 8GB     12GB
        8GB              3GB                11GB     16GB
       12GB              3GB                15GB     24GB
       16GB              4GB                20GB     32GB
       24GB              5GB                29GB     48GB
       32GB              6GB                38GB     64GB
       64GB              8GB                72GB    128GB
      128GB             11GB               139GB    256GB
      256GB             16GB               272GB    512GB
      512GB             23GB               535GB      1TB
        1TB             32GB              1056GB      2TB
        2TB             46GB              2094GB      4TB
        4TB             64GB              4160GB      8TB
        8TB             91GB              8283GB     16TB

Раздел подкачки

Для того чтобы добавить дополнительный раздел подкачки в свою систему, необходимо сначала подготовить его. Шаг первый — убедиться, что раздел помечен как swap partition (раздел подкачки). Шаг второй — создать на нем специальную файловую систему — swap filesystem. Чтобы удостовериться, что раздел помечен как swap, с правами root (суперпользователя) наберите команду:

fdisk -l /dev/hdb

Замените /dev/hdb на то устройство, которое хотите проверить. В ответ получите что-то вроде:

Device Boot    Start   End     Blocks  Id      System
/dev/hdb1       2328    2434    859446  82      Linux swap / Solaris

Если раздел не помечен как Linux swap, то придется изменить его с помощью программы fdisk, используя опцию ‘t’. Будьте предельно осторожны при работе с разделами, если не хотите по ошибке удалить важный раздел, или переформатировать системный раздел в раздел подкачки. Вся информация на swap-разделе будет потеряна, так что семь раз отмерьте, один раз отрежьте. Также имейте в виду, что Solaris помечает свои разделы тем же идентификатором, что Линукс — свои разделы подкачки (Linux swap), так что поостерегитесь случайно испортить раздел Solaris (если они у вас есть). Когда раздел помечен как swap, необходимо отформатировать его командой mkswap (make swap), опять же, как root:

mkswap /dev/hdb1

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

swapon /dev/hdb1

Убедиться, что раздел используется, можно запустив команду 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.

Empty Swap

Even if you have lots of RAM and even if you have a low swappiness value, it is possible that your computer swaps. This can hurt the multitasking performance of your desktop system.

You can use the following script to get the swap manually back into RAM:

  • Place the script e.g. /usr/local/sbin:
    gksudo gedit /usr/local/sbin/swap2ram.sh
  • Copy-paste the script into the file:
  • #!/bin/sh
    
    mem=$(LC_ALL=C free  | awk '/Mem:/ {print $4}')
    swap=$(LC_ALL=C free | awk '/Swap:/ {print $3}')
    
    if ; then
        echo "ERROR: not enough RAM to write swap back, nothing done" >&2
        exit 1
    fi
    
    swapoff -a &&
    swapon -a
  • Save and close gedit
  • Make the script executable:
    sudo chmod +x /usr/local/sbin/swap2ram.sh
  • Execute:
    sudo /usr/local/sbin/swap2ram.sh

Раздел подкачки

Раздел подкачки (англ. «swap partition») — это раздел жесткого диска, используемый исключительно для подкачки памяти; является типом памяти подкачки по умолчанию.

Добавление раздела подкачки

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

Примечание: Замените /dev/sda на путь к диску в вашей системе с разделом подкачки на нем.

Вы должны увидеть примерно следующее:

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

Как только ваш раздел пометится как swap, его необходимо будет подготовить с помощью команды (сокр. от «make swap«):

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

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

Рассмотрим детально:

   — путь к разделу подкачки;

  — означает, что раздел будет смонтирован как раздел подкачки;

  — тип раздела;

  — означает использовать настройки по умолчанию;

   (последние два параметра) означает, что данные параметры не используются.

Чтобы без перезагрузки проверить, что ваш раздел подкачки монтируется автоматически, вы можете запустить команду (которая отключает все пространства подкачки), а затем (которая монтирует все пространства подкачки, перечисленные в файле /etc/fstab), а затем проверить статус вашего раздела подкачки с помощью .

Удаление раздела подкачки

Чтобы удалить раздел подкачки, нужно выполнить следующие шаги:

Шаг №1 Отключаем раздел подкачки следующей командой:

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

Шаг №2 Поскольку раздел подкачки управляется подсистемой инициализации systemd, то при следующем запуске системы он будет снова активирован. Чтобы навсегда отключить автоматическую активацию обнаруженного раздела подкачки, необходимо найти ответственный за подкачку swap-юнит:

Рассмотрим детально:

   UNIT (dev–sda5.swap) — это название swap-юнита, соответствующего разделу подкачки.

   LOAD (loaded) — означает, что наш swap-юнит успешно загружен.

   ACTIVE (inactive) — обобщенный статус юнита. Может принимать значения:

   active — юнит запущен;

   inactive — юнит остановлен.

   SUB (dead) — более низкоуровневый статус юнита. В зависимости от типа юнита, может принимать значения:

   running — выполняется;

   exited — успешно завершил выполнение;

   failed — ошибка при выполнении;

   dead — не запущен;

   mounted — смонтирован;

   plugged — подключен;

   и пр.

   DESCRIPTION (devsda5) — указывает на путь к swap-юниту (разделу подкачки).

Шаг №3 Отключаем дальнейшие запуски выбранного юнита с помощью команды :

Шаг №4 Перезагружаем систему.

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

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

Или с помощью графической утилиты управления дисками GParted:

Примечание Если в вашей системе отсутствует GParted, то вы можете установить её с помощью следующей команды:

Для полного удаления раздела подкачки через GParted, необходимо кликнуть по нему ПКМ и выбрать пункт :

Или же воспользоваться следующей командой в терминале:

Затем вам нужно будет нажать (сокр. от англ. «delete»), чтобы попасть в режим удаления раздела. После чего вас попросят указать номер удаляемого раздела (у меня это — sda5, поэтому я указал номер ). Далее нажмите (сокр. от англ. «write»), чтобы записать внесенные изменения в таблицу разделов диска и выйти из :

Также необходимо проверить, что у вас закомментированы (символом ) все упоминания раздела подкачки в файлах конфигурации /etc/fstab и /etc/initramfs-tools/conf.d/resume.

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

Готово! Раздел подкачки удален!

Создание SWAP-файла

Создадим файл c именем swap размером 4 G в папке корне системы /:

$ sudo dd if=/dev/zero of=/swap.img bs=1024 count=4000000
4000000+0 записей получено
4000000+0 записей отправлено
4096000000 байт (4,1 GB, 3,8 GiB) скопирован, 45,6991 s, 89,6 MB/s

1
2
3
4

$sudo dd if=devzero of=swap.img bs=1024count=4000000

4000000+записейполучено

4000000+записейотправлено

4096000000байт(4,1GB,3,8GiB)скопирован,45,6991s,89,6MBs

Форматируем файл в формат свопа:

$ sudo mkswap /swap.img
mkswap: /swap.img: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 3,8 GiB (4095995904 bytes)
без метки, UUID=6a46beca-c117-4c53-8b05-3641fc85b7e1

1
2
3
4

$sudo mkswapswap.img

mkswapswap.imginsecure permissions0644,0600suggested.

Setting up swapspace version1,size=3,8GiB(4095995904bytes)

безметки,UUID=6a46beca-c117-4c53-8b05-3641fc85b7e1

Подключаем файл к системе:

$ sudo swapon /swap.img
swapon: /swap.img: insecure permissions 0644, 0600 suggested.

1
2

$sudo swaponswap.img

swaponswap.imginsecure permissions0644,0600suggested.

Проверяем результат работы:

$ sudo swapon -s
Имя файла Тип Размер Исп-но Приоритет
/swap.img file 3999996 0 -2

1
2
3

$sudo swapon-s

ИмяфайлаТипРазмерИсп-ноПриоритет

swap.img                               file3999996-2

Сделаем чтобы swap монтировался при загрузке. Для этого добавляем в fstab необходимый параметр:

$ nano /etc/fstab

# Подключим swap при загрузке
/swap.img swap swap defaults 0 0

1
2
3
4

$nanoetcfstab

 
# Подключим swap при загрузке

swap.img swap swap defaults

Сохраняем файл и перезагружаемся.

$ sudo reboot

1 $sudo reboot

Проверяем:

$ swapon -s
Имя файла Тип Размер Исп-но Приоритет
/swap.img file 3999996 0 -2

1
2
3

$swapon-s

ИмяфайлаТипРазмерИсп-ноПриоритет

swap.img                               file3999996-2

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

Зоны привязаны к узлам. Узлы связаны с центральным процессором (ЦП). Ядро попытается выделить память для процесса, запущенного на ЦП, из узла, связанного с этим ЦП.

Концепция узлов, привязанных к ЦП, позволяет устанавливать смешанные типы памяти в специализированных многопроцессорных компьютерах с использованием Неравномерный доступ к памяти архитектура.

Это все очень высокого класса. Средний компьютер Linux будет иметь единственный узел, называемый нулевым узлом. Все зоны будут принадлежать этому узлу. Чтобы увидеть узлы и зоны на вашем компьютере, загляните внутрь файл. Мы будем использовать для этого:

меньше / proc / buddyinfo

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

Узел 0, зона DMA 1 1 1 0 2 1 1 0 1 1 3 Узел 0, зона DMA32 2 67 58 19 8 3 3 1 1 1 17

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

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

  • 2: Имеется 2 из 2 ^ (* PAGESIZE) куски памяти.
  • 67: Имеется 67 из 2 ^ (1* PAGE_SIZE) куски памяти.
  • 58: Имеется 58 из 2 ^ (2* PAGESIZE) доступные куски памяти.
  • И так далее, вплоть до…
  • 17: Имеется 17 из 2 ^ (512* PAGESIZE) куски.

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

Swapping vs. Paging

Paging — это процесс, при котором Linux делит свою физическую оперативную память на куски фиксированного размера (4 КБ), называемые страницами (англ. pages»).

Swapping (или «подкачка памяти») — это процесс, при котором страница памяти копируется в специальное пространство на жестком диске, называемое пространством подкачки (англ. swap space»), освобождая занимаемый ею объем оперативной памяти. В Linux для этого существует специальная программа — менеджер памяти. Каждый раз, когда системе требуется больше памяти, чем ей физически доступно в данный момент, менеджер памяти ищет все редко используемые страницы памяти и вытесняет их на жесткий диск, предоставляя освободившуюся память другому приложению (процессу).

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

Рассмотрим основные различия между Swapping и Paging:

Swapping Paging
Процедура копирования памяти всего процесса. Метод выделения памяти.
Возникает тогда, когда память всего процесса переносится на диск. Возникает тогда, когда какая-то часть процесса переносится на диск.
Происходит временное вытеснение данных из основной памяти во вторичную. Непрерывный фрагмент памяти разбивается на несколько отдельных блоков фиксированного размера, называемых фреймами (frames) или страницами (pages).
Может выполняться без какого-либо управления памятью. Управляется менеджером памяти.
Выполняется над неактивными процессами. Выполняется только с участием активных процессов.

Как активировать Swap в Linux

Есть два разных способа активировать использование Swap, в зависимости от типа, который мы используем (раздел или файл). Мы можем проверить, есть ли в нашем Linux Swap и какого типа, выполнив следующую команду в терминале:

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

В случае, если мы используем типичную форму перегородки, то единственное, что мы должны сделать, когда установка Ubuntu — создать раздел нужного нам размера (рекомендуется в 1.5 раза больше ОЗУ), отформатированный как Linux-SWAP. Кроме того, мы также должны назначить ему точку монтирования Swap, чтобы операционная система подготовила указанный раздел для использования его в качестве swap.

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

В случае, если вы хотите включить использование Swap через файл , что мы должны сделать, это выполнить следующие команды:

Создайте файл подкачки (выбирая размер, изменяющий 1 ГБ для значения, которое мы хотим ему присвоить):

Затем мы даем ему разрешения, чтобы только root мог писать в указанный файл с помощью:

Мы даем файлу структуру, которая будет функционировать как файл подкачки:

И, наконец, активируем его с помощью:

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

Готово. Мы перезагружаем Linux и видим, как работает новый раздел подкачки. Если мы хотим, мы можем снова использовать команду «sudo swapon –show», чтобы проверить, действительно ли мы используем файл подкачки вместо раздела.

Пространство подкачки

Пространство подкачки может быть разделом диска или файлом. Пользователи могут создать пространство подкачки во время установки или позднее в любое желаемое время. Пространство подкачки может быть использовано для двух целей, расширить виртуальную память за пределы установленной оперативной памяти (RAM), а также для сохранения данных при гибернации (suspend-to-disk).

Иногда стоит включать Swap в зависимости от установленной оперативной памяти и количества требований для запуска желаемых программ. Если количество оперативной памяти меньше требуемого, тогда стоит включить подкачку. Это позволяет избежать состояния нехватки памяти (OOM), при котором механизм ядра Linux, OOM Killer, будет автоматически пытаться освободить память, убивая процессы. Чтобы увеличить количество виртуальной памяти до требуемого уровня, добавьте необходимую разницу как пространство подкачки. Например, если программа требует 7,5 GB памяти для запуска, а у вас установлено 4 GB оперативной памяти, добавьте разницу 3,5 GB как подкачку. В будущем добавляйте больше пространства к подкачке, учитывая требования.
Это вопрос личных предпочтений если вы считаете, что программы должны быть убиты, вместо включения подкачки. Самый большой недостаток в подкачке это снижение производительности, см. раздел

Для проверки статуса подкачки, используйте:

$ swapon --show

Или

$ free -h

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

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

Примеры некоторых параметров ядра Linux

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

  • fs.file-max — показывает максимальное значение для дескрипторов файлов, создаваемых и обрабатываемых ядром Линукс. «По умолчанию» устанавливается число, равное 10% оперативной памяти компьютера.

  • fs.aio-nr — обозначает заданное число операций ввода и вывода для файловой системы.
  • cad_pid — указывает идентификационный номер процесса (PID), который присваивается сигналу, при нажатии Ctrl+Alt+Del.
  • kernel.ctrl-alt-del — параметр, отвечающий за правильную перезагрузку по комбинации клавиш Ctrl+Alt+Del (связан с параметром cad_pid). При значении 0, ОС передает сигнал процессу, назначенному в cad_pid, если значение параметра больше 0, то ОС выполняет перезагрузку немедленно.
  • kernel.hostname — параметр позволяет произвести изменение имени вашего компьютера «на лету» (без процесса перезагрузки).
  • kernel.modules_disabled — выключает загрузку модулей ядра.
  • kernel.panic — выставлено количество секунд, оставшихся до начала процесса перезагрузки (после случая ошибки в ядре).
  • kernel.randomize_va_space — важный параметр, обеспечивающий безопасность вашей ОС, (служит против атак на переполнение буфера), включен «по умолчанию»
  • kernel.sysrq — включает все функции (значение 1) или отключает (значение 0) для управления ядром при помощи SysRQ.
  • abi.vsyscall32 — параметр, разрешающий (при его значении 1) исполнение 32-разрядных программ в 64-разрядной ОС.
  • debug.exception-trace — служит для вывода значений регистров процессора, стека вызова процедур в случае ошибки в ядре. Установлен во включенном «по умолчанию» состоянии.
  • dev.cdrom.autoclose — параметр предназначен для управления CDROM, при попытке его монтирования, может его автоматически закрыть (отключен «по умолчанию»).
  • net.ipv4.ip_forward — данная настройка применяется для роутеров, она разрешает или запрещает маршрутизацию пакетов.
  • net.ipv4.ip_local_port_range — определяет диапазон локальных портов, разрешенных для использования вашими программами.
  • net.ipv4.tcp_rmem — указывает объем памяти, которая выделена для работы TCP.
  • vm.laptop_mode — данный параметр будет полезен для работы ноутбуков, в частности, для экономии заряда батареи. Эта настройка позволяет хранить данные какое-то время в оперативной памяти компьютера (а не сразу записывать их на винчестер).
  • vm.swappiness — этот параметр служит для установки % свободной памяти, при достижении этого значения, данные будут автоматически переводиться в swap. «По умолчанию» в Ubuntu установлено значение этого параметра, равное 60. Т.е. ОС будет переносить в раздел swap такие разделы памяти, которые были не использованы в течении длительного промежутка времени.

Выше, мы привели только некоторые переменные настроек ядра Linux, для применения всех возможных параметров, рекомендуем изучать документацию на вашу ОС. Например, работая с переменными типа net. можно выставить оптимальные сетевые настройки для вашей операционной системы.

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

Linux не рассматривает вашу оперативную память как один большой однородный пул памяти. Он считает, что он разделен на несколько различных регионов, называемых зонами. Какие зоны присутствуют на вашем компьютере, зависит от того, 32-битный он или 64-битный. Вот упрощенное описание возможных зон на компьютере с архитектурой x86.

  • Прямой доступ к памяти (DMA): это 16 МБ памяти. Зона получила свое название потому, что давным-давно существовали компьютеры, которые могли осуществлять только прямой доступ к этой области физической памяти.
  • Прямой доступ к памяти 32: Несмотря на название, Direct Memory Access 32 (DMA32) — это зона, которую можно найти только в 64-разрядной версии Linux. Это не более 4 ГБ памяти. Linux, работающий на 32-битных компьютерах, может выполнять DMA только для этого объема ОЗУ (если только они не используют ядро ​​расширения физического адреса (PAE)), так зона получила свое название. Хотя на 32-битных компьютерах он называется HighMem.
  • Нормальный: на 64-битных компьютерах нормальная память — это вся ОЗУ объемом более 4 ГБ (примерно). На 32-битных машинах размер ОЗУ составляет от 16 до 896 МБ.
  • HighMem: существует только на 32-битных компьютерах Linux. Это вся ОЗУ более 896 МБ, включая ОЗУ более 4 ГБ на достаточно больших машинах.

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

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

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

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

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

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

  • Для переменной задано значение swappiness для Linux.
  • Значение установлено на 200 минус значение .

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

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

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

vmstat

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

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux интересуюсь всем, что связано с информационными технологиями и современной наукой.

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

Ваш сайт все интереснее от стать к статье.

Возможно не совсем в тему. Подскажите пожалуйста почему Linux Mint 17, может не видеть оперативную память? В биосе определяется 2 Гб, Win XP, установленная на этом же компьютере, тоже определяет 2 Гб, Mint, упорно показывает 1. В какую сторону думать?

Даже не знаю. попробуйте поспрашивать на специализированных форумах по аппаратному обеспечению.

Я грешу на опцию ядра highmem, но как проверить не знаю. Может попробывать другую версию ядра, сейчас стоит 3.13.0.24, не подскажите какое ядро лучше поставить?

Ставьте 4.4 или 4.6. Обычно во всех современных дистрибутивах ядро собрано с поддержкой highmem, но можете попробовать пересобрать. Также можно попробовать указать количество памяти в параметрах загрузки ядра с помощью опции mem (в мегабайтах)

Это в файле /boot/grub/grub.cfg?

Здравствуйте! Почему используется виртуальная память, когда ещё физической (озу) достаточно? В sysctl.conf добавил vm.swappiness = 10 vm.vfs_cache_pressure = 1000 ОЗУ 8ГБ, при 1-1,5ГБ уже используется swap, хотя должен при 10% свободной. Linux Debian 8. На Ubuntu Server 14.04 LTS эти же настройки работали.

Сервер на debian 14.04 на борту MySQL и nginx с виртуальными хостами Ужасно тормозят сайты использующие локальную БД (одна страница может открываться до 60 секунд) При таком раскладе это нормально (дело в нехватки ОЗУ? ведь в кэше 2549976 kB) или ковырять конфиги MySQL?

MemTotal: 4043988 kB MemFree: 246324 kB MemAvailable: 2816676 kB Buffers: 217996 kB Cached: 2549976 kB SwapCached: 0 kB Active: 2036160 kB Inactive: 1559340 kB Active(anon): 442784 kB Inactive(anon): 453880 kB Active(file): 1593376 kB Inactive(file): 1105460 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 8388604 kB SwapFree: 8388352 kB Dirty: 100 kB Writeback: 0 kB AnonPages: 827528 kB Mapped: 100952 kB Shmem: 69136 kB Slab: 166384 kB SReclaimable: 149268 kB SUnreclaim: 17116 kB KernelStack: 2608 kB PageTables: 11508 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 10410596 kB Committed_AS: 1655292 kB VmallocTotal: 34359738367 kB VmallocUsed: 0 kB VmallocChunk: 0 kB HardwareCorrupted: 0 kB AnonHugePages: 690176 kB CmaTotal: 0 kB CmaFree: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 58944 kB DirectMap2M: 4132864 kB

total used free shared buffers cached Mem: 3.9G 3.6G 232M 67M 213M 2.4G -/+ buffers/cache: 1.0G 2.9G Swap: 8.0G 252K 8.0G

Оперативная память (ОЗУ — оперативное запоминающее устройство или RAM — Random Access Memory ) — это та память, в которой хранятся исполняемые процессором программы — машинный код, файлы и любые данные для оперативной работы с ними, она энергозависима, то есть очищается при перезапуске или выключении ПК. При сохранении файла, после оперативной работы с ним, происходит его запись в ПЗУ — постоянное запоминающее устройство — жесткий диск или любой другой энергонезависимый накопитель.

От объема «оперативки» зависит количество программ или же, например, вкладок браузера, которые могут быть запущены одновременно в системе. Что интересно: при переходе компьютера в режим сна операционная система записывает весь массив данных, содержащихся в ОЗУ, в полном объеме (дамп) на жесткий диск, а после пробуждения эти данные возвращаются в «оперативку». Именно поэтому после выхода из режима сна мы получаем рабочее окружение с уже запущенными программами, которые были активны перед переходом в режим гибернации (сна).

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

  • Сколько доступно свободной оперативной памяти и каков ее полный объем
  • Какой тип у установленной оперативной памяти
  • Есть ли ошибки в оперативной памяти

Команды в статье приведены для исполнения их в терминале Ubuntu — Как открыть терминал

Что такое подкачка?

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

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

Алгоритм определения устаревших страниц

При выделении места для новой страницы бывает необходимо удалить какую-либо страницу, в данный момент находящуюся в памяти. Правила замещения страниц служат для принятия решения о том, какую именно страницу следует удалить из памяти. Идеальным кандидатом является «мёртвая» страница, которая больше не потребуется кому-либо (например, относится к завершённому процессу). Если же таких страниц нет в памяти (или их количества недостаточно), используется правило локального или глобального замещения страниц:

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

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

Наиболее часто используемые критерии поиска:

Least Recently Used. Удаляются те страницы, доступ к которым производился наиболее давно. Считается, что в последующем к таким страницам будет происходить минимум обращений.

Last Recently Used. Удаляются недавно освободившиеся страницы. Подразумеваются страницы только что завершившихся процессов.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Зов электронных книг
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: