Как узнать оперативную память linux

Что такое раздел подкачки linux?

Пыль веков

  • ► 

    (4)

    ► 

    июля
    (1)

    ► 

    июня
    (1)

    ► 

    февраля
    (1)

    ► 

    января
    (1)

  • ► 

    (22)

    ► 

    декабря
    (1)

    ► 

    ноября
    (1)

    ► 

    октября
    (2)

    ► 

    сентября
    (2)

    ► 

    августа
    (1)

    ► 

    июля
    (1)

    ► 

    июня
    (2)

    ► 

    мая
    (2)

    ► 

    апреля
    (3)

    ► 

    марта
    (3)

    ► 

    февраля
    (2)

    ► 

    января
    (2)

  • ► 

    (29)

    ► 

    декабря
    (3)

    ► 

    ноября
    (2)

    ► 

    октября
    (2)

    ► 

    сентября
    (2)

    ► 

    августа
    (4)

    ► 

    июля
    (3)

    ► 

    июня
    (2)

    ► 

    мая
    (2)

    ► 

    апреля
    (2)

    ► 

    марта
    (2)

    ► 

    февраля
    (2)

    ► 

    января
    (3)

  • ► 

    (27)

    ► 

    декабря
    (2)

    ► 

    ноября
    (3)

    ► 

    октября
    (2)

    ► 

    сентября
    (2)

    ► 

    августа
    (2)

    ► 

    июля
    (2)

    ► 

    июня
    (2)

    ► 

    мая
    (2)

    ► 

    апреля
    (3)

    ► 

    марта
    (3)

    ► 

    февраля
    (2)

    ► 

    января
    (2)

  • ► 

    (31)

    ► 

    декабря
    (3)

    ► 

    ноября
    (2)

    ► 

    октября
    (3)

    ► 

    сентября
    (3)

    ► 

    августа
    (4)

    ► 

    июля
    (3)

    ► 

    июня
    (2)

    • ► 

      мая
      (2)

    ► 

    апреля
    (3)

    ► 

    марта
    (2)

    ► 

    февраля
    (2)

    ► 

    января
    (2)

  • ► 

    (35)

    ► 

    декабря
    (2)

    ► 

    ноября
    (3)

    ► 

    октября
    (2)

    ► 

    сентября
    (3)

    ► 

    августа
    (3)

    ► 

    июля
    (2)

    ► 

    июня
    (3)

    ► 

    мая
    (3)

    ► 

    апреля
    (5)

    ► 

    марта
    (4)

    ► 

    февраля
    (2)

    ► 

    января
    (3)

  • ► 

    (64)

    ► 

    декабря
    (6)

    ► 

    ноября
    (4)

    ► 

    октября
    (3)

    ► 

    сентября
    (4)

    ► 

    августа
    (5)

    ► 

    июля
    (6)

    ► 

    июня
    (7)

    ► 

    мая
    (7)

    ► 

    апреля
    (6)

    ► 

    марта
    (6)

    ► 

    февраля
    (4)

    ► 

    января
    (6)

  • ► 

    (91)

    ► 

    декабря
    (7)

    ► 

    ноября
    (7)

    ► 

    октября
    (5)

    ► 

    сентября
    (11)

    ► 

    августа
    (5)

    ► 

    июля
    (8)

    ► 

    июня
    (11)

    ► 

    мая
    (6)

    ► 

    апреля
    (6)

    ► 

    марта
    (5)

    ► 

    февраля
    (12)

    ► 

    января
    (8)

  • ► 

    (59)

    ► 

    декабря
    (10)

    ► 

    ноября
    (9)

    ► 

    октября
    (9)

    ► 

    сентября
    (9)

    ► 

    августа
    (13)

    ► 

    июля
    (9)

Swap-раздел

Прежде, чем добавить в Linux дополнительный своп-раздел, его нужно специальным образом подготовить. Для начала нужно убедиться, что добавляемый раздел помечен как своп, а затем создать в нём файловую систему своп. Чтобы убедиться в том, что нужный раздел помечен как своп, от имени пользователя root запустите:

