Как посмотреть информацию о swap? Создание SWAP раздела
Подкачка страниц (англ. Paging; иногда используется термин swapping от swap, /swɔp/) — один из механизмов виртуальной памяти, при котором отдельные фрагменты памяти (обычно неактивные) перемещаются из ОЗУ на жёсткий диск (или другой внешний накопитель, такой как флеш- память), освобождая ОЗУ для загрузки других фрагментов памяти.
Временно выгруженные из памяти страницы могут сохраняться на внешних запоминающих устройствах как в файле, так и в специальном разделе на жёстком диске (partition), называемые соответственно swap- файл и swap- раздел. В случае откачки страниц, соответствующих содержимому какого-либо файла (например, memory-mapped files), они могут удаляться. При запросе такой страницы она может быть считана из оригинального файла.
Swapping (или «подкачка памяти») — это процесс, при котором страница памяти копируется в специальное пространство на жестком диске, называемое пространством подкачки (англ. «swap space»), освобождая занимаемый ею объем оперативной памяти. В Linux для этого существует специальная программа — менеджер памяти. Каждый раз, когда системе требуется больше памяти, чем ей физически доступно в данный момент, менеджер памяти ищет все редко используемые страницы памяти и вытесняет их на жесткий диск, предоставляя освободившуюся память другому приложению (процессу).
Как посмотреть информацию о swap? Небольшая утилита swapon, входящая в состав любого дистрибутива Linux, поможет вам посмотреть информацию о разделе swap и оценить его использование. Для просмотра информации о swap, выполним в консоли следующую команду:
HN OpenVZ
swapon -s Filename Type Size Used Priority /dev/sda6 partition 8007676 33948 -1
VE OpenVZ
swapon -s Filename Type Size Used Priority /dev/null partition 2097152 0 -1
В колонке Filename мы видим название раздела, на котором расположен наш swap, колонка Type показывает, что этот раздел диска есть “partition”, Size показывает нам тот размер, который мы определили при установке системы для нашего swap. А вот в Used мы увидим насколько, на текущий момент, использован в нашей системе swap-раздел.
Аналогичную информацию вы можете получить, выполнив в консоли:
cat /proc/swaps
Как найти программы которые используют swap
Начиная с ядра 2.6.16, мы можем найти программы использующие swap с помощью smaps из файловой системе proc. Ниже простой bash-скрипт, который выводит все запущенные процессы и их использование подкачки. Это быстро и грязно, но делает свою работу и может быть легко изменено для работы с любой информацией, представленной в /proc/$PID/smaps.
#!/bin/bash # Get current swap usage for all running processes # Erik Ljungstrom 27/05/2011 SUM=0 OVERALL=0 for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do PID=`echo $DIR | cut -d / -f 3` PROGNAME=`ps -p $PID -o comm --no-headers` for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'` do let SUM=$SUM+$SWAP done echo "PID=$PID - Swap used: $SUM - ($PROGNAME )" let OVERALL=$OVERALL+$SUM SUM=0 done echo "Overall swap used: $OVERALL"
Скрипт нужно запустить от имени пользователя root, чтобы он мог собирать точные числа. Он по-прежнему будет работать, даже если вы этого не сделаете, но будет сообщать 0 для любых процессов, не принадлежащих вашему пользователю. Вывод упорядочен в алфавитном порядке в соответствии с вашей локалью.
Например, чтобы найти процесс с наибольшим использованием подкачки, просто запустите скрипт следующим образом:
./getswap.sh | sort -n -k 5 ... PID=1624 - Swap used: 3344 - (outline-client ) PID=2247 - Swap used: 5760 - (chrome ) PID=1752 - Swap used: 23296 - (chrome )
Исключить программы, которые вообще не используют своп:
./getswap.sh | egrep -v "Swap used: 0" |sort -n -k 5
Аналогичные данные можно получить используя утилиту smem, запустив ее так:
smem -s swap -r
Создание SWAP на разделе SSD диска Linux пошагово
Команды тестировались на Debian, Ubuntu, CentOS и будут работать на любых дистрибутивах Linux. Рекомендация. Без нужды не создавайте swap-файл более 4 ГБ, разберитесь с параметром swappiness, для сервера его значение стремится к нуля, для десктопного компьютера больше 60. И параметром vfs_cache_pressure.
Значение 60 параметра vm.swappiness говорит о том, что при 100-60=40% занятой ОЗУ Ubuntu начнет использовать swap. Если ОЗУ много, можно изменить параметр, например до 10, 20 и тем самым указать Ubuntu не использовать swap.
- Проверить, есть ли своп:
swapon --show
- Посмотреть, что своп-файла нет и посчитать сколько оперативной памяти:
free -h
- Проверить, сколько на диске свободного места, чтобы рассчитать размер для хранения свап-раздела:
df -h
В примере был выбран размер свопа в 2 ГБ.
- Создать swap-файл размером 2 ГБ:
fallocate -l 2G /swapfile
Если утилиты fallocate отсутствует или вы получаете сообщение об ошибке, можно использовать для создание файла подкачки утилиту dd
dd if=/dev/zero of=/swapfile bs=1024 count=2097152
- Проверить, что было зарезервировано правильное количество места:
ls -lh /swapfile -rw-r--r-- 1 root root 2.0G Dec 18 21:21 /swapfile
- Сделать файл доступным только для root:
chmod 600 /swapfile
- Пометить файл как swap-файл (файл подкачки):
mkswap /swapfile
- Включить файл подкачки:
swapon /swapfile
- Убедитесь, что своп доступен:
swapon --show NAME TYPE SIZE USED PRIO /swapfile file 2G 0B -2
Чтобы своп оставался доступен после перезагрузки, необходимо добавить файл подкачки в файл /etc/fstab:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Параметр swappiness определяет, как часто система выгружает данные из оперативной памяти в пространство подкачки. Его значение выражается числом от 0 до 100 процентов.
При значениях, близких к нулю, ядро не будет выгружать данные на диск, если в этом нет абсолютной необходимости. Взаимодействие с файлом подкачки требует гораздо больше времени, чем взаимодействие с оперативной памятью, и может вызывать значительное снижение производительности. Если система не зависит от подкачки, то, как правило, ее производительность повышается.
При значениях, близких к 100, система будет пытаться выгрузить больше данных на подкачку, чтобы разгрузить оперативную память. В зависимости от профиля памяти приложений и от тех задач, которые ставятся перед сервером, в некоторых случаях это плюс.
- Посмотреть текущее значение процента подкачки:
cat /proc/sys/vm/swappiness 60
На моем сервере значение vm.swappiness=60 (это значение по умолчанию на всех Линукс дистрибутивах). Уменьшим параметр до 10:
sysctl vm.swappiness=10
Этот параметр будет действовать до следующей перезагрузки. Установить это значение автоматически при перезапуске, добавив строку в конец файла /etc/sysctl.conf программы sysctl:
echo 'vm.swappiness=10' >> /etc/sysctl.conf
- Еще одно связанное значение — vfs_cache_pressure. Эта настройка определяет, насколько система будет кэшировать данные индексных дескрипторах (inode и dentry) по сравнению с другими данными. По сути, это данные доступа к файловой системе. Как правило, искать их довольно сложно, а запрашиваются они часто, так что кэш-память в этом случае весьма полезна. Чтобы узнать текущее значение этого параметра, можно еще раз запросить файловую систему proc:
cat /proc/sys/vm/vfs_cache_pressure 100
Согласно текущим настройкам (100), система удаляет данные инодов из кэша слишком быстро. Можно задать более консервативное значение, например 50:
sysctl vm.vfs_cache_pressure=50
Также для того чтобы это параметр загружался автоматически, после перезагрузки операционной системы, добавим его в файл sysctl.conf:
echo 'vm.vfs_cache_pressure=50' >> /etc/sysctl.conf
Всё! Мы добавили и настроили файл подкачки в ОС Linux.
Удаление файла подкачки Swap
Для удаления своп раздела, выполните 3 простых действия.
- деактивируйте пространство подкачки
sudo swapoff -v /swapfile
- Затем удалите запись файла подкачки /swapfile и файла /etc/fstab
- И удалите физический файл подкачки на диске с помощью команды rm:
sudo rm /swapfile
Заключение
В этой статье вы научились создавать своп файл в любом Linux и определять какие процессы используют файл подкачки.
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!
7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах