Swap диск или файл
Можно создать файл или раздел для подкачки - Swap
| Команда | Описание |
|---|---|
| sudo swapon –show | Показать файла подкачки |
| free -h | Проверить размер доступной памяти и памяти в swap |
| cat /proc/swaps | Проверка swap |
| df -h | Проверить размер диска для файла подкачки |
| grep '^Swap' /proc/meminfo | Проверка общего размера файла подкачки |
Какого размера должен быть файл подкачки
Файл подкачки должен быть равен примерно физическому размеру памяти.
Создание файла подкачки
1. Создадим файл подкачки с именем swapfile_extend_1GB и размером 1Gb
sudo fallocate -l 1G /swapfile_extend_1GB
2. Проверим, что файл создался
ls -l /swapfile_extend_1GB
3. Настроим права доступа для файла подкачки
sudo chmod 600 /swapfile_extend_1GB
4. Проверим, что права установились. Должно быть 600, rw только для владельца
ls -l /swapfile_extend_1GB
5. Отформатируем новый файл, как swap
sudo mkswap /swapfile_extend_1GB
6. Активируем файл подкачки, как новый
sudo swapon /swapfile_extend_1GB
7. Чтобы файл подкачки подгружался после загрузки, надо добавить его монтирование в fstab
sudo vim /etc/fstab
и добавить
/swapfile_extend_1GB none swap sw 0 0 /swapfile_extend_1GB none swap sw,pr=2 0 0
,pr=2 приоритет, если есть и файл и раздел. 8. Проверяем, что добавилось нормально
sudo grep swap /etc/fstab
9. Проверяем, что всё работает, как надо
swapon --show free -h
Создание раздела подкачки
1. Посмотрим список разделов
lsblk fdisk
2. Создадим раздел подкачки на свободном месте
sudo mkswap /dev/sdb
3. Активируем раздел подкачки
sudo swapon /dev/sdb
4. Добавим в fstab
sudo vi /etc/fstab
строки
/dev/sdb none swap sw 0 0
5. Проверим, что раздел создался
swapon --show free -h
Пример программы от GPTChat, которая загрузит swap
import random import string # Создаем пустой массив array = [] # Цикл для добавления рандомных строк в массив for _ in range(500): # Указываем количество строк, которые нужно добавить в массив random_string = ''.join(random.choices(string.ascii_letters, k=5000000)) # Генерируем рандомную строку из 5 символов array.append(random_string) # Добавляем строку в массив # Выводим текущий размер массива на экран print(f"Текущий размер массива: {len(array)}") # Выводим весь массив на экран print(array)
Какие программы и насколько используют swap?
## bash for loop example to list what processes are using swap space## for file in /proc/*/status do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file done
с сортировкой
## Get swap space in Linux using bash for loop ## for file in /proc/*/status; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less