- Файл подкачки Linux — что это и как с ним работать
- Проверка на наличие файла подкачки в ОС Linux
- Создание swap Linux
- Как настроить Swapiness
- Размер файла подкачки в ОС Линукс
- Удаление swap в операционной системе Линукс
- Итоги
- SWAP для Linux
- Введение
- Нужен SWAP или нет?
- Размер SWAP
- Варианты размещения SWAP
- SWAP-раздел
- SWAP-файл
- ZRAM и ZSWAP
- .swp Расширение файла
- Тип файла1 Vi Swap File
- Binary
- Что такое SWP файл?
- Использование команд ps, kill и nice для управления процессами в Linux
- Вступление
- Как просматривать запущенные процессы в Linux
- Как использовать ps для получения списка процессов
- Примечание об идентификаторах процессов (PID)
- Как отправлять сигналы процессам в Linux
- Как отправлять процессам сигналы при помощи PID
- Как использовать сигналы для других целей
- Как отправлять сигналы процессам по имени
- Как установить приоритеты процессов
- Итоги
Файл подкачки Linux — что это и как с ним работать
Современные устройства, функционирующие на различных операционных системах, имеют файл подкачки. Он служит для подстраховки оперативной памяти компьютера. В этом вопросе ОС Linux не является исключением из правила.
Для чего это необходимо? Когда пользователь ПК загружает оперативную память под завязку, устройство получает дополнительный объем памяти из файла подкачки. В каких ситуациях это может потребоваться:
- Для сохранения нормальной производительности компьютера в том случае, если запас ОЗУ постепенно заканчивается. Без файла подкачки устройство начнет заметно притормаживать. Это отрицательно скажется на комфорте работы с ПК.
- Для оптимального распределения приоритетов (система определит, какой вид памяти будет выделен на те или иные процессы).
Эта информация пригодится всем, кто имеет дело со swap. Данный термин имеет следующее значение: swap – это файл в системном разделе или отдельный раздел диска. В большинстве своем его принято создавать в процессе установки ОС. Но если есть такая необходимость, можно создать swap в любой другой момент времени.
В отдельно взятых случаях желание пользователя относительно присутствия swap на ПК не учитывается. В некоторых версиях ОС Ubuntu Linux файл подкачки создается по умолчанию, и с этим уже ничего не поделать. Остается лишь принять это, как факт. Многие юзеры не довольны таким решением, поскольку файл подкачки на их компьютерах занимает порядком 1 Гб памяти.
Проверка на наличие файла подкачки в ОС Linux
Если swap есть на используемом устройстве, с ним можно проделывать множество различных действий. Однако прежде чем приступить к конкретной задаче, нужно хотя бы убедиться в наличии swap на конкретном ПК. А то вдруг окажется так, что swap и вовсе отсутствует.
Чтобы посмотреть swap в операционной системе Линукс, необходимо задать определенную команду. Она выглядит следующим образом:
- total — всего памяти.
- used — сколько используется в данный момент.
- free — свободная память, не используется.
К сожалению, данная команда показывает только общую информацию (total, used, free) и не может дать четкого определения тому, что это файл подкачки или смонтированный раздел. Именно поэтому для дополнительноой проверки воспользуемся другой командой — «swapon».
Как видно из скриншота выше, swap находится в разделе /dev/sda5, размером 2,8 gb и это не файл.
Давайте предположим следующий возможный вариант развития сценария: файл подкачки отсутствует на вашем компьютере. Как это выявить? Введите в терминале команду free -h, и ознакомьтесь с полученной информацией. Если в строке «Подкачка» стоят сплошные нули, то swap не создан в операционной системе Linux.
Создание swap Linux
Если файла подкачки нет, будет логичным приняться за его создание. Далее вы ознакомитесь с пошаговой инструкцией по созданию swap для Линукс.
Воспользуйтесь терминалом для реализации задуманного.
# fallocate -|1G /swapfile
Примечание: 1 G – величина файла подкачки.
Чтобы защитить swap, необходимо установить на этот файл нужные права. Сделайте это при помощи:
# chmod 600 /swapfile
Примечание: в конце этой строки стоит название swap файла. Наименование выбирается на свое усмотрение. Его можно поменять.
Права 600 означает — владелец может читать/писать, остальным все запрещено.
- Как создать файловую систему
Нужный объект создан, но на данный момент ОС Linux не определяет его, как файл подкачки. Необходимо воспользоваться специальной командой для устранения этой проблемы:
По завершению операций, описанных выше, ОС Линукс начинает понимать, что новый объект возьмет на себя роль файла подкачки. Пришло время активировать его. Для этих целей введите в терминале следующее:
Как посмотреть, произошло ли распознание файла подкачки? Задайте в строке следующую команду:
При правильном следовании инструкции вы увидите тип файла и его величину в соответствующих полях.
- Как сохранить настройки
Внесенные коррективы имеют временный характер – они утратят свою актуальность сразу же после перезагрузки устройства. Их нужно сделать постоянными, но к этому вернемся чуть позже. Для начала следует произвести другое важное действие. А теперь попробуем создать резервную копию swap. Для этих целей введите в строке:
# cp /etc/fstab /etc/fstab.back
Настройки будут сброшены после перезапуска компьютера. Чтобы избежать этого, необходимо вписать в файл некоторую информацию. Осуществите эту идею с помощью:
$ echo ’/swapfile none swap sw 0 0’ | sudo tee -a /etc/fstab
Дело сделано. Теперь можно смело перезапускать устройство. Сохраненные данные останутся на месте.
Как настроить Swapiness
ОС Linux может использовать swap с разной частотой. Частота использования может варьироваться от 0 до 100. Она задается в параметрах swap.
Значение, приближенное к «0» означает, что система начнет обращаться к файлу подкачки только в самых экстренных случаях (как страховочный вариант). Значение, приближенное к «100» означает, что система начнет освобождать физическую память, перемещая объекты в раздел подкачки.
Команда для проверки установленного параметра в устройстве:
Если указанное значение вам подходит, можно считать, что настройки завершены. В обратном случае нужно поменять это значение на более подходящий вариант. Например:
В приведенном примере «25» – новое значение. Вы можете выбрать число по собственному усмотрению. Главное, чтобы значение попадало в диапазон от 0 до 100. После внесения изменений нужно еще раз позаботиться о том, чтобы они не обнулились после перезапуска системы. Введите в строке терминала запрос:
Запустите текстовый редактор (обязательно с правами суперпользователя). С его помощью нужно прописать некоторую информацию в конце файла. Значение, которое нужно вписать:
vm.swapiness=25 (или любое другое значение, которое вас устроит).
Размер файла подкачки в ОС Линукс
Существует несколько способов увеличения/уменьшения swap файла в устройствах, функционирующих на ОС Linux. Перед тем, как разобраться с этим вопросом подробнее, следует уделить несколько секунд своего внимания важному напоминанию:
При отключении swap операционная система компьютера начинает использовать только ОЗУ. Если объем оперативной памяти закончится, устройство может зависнуть. Все рабочие процессы ПК остановятся.
Чтобы избежать подобных неприятностей, нужно создать запасной (временный) файл подкачки перед тем, как удалять или изменять swap. Обязательны ли эти действия к выполнению? Здесь нужно смотреть по ситуации. Если ОЗУ устройства достаточно велика, можно вполне обойтись и без создания второго swap файла. В этом нет ничего рискованного.
Теперь приступаем к следующему этапу настройки – корректировке величины файла. Чтобы все прошло безопасно, swap нужно отключить. Введите в строке запрос:
Чтобы изменить величину swap, введите в строке:
# fallocate -| 2G /swapfile
Вместо «2G» укажите подходящую для вас величину файла подкачки. Для его форматирования воспользуйтесь этой командой:
И последнее действие – включение файла подкачки. Попробуйте включить его при помощи:
Интересная информация: пользователь может создавать и использовать несколько swap файлов на устройстве с ОС Linux.
Удаление swap в операционной системе Линукс
Иногда бывают ситуации, когда пользователю устройства необходимо удалить файл подкачки. Это делается очень быстро, но для начала следует выключить swap, затем удалить.
Теперь можно спокойно приступать к удалению при помощи команды «rm».
Важное напоминание: при создании нового файла подкачки в ОС Линукс придется снова установить права на swap.
Итоги
Концепция swap для операционной системы Linux очень проста. Ознакомившись с нашей статьей, вы сможете проверить устройство на присутствие файла подкачки, создать его, правильно настроить и безопасно удалить.
Источник
SWAP для Linux
SWAP один из важных параметров для стабильной работы операционной системы Linux. Споров о том как правильно использовать в интернете существует масса. Для правильной настройки надо иметь понимание для чего используется ваша система.
Введение
Постараюсь коротко рассказать основные моменты которые надо учитывать и дать практические советы проверенные на личном опыте.
Нужен SWAP или нет?
Однозначно нужен! Можно обойтись и без него, но тогда имейте в виду, что:
- SWAP используется при организации режима сна и при его отсутствии про этот режим можно забыть,
- Если SWAP отсутствует и память будет исчерпана тогда компьютер зависнет и потребуется выполнять полный сброс (hard reset). У меня был случай когда браузер Chrome скушал всю память и повесил систему.
Если в первом случае вы можете отказаться от использования режима сна, то во втором никто и никогда не даст вам гарантии что какая-то используемая вами программа не даст сбой и заполнив всю память не повесит систему.
Размер SWAP
Советов по размеру множество, но мы остановимся на советах разработчиков Red Hat (CentOS):
- Если памяти 2G то необходимый объем S = M + 2
При современных объемах жестких дисков я бы не стал жалеть места на размер SWAP и уверяю вас что экономия места в данном случае может привести к гораздо большим проблемам.
Варианты размещения SWAP
- на разделе диска,
- в файле,
- или в оперативной памяти использую zRAM.
Исторически в Linux SWAP размещался на разделе, но в современных дистрибутивах производительность SWAP-файла не уступает SWAP-разделу и это весьма радует.
SWAP-раздел
Когда вы точно знаете, что размер оперативной памяти меняться не будет и вы точно уверены в размере SWAP разумно выделить раздел при установке системы.
SWAP-файл
Использование файла очень удобно особенно когда нет точного понимания какие будут окончательные аппаратные параметры системы. Файл можно создать в любом удобном месте и необходимым вам размером. Ниже я расскажу как это сделать.
ZRAM и ZSWAP
Вариант с использованием этих вариантов требует наличие хорошего опыт в использовании Linux систем. На мой взгляд данный способ имеет смысл использовать с хорошим знанием системы на которой это будет работать.
ZRAM — это модуль ядра Linux, позволяющий сжимать содержимое оперативной памяти, и таким образом увеличивать ее объем в несколько раз. ZRAM создает сжатое блочное устройство в ОЗУ которое чаще всего используется как swap. При этом степень сжатия данных получается в среднем 3:1. Это означает что на 1 гигабайт подкачки будет использовано в 333 мегабайт физической памяти.
ZSWAP — отличается от ZRAM тем, что использует существующий swap-раздел на диске, а в ОЗУ создаётся пул со сжатыми данными (кэшем). После того как пул до отказа забьётся сжатыми данными, он сбросит их в раздел подкачки и снова начнёт принимать и сжимать данные. По утверждению разработчиков, в их конфигурации при компиляции ядра в ситуации когда происходит свопинг, выигрыш по объему ввода/вывода составил 76%, а время выполнения операции сократилось на 53%. При использовании ZSWAP, используется раздел swap на диске, в ОЗУ хранится только сжатый кэш.
Источник
.swp Расширение файла
Тип файла1 Vi Swap File
Разработчик | Bill Joy |
Категория | Разное |
Формат | Binary |
Binary
This file is saved in a binary format, which requires a specific program to read its contents.
Что такое SWP файл?
Файл подкачки, созданный текстовым редактором Vi или одним из его вариантов, таких как Vim (Vi iMproved) и gVim; хранит версию восстановления файла, который редактируется в программе; также служит в качестве файла блокировки, так что ни один другой сеанс редактирования Vi не может одновременно записывать файл.
SWP-файлы создаются сразу же после запуска сеанса редактирования текста Vi, и они сохраняются в том же каталоге, что и исходный файл. Например, текстовый файл с именем example.txt имел бы файл подкачки с именем .example.txt.swp.
Если сеанс Vi завершается из-за программы «kill» или «crash», файл SWP все еще остается , Это позволяет пользователям восстанавливать данные, используя опцию «(R) ecover» при открытии исходного файла. Однако, если вам не нужно восстанавливать данные, вы можете вручную удалить SWP-файл, чтобы сообщение перестало появляться.
При попытке открыть файл с файлом подкачки Vi предоставляет следующее сообщение : «Файл обмена .example.txt.swp уже существует!» (где example.txt — это файл, который открывается). В этом диалоговом окне вы можете выбрать следующие параметры: 1) [O] pen Только для чтения, 2) (E) dit, 3) (R) ecover, 4) (Q) uit или 4) (A) bort.
ПРИМЕЧАНИЕ. Оригинальный редактор Vi был разработан Биллом Джой, соучредителем Sun Microsystems.
Источник
Использование команд ps, kill и nice для управления процессами в Linux
Вступление
На сервере Linux, как и на любой другой машине, можно запускать приложения. Компьютер рассматривает их как так называемые «процессы».
В то время как Linux обрабатывает низкоуровневое закадровое управление жизненным циклом процесса, пользователю может понадобиться другой способ взаимодействия с операционной системой для управления процессом на более высоком уровне.
Данное руководство затрагивает некоторые простейшие аспекты управления процессами. Для этого Linux предоставляет широчайший набор инструментов.
Данные понятия будут рассмотрены на примере сервера Ubuntu 12.04, но любой современный дистрибутив Linux будет работать таким же образом.
Как просматривать запущенные процессы в Linux
Самый простой способ узнать, какие процессы запущены на сервере в данный момент, – использовать команду top:
top
top — 15:14:40 up 46 min, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 56 total, 1 running, 55 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1019600k total, 316576k used, 703024k free, 7652k buffers
Swap: 0k total, 0k used, 0k free, 258976k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
7 root RT 0 0 0 0 S 0.0 0.0 0:00.03 watchdog/0
8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset
9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
Верхняя часть выведенной информации предоставляет статистические данные системы, а именно нагрузку на систему и общее количество задач.
Можно увидеть, что 1 процесс запущен, а 55 процессов находятся в режиме ожидания (иначе говоря, простаивают, не используя ресурсы процессора).
Нижняя часть полученной информации отображает запущенные процессы и статистику по их использованию.
Усовершенствованная версия команды top под названием htop доступна в хранилищах. Чтобы установить ее, используйте данную команду:
sudo apt-get install htop
Запустив команду htop, можно увидеть более удобное для пользователя отображение информации:
htop
Mem[||||||||||| 49/995MB] Load average: 0.00 0.03 0.05
CPU[ 0.0%] Tasks: 21, 3 thr; 1 running
Swp[ 0/0MB] Uptime: 00:58:11
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
1259 root 20 0 25660 1880 1368 R 0.0 0.2 0:00.06 htop
1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 /sbin/init
311 root 20 0 17224 636 440 S 0.0 0.1 0:00.07 upstart-udev-brid
314 root 20 0 21592 1280 760 S 0.0 0.1 0:00.06 /sbin/udevd —dae
389 messagebu 20 0 23808 688 444 S 0.0 0.1 0:00.01 dbus-daemon —sys
407 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.02 rsyslogd -c5
408 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.00 rsyslogd -c5
409 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.00 rsyslogd -c5
406 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.04 rsyslogd -c5
553 root 20 0 15180 400 204 S 0.0 0.0 0:00.01 upstart-socket-br
Как использовать ps для получения списка процессов
Команды top и htop предоставляют удобный интерфейс для просмотра запущенных процессов, аналогичный графическому диспетчеру задач.
Тем не менее, данные инструменты не всегда достаточно гибки, чтобы адекватно охватить все сценарии.
При вызове без аргументов результаты могут быть немного неполными:
ps
PID TTY TIME CMD
1017 pts/0 00:00:00 bash
1262 pts/0 00:00:00 ps
Эти данные отображают все процессы, связанные с текущим пользователем и терминальной сессией. Это имеет смысл, так как в данный момент с терминала запущены только команды bash and ps.
Чтобы получить более полную картину процессов данной системы, можно запустить следующее:
ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 24188 2120 ? Ss 14:28 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S 14:28 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 14:28 0:00 [ksoftirqd/0] root 6 0.0 0.0 0 0 ? S 14:28 0:00 [migration/0] root 7 0.0 0.0 0 0 ? S 14:28 0:00 [watchdog/0] root 8 0.0 0.0 0 0 ? S
Эти параметры приказывают ps показать процессы, принадлежащие всем пользователям (вне зависимости от их терминала) в удобном формате.
Чтобы увидеть дерево, отображающее иерархические отношения, можно запустить команду с данными параметрами:
ps axjf
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
0 2 0 0 ? -1 S 0 0:00 [kthreadd] 2 3 0 0 ? -1 S 0 0:00 \_ [ksoftirqd/0] 2 6 0 0 ? -1 S 0 0:00 \_ [migration/0] 2 7 0 0 ? -1 S 0 0:00 \_ [watchdog/0] 2 8 0 0 ? -1 S
Как можно видеть, процесс kthreadd отображен как порождающий относительно процесса ksoftirqd/0 и других.
Примечание об идентификаторах процессов (PID)
В Linux и Unix-подобных системах каждому процессу присвоен идентификатор (PID). Таким образом операционная система идентифицирует и отслеживает процессы.
Быстрый способ узнать PID процесса – использовать команду pgrep:
pgrep bash
1017
Это запросит идентификатор процесса и вернет его.
Первый порожденный при запуске процесс под названием init получает PID «1».
Данный процесс отвечает за порождение всех остальных процессов системы. Чем позже порожден процесс, тем больше будет присвоенный ему PID.
Родительский процесс – это процесс, ответственный за порождение другого процесса. Если порождающий процесс был прекращен, то дочерние процессы также прервутся. PID родительского процесса называется PPID.
PID и PPID можно увидеть в заголовках столбцов во многих приложениях управления процессами, включая top, htop и ps.
Любое общение между пользователем и операционной системой, связанное с процессами, предполагает перевод имен процессов в их идентификаторы и наоборот. Вот зачем утилиты сообщают PID.
Как отправлять сигналы процессам в Linux
Все процессы в Linux отвечают на сигналы.
Сигналы – способ завершить или изменить поведение программ на уровне ОС.
Как отправлять процессам сигналы при помощи PID
Наиболее распространенным способом передачи сигналов программам является команда kill.
Как и следовало ожидать, функциональность данной утилиты по умолчанию заключается в попытке завершить процесс:
Это отправит всем процессам сигнал TERM. Данный сигнал приказывает процессу завершиться. Это позволяет программе выполнять операции по очистке и завершить работу без помех.
Если программа неисправна и не завершает работу при отправке сигнала TERM, можно усилить сигнал, передав сигнал KILL:
kill -KILL PID_of_target_process
Данный специальный сигнал отправляется не программе.
Вместо этого он передается ядру операционной системы, которое прерывает процесс. Это используется для блокировки программ, которые игнорируют сигналы, посылаемые им.
Каждый сигнал имеет ассоциированный номер, который можно передать вместо имени. К примеру, можно отправить «-15» вместо «-TERM» и «-9» вместо «-KILL».
Как использовать сигналы для других целей
Сигналы используются не только для завершения работы программ. Они также полезны для совершения других действий.
К примеру, многие демоны можно перезапустить при помощи сигнала отбоя HUP. Apache является одной из работающих по такому принципу программ.
sudo kill -HUP pid_of_apache
Вышеприведенная команда заставит Apache перезагрузить конфигурационный файл и возобновить обслуживание контента.
Чтобы просмотреть список всех сигналов, которые можно отправить с kill, наберите:
kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
. . .
Как отправлять сигналы процессам по имени
Хотя отправлять сигналы процессам гораздо удобнее при помощи PID, существуют также методы отправки сигнала с помощью имен процессов.
Команда pkill работает почти также, как kill, но она действует от имени процесса:
Команда, приведенная выше, является эквивалентом:
kill -9 `pgrep ping`
Чтобы послать сигнал каждому экземпляру определенного процесса, используйте команду killall:
Вышеуказанная команда отправит сигнал TERM каждому экземпляру firefox, запущенному на данном компьютере.
Как установить приоритеты процессов
Часто возникает необходимость установить, какие процессы имеют приоритет в серверной среде.
Некоторые процессы могут рассматриваться как критически важные, в то время как другие могут быть выполнены за счет остатка ресурсов.
Linux контролирует приоритеты с помощью значения под названием niceness.
Задачи с высоким приоритетом имеют низшее значение nice, так как они поглощают ресурсы. С другой стороны, задачи с низким приоритетом имеют высокое значение nice, так как они используют минимальное количество ресурсов.
При запуске команды top в начале статьи был выведен столбец, отмеченный как «NI». В нем указывается значение nice процесса:
top
Tasks: 56 total, 1 running, 55 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1019600k total, 324496k used, 695104k free, 8512k buffers
Swap: 0k total, 0k used, 0k free, 264812k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1635 root 20 0 17300 1200 920 R 0.3 0.1 0:00.01 top
1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.11 ksoftirqd/0
В зависимости от системы, значение nice может варьироваться от «-19/-20» (наивысший приоритет) до «19/20» (самый низкий приоритет).
Чтобы запустить программу с определенным значением nice, можно использовать команду nice:
nice -n 15 command_to_execute
Это работает только при запуске новой программы.
Чтобы изменить значение nice программы, которая уже выполняется, нужно использовать инструмент renice:
renice 0 PID_to_prioritize
Примечание: в то время как nice работает с именем команды, renice вызывает PID процесса.
Итоги
Управление процессами – иногда достаточно сложная для новичков тема, так как используемые инструменты отличаются от их графических эквивалентов.
Однако концепции знакомы и интуитивно понятны, и, немного попрактиковавшись, их можно легко освоить. Поскольку процессы участвуют во всем, что касается компьютерной системы, очень важно научиться управлять ими.
Источник