fdisk -l /dev/hdb

заменив /dev/hdb на путь к вашему диску, на котором планируете размещать своп-раздел. После ввода команды вы увидите примерно следующее:

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

Если раздел не помечен как swap, вам нужно будет отметить его таковым при помощи команды «t» меню fdisk. Будьте осторожны при работе с разделами, поскольку вы можете по ошибке удалить раздел с важными данными или изменить идентификатор раздела, на котором установлена ваша система. Все данные на swap-разделе будут уничтожены, так что лишний раз убедитесь в правильности того, что собираетесь сделать. Также имейте ввиду, что разделы Solaris имеют такой же ID, как и swap-разделы в Linux, так что вы можете по ошибке удалить раздел с Solaris!

После того, как пометили swap-раздел, вам нужно подготовить его при помощи программы mkswap, запущенной от имени root:

mkswap /dev/hdb1

И, если всё прошло без ошибок, ваш swap-раздел готов к использованию. Теперь вы можете подключить его к системе:

swapon /dev/hdb1

Проверить, используется ли подключённый раздел, можно при помощи команды swapon -s. Для того, чтобы swap-пространство автоматически монтировалось при загрузке системы, добавьте строку в ваш /etc/fstab:

/dev/hdb1  none   swap    sw    0    0

Первый параметр указывает имя устройства — /dev/hdb1. Своп-разделы не могут иметь точки монтирования в файловой системе, поэтому второй параметр равен none. Тип файловой системы, третий параметр — swap. Четвёртый параметр,опции файловой системы — sw. И последние два параметра установлены равными нулю, поскольку они не используются в контексте swap-раздела.

Если необходимо проверить корректность внесённым вами изменений в /etc/fstab, вы можете целиком отключить использование swap при помощи команды swapoff -a, а затем включить командой swapon -a, которая подключит все swap-разделы, описанные в /etc/fstab. Проверить, всё ли подключилось как надо, можно, как обычно, командой swapon -s.

Отключаем лишние службы / сервисы

В Ubuntu 16.04 используется systemd, чтобы посмотреть ПО которое запускается во время начальной загрузки, мы можем использовать следующую команду:

Sudo systemctl list-units —type service

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

Список загружаемых сервисов systemd

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

Sudo systemctl disable apparmor.service

Apport — это служба которая предназначена для отправления отчетов об ошибках в Canonical. Да, вроде и полезный инструмент, но представьте ситуацию, у вас мобильный 3G интернет и это окно об ошибках постоянно маячит перед глазами, в данной ситуации имеет смысл отключить данную службу, иногда это окно уж очень слишком часто вылазит когда его не ждешь, я лично отключил сразу же после установки так как иногда оно просто выводит своими появлениями когда его не ждешь. Отключать ли вам, вы должны сами решить для себя. Для отключения набираем команду:

Sudo systemctl disable apport.service

Avahi — это демон который предназначен для обнаружения служб / компьютеров в домене.local. Вроде и удобная штука, но на практике, если у вас есть пара компьютеров в локальной сети, смысла держать этот демон активным нет, мoжете смело отключить:

Sudo systemctl disable avahi-daemon.service

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

Sudo systemctl disable cgmanager.service

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

Sudo systemctl disable colord.service

ModemManager — это интерфейс, позволяющий реализовать подключение к сети интернет используя мoдемы, каналы связи (2G/3G/4G/CDMA), способы соединения (RS232, USB, Bluetooth) и методoв управления (AT, QCDM, QMI, MBIM). Если у вас кабельный интернет и вы не планируете использовать модем, отключайте:

Sudo systemctl disable ModemManager.service

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

Sudo systemctl disable speech-dispatcher.service

Whoopsie — эта служба имеет те же корни что и Apport, если вы ее отключили, так же стоит и поступить с Whoopsie. Прежде всего откройте конфиг /etc/default/whoopsie
здесь нам нужно изменить значение в параметре report_crashes замени true на false, сохраняем и после отключаем службу:

Sudo systemctl disable whoopsie.service

Настройка файла подкачки в Ubuntu 20.04

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

1. Проверка места на диске

Необходимо убедится, что на жёстком диске есть достаточно свободного места. Самый простой способ узнать количество свободного места в терминале – воспользоваться утилитой df:

В данном случае есть достаточно места для размещения и увеличения пространства подкачки. Размер swap в Ubuntu 20.04 зависит от потребностей. Обычно рекомендуют использовать объем в два раза больше, чем реальный размер оперативной памяти. Но как правило больше 4 Гб использовать не нужно. Если планируется использовать гибернацию на персональном компьютере, то нужно использовать объем, равный объему ОЗУ.

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

Самый быстрый способ создать swap файл в Ubuntu 20.04 – это использовать утилиту fallocate, она создает файл нужного размера мгновенно. Поскольку в качестве примера используется машина с 8 Гб оперативной памяти, необходимо добавить раздел подкачки на 3 Гб. Для этого необходимо выполнить команду:

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

Активация swap

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

Теперь только пользователь root может читать и изменить данный файл:

Далее необходимо создать файловую систему swap командой:

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

После этого можно убедиться, что swap включен, выполнив команду:

Так же наличие swap можно проверить при помощи утилиты free, выполнив команду:

Файл подкачки был успешно создан и активирован. Теперь памяти доступно больше и система не зависнет при нехватке оперативной памяти. Но данный способ будет работать только до перезагрузки устройства.

Постоянный файл подкачки

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

Как выглядят файлы конфигурации?

Теперь давайте взглянем на некоторые реальные конфигурационные файлы. Как мы упоминали ранее, они бывают разных форм и размеров. Один файл конфигурации, с которым вы почти наверняка знакомы, — это файл hosts, который используется в Windows, Mac и Linux для сопоставления IP-адресов с именами узлов вручную.

В Windows вы можете найти его в папке c: \ windows \ system32 \ drivers \ etc \ hosts . На Mac и Linux это будет в / etc / hosts .

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

В Linux и Mac OS X некоторые программы требуют, чтобы пользователь сохранял файл конфигурации в домашнем каталоге с точкой в ​​начале имени файла. Эти конфигурационные файлы иногда имеют расширение .rc, и в разговорной речи называются «точечные файлы».

Одна из программ, которая следует этому конкретному соглашению, — текстовый редактор Vim . В прошлом мы говорили о том, как настроить VIM, отредактировав его конфигурационный файл настроек настроек

Файлы конфигурации даже используются в видеоиграх для определения и управления некоторыми действиями, такими как сопоставления клавиш. Конфигурационный файл ниже взят из Black Mesa — фанатского ремейка оригинального Half Life .

В оригинальной версии Deus Ex , выпущенной в 2000 году, пользователю фактически пришлось отредактировать файл конфигурации, чтобы включить читы!

При разработке собственного ПО

При разработке собственного ПО для защиты памяти, содержащей незащищенные конфиденциальные данные, следует применять системные вызовы mlock()иmlockall()

#include<sys/mman.h>intmlock(constvoid*addr,size_t len);intmunlock(constvoid*addr,size_t len);intmlockall(int flags);intmunlockall(void);

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

man mlock

Отображение памяти в команде top: VIRT, RES и SHR

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

VIRT является сокращением от virtual size of a process (виртуальный размер процесса) и представляет собой общий объем используемой памяти: памяти, отображаемой самой в себя (например, памяти видеокарты для сервера X), файлов на диске, которые отображаются в память (особенно это касается разделяемых библиотек) и памяти, разделяемой совместно с другими процессами. Значение VIRT указывает, сколько памяти в настоящий момент доступно программе.

RES является сокращением от resident size (размер резидентной части) и является точным указателем того, сколько в действительности потребляется процессом реальной физической памяти. (Что также соответствует значению, находящемуся непосредственно в колонке %MEM). Это значение практически всегда меньше, чем размер VIRT, т.к. большинство программ зависит от библиотеки C.

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

Страничный кеш

Больше всего в системе память занимает страничный кеш (Page Cache). Вся работа с файлами на диске (запись или чтение) идет через Page Cache. Запись в linux всегда быстрее чтения, так как запись вначале идет в Page Cache, а затем сбрасывается на диск. А при чтении ядро ищет файл в Page Cache, и если не находит читает файл с диска. Узнать сколько сейчас система тратит памяти на Page Cache можно выполнив команду free:

$ free -h
               total        used        free      shared  buff/cache   available
Mem:           976Mi        74Mi       764Mi       0,0Ki       137Mi       765Mi
Swap:          974Mi          0B       974Mi

Страничный кеш показан в колонке buff/cache. Как мы видим у нас занято 137MB страничным кешем. Хотя тут не только Page Cache, тут также находится Buffer, который тоже связан с файлами на диске.

Посмотреть информацию по Page Cache и Buffer отдельно можно в файле /proc/meminfo:

$ egrep "^Cach|^Buff" /proc/meminfo
Buffers:           16012 kB
Cached:           101220 kB

При создании нового файла, запись идет в cache, а страницы памяти для этого файла помечаются как грязные (dirty). Раз в какой-то промежуток времени грязные страницы сбрасываются на диск, и если таких страниц будет слишком много, то они тоже сбросятся на диск. Управлять этим можно через параметры sysctl ():

  • vm.dirty_expire_centisecs — интервал сброса грязных страниц на диск в сотых долях секунд (100 = 1с);
  • vm.dirty_ratio — объем оперативной памяти в процентах который может быть выделен под Page Cache.
$ sudo sysctl vm.dirty_expire_centisecs
vm.dirty_expire_centisecs = 3000

$ sudo sysctl vm.dirty_ratio
vm.dirty_ratio = 20

Существует утилита – vmtouch, она может показать какой процент указанного файла находится в страничном кеше. Но её нужно скачивать из git и устанавливать:

$ sudo apt update
$ sudo apt install git make gcc
$ git clone https://github.com/hoytech/vmtouch.git
$ cd vmtouch
$ make
$ sudo make install

$ vmtouch /etc/passwd
           Files: 1
     Directories: 0
  Resident Pages: 1/1  4K/4K  100%
         Elapsed: 6.3e-05 seconds

Видно что весь файл /etc/passwd сейчас находится в Page Cache (Resident Pages).

Узнать объем грязных страниц можно из файла /proc/meminfo. А команда sync записывает грязные страницы на диск:

$ grep Dirty /proc/meminfo
Dirty:                24 kB
# sync
$ grep Dirty /proc/meminfo
Dirty:                 0 kB

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

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

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

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

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

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

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

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

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

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

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

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

Отлично, операционная система распознала наш файл подкачки и начала его использовать. Мы видим тип в поле TYPE и размер в поле SIZE.

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

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

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

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

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

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

Примеры некоторых параметров ядра 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. можно выставить оптимальные сетевые настройки для вашей операционной системы.

When Does Swap Actually Cut In?

We’ve established that the Linux swappiness value sets a preference for the type of memory pages that will be scanned for potential reclamation. That’s fine, but something must decide when swap is going to cut in.

Each memory zone has a high water mark and a low water mark. These are system derived values. They are percentages of the RAM in each zone. It is these values that are used as the swap trigger thresholds.

To check what your high and low water marks are, look inside the file with this command:

less /proc/zoneinfo

Each of the zones will have a set of memory values measured in pages. Here are the values for the DMA32 zone on the test machine. The low water mark is 13966 pages, and the high water mark is 16759 pages:

  • In normal running conditions, when free memory in a zone drops below the zone’s low water mark, the swap algorithm starts scanning memory pages looking for memory that it can reclaim, taking into account the relative values of  and .
  • If the Linux swappiness value is set to zero, swap occurs when the combined value of file pages and free pages are less than the high water mark.

So you can see that you cannot use the Linux swappiness value to influence swap’s behavior with respect to RAM usage. It just doesn’t work like that.

Redeeming swappiness from common misconceptions

From swappiness, the term swapping is conceived. For swapping to take place, RAM (Random Access Memory) has to have some system data. When this data is written off to a dedicated hard disk location like a swap file or a swap partition, the system RAM is freed of some needed space. This freeing up of the system RAM constitutes the definition of swapping.

Your Linux OS contains a swappiness value configuration setting. The existence of this value continues to brew many misconceptions about its intended system functionality. The most common one is its association with the RAM usage threshold. From the definition of swapping, swappiness is misunderstood as the maximum RAM storage value that triggers the onset of swapping.

Вам нужен раздел подкачки?

Означает ли это, что необходим раздел подкачки? Вовсе нет! Система Linux может отлично работать без раздела подкачки. Мы уже обсуждали преимущества раздела подкачки. А почему бы вам не захотеть его иметь?

Когда разделы подкачки не помогают

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

Допустим, вы установили Linux на старый нетбук с 2 ГБ оперативной памяти и жестким диском со скоростью вращения 5400 об/мин. Имея всего 2 ГБ памяти, вы можете себе представить, что он довольно быстро заполняется несколькими открытыми вкладками браузера. Раздел подкачки позволяет вам держать их все открытыми при переполнении памяти.

Но затем появляется узкое место из-за скорости жесткого диска 5400 об / мин. Поскольку жесткий диск работает очень медленно, а системе постоянно требуется доступ к разделу подкачки, нетбук становится очень медленным. Машина достаточно медленная, чтобы ее нельзя было использовать, если вы не закроете все, чтобы освободить память.

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

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

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

В таких случаях вы можете пожелать, чтобы у вас был раздел подкачки, даже если он использовался только один раз. Это зависит от того, часто ли вам не хватает места для хранения. Вы заметили бы, если бы у вас было на 4 ГБ меньше свободного места, потому что вы посвятили эту сумму подкачке?

Как создать и подключить файл подкачки SWAP

Далее, в работе используется командная строка SSH.
Инструментарий: Far Manager или Putty.
Для примера приводятся команды из под . Если Вы работаете не под , перед командами задавайте префикс

Проверка наличия свопа в системе

Для начала, нужно убедиться, что своп ещё не подключен:

swapon -s

Если команда выдала пустой результат или что-то навроде:

Filename                Type        Size    Used    Priority

— значит, своп, скорее всего отсутствует.

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

free -m

Проверка наличия свободного места на диске

Теперь, надо проверить, сколько свободного места есть на диске:

df -h

В результате, мы увидим что-то подобное:

:~# df -h
Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
/dev/vda1           30G          20G  9,0G           66% /
udev                10M            0   10M            0% /dev
tmpfs              403M          41M  362M           11% /run
tmpfs             1006M         336K 1005M            1% /dev/shm
tmpfs              5,0M            0  5,0M            0% /run/lock
tmpfs             1006M            0 1006M            0% /sys/fs/cgroup
tmpfs             1006M         492K 1005M            1% /tmp

Как мы видим, доступно 9 гигабайт дискового пространства — вполне достаточно, чтобы создать своп-файл.

Какого размера создать swap

Исходите из принципа — сколько может понадобиться, столько и выделяйте. Как правило, можно начинать с размера объёма оперативной памяти, либо его удвоенного количества. Например, если у вас в системе 2 гигабайта оперативки, своп можно сделать размером 2-4 гигабайта, как правило, этого должно хватать. Но, Вы можете скорректировать его размер под себя.

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

Допустим, мы хотим создать swap-файл размером 4 гигабайта.
Далее, здесь существует 2 подхода, традиционный медленный и новый быстрый:

Быстрый способ
Используем :
fallocate -l 4G /swapfile

Результатом будет пустая строка, это нормально.
В отличие от , результат будет получен почти сразу, и я рекомендую именно его.

Традиционный, медленный способ
Или используем команду:
dd if=/dev/zero of=/swapfile bs=1G count=4

Синтаксис команды простой:

  • dd — команда предназначена для того, чтобы что-то куда-то копировать побайтово;
  • if=/dev/zero — указывает на источник, т.е. на то, откуда копируем, в данном случае из /dev/zero — это специальный файл в UNIX-подобных системах, представляющий собой источник нулевых байтов;
  • of=/swapfile — указывает путь назначения, куда копируем данные;
  • bs=1G — количество байт, которые будут записаны за раз. В нашем случае, 1 гигабайт. Обозначения: — гигабайт, — мегабайт, — килобайт, и так далее;
  • count=4 — сколько блоков размером с будет создано, в нашем случае 4.

Будьте очень внимательны с синтаксисом команды, потому что если, например, ошибиться с определением пути для (куда сохранять файл), можно повредить данные на диске.

Теперь, когда файл создан, проверим результат:

ls -lh /swapfile

В результате увидим:
Как видим, файл создался верно и с нужным объёмом.

Как подключить SWAP файл

Для начала, ограничим права доступа к вновь созданному файлу.

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

chmod 600 /swapfile

Проверим результат:

ls -lh /swapfile

В результате, мы должны увидеть подобное:
Права прописаны верно.

Теперь нужно сделать из файл подкачки:

mkswap /swapfile

В результате, увидим примерно следующее:

Теперь, файл готов в роли свопа. Подключим его к системе:

swapon /swapfile
swapon: /swapfile: swapon failed: Operation not permitted

Всё, теперь своп подключен и работает. Осталось проверить правильность работы самой первой командой:

swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        4193300  0       -1

Своп также будет виден в стандартных командах:

free -m
             total       used       free     shared    buffers     cached
Mem:          2010        1887       122          0          5         30
-/+ buffers/cache:         827       1183
Swap:         4095          0       4095

Всё, теперь точно, своп в системе готов и будет использоваться при необходимости.

Добавление свопа в автозагрузку

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

echo "/swapfile    none    swap    sw    0    0" >> /etc/fstab

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

nano /etc/fstab

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

Раздел подкачки (англ. «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.

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

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

Why is my swap not being used?

My swap is not being used! When I issue the free command, it shows something like this:

tom@tom:~$ free
             total       used       free     shared    buffers     cached
Mem:        515980     448664      67316          0      17872     246348
-/+ buffers/cache:     184444     331536
Swap:       674688          0     674688

Note: This regards mainly swap on hard disk partitions, but it could help anyway. In these examples /dev/hda8 is considered as swap.

Swap may not be needed

Start many memory consuming applications (e.g. Gimp, web browsers, LibreOffice etc) and then issue the free command again. Is swap being used now?

Ubuntu Desktop uses Swap to Hibernate (PC off, no power needed, program states saved). If Hibernation is important to you, have more swap space than ram + swap overflow.

Is there a swap partition at all?

Use this command to see all partitions

sudo parted --list

You should be able to see something like this in the output

 5      236GB   256GB   20.0GB  linux-swap(v1)

If not, you either need to or create a swap partition. To create a swap partition you can

  • boot from your Ubuntu install CD, create a swap partition out of the free space on your hard disk and then interrupt your installation.
  • use Cfdisk.

Enabling a swap partition

In case you do have a swap partition, there are several ways of enabling it.

  • Use the following command
    cat /etc/fstab
  • Ensure that there is a line link below. This enables swap on boot.
    /dev/sdb5       none            swap    sw              0       0
  • Then disable all swap, recreate it, then re-enable it with the following commands.
    sudo swapoff -a
    sudo /sbin/mkswap /dev/sdb5
    sudo swapon -a
Понравилась статья? Поделиться с друзьями:
Tehnik Shop
Добавить комментарий

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