1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
sysctl.conf sysctl -p vm.swappiness = 2 Раздел подкачки может быть создан либо на стандартном разделе жесткого диска, либо на специально отформатированном для этого разделе. mkswap /dev/sda4 - Форматирует раздел sda4 как раздел подкачки mkswap -с /dev/sda4 - проверить раздел подкачки на наличие поврежденных блоков dd if=/dev/zero of=/tmp/swapfile - создание пустого файла /tmp/swapfile chmod 600 /tmp/swapfile - выставляем права 600 mkswap /tmp/swapfile - созидание файловой системы для swap swapon -s - отобразить все разделы подкачки swapon /tmp/swapfile - включить swap из /tmp/swapfile swapon -v /tmp/swapfile - включить swap и отобразить больше информации swapon /dev/sda1 - включить раздел подкачки на /dev/sda1 swapoff -v /tmp/swapfile - отключить раздел подкачки /tmp/swapfile swapon -v -p 1 /dev/sda1 - назначает разделу sda1 высший приоритет подкачки |
Создание нового раздела:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
!!! Чтобы не замедлять работу системы, старайтесь создавать на жестком диске только один раздел подкачки. !!! В идеальном случае такой раздел должен находиться на мало используемом или неиспользуемом диске. Создание нового раздела подкачки. Если вы создали слишком маленький раздел подкачки или вам по каким-либо причинам понадобится еще один, создайте новый раздел (например, командой fdisk). В качестве типа диска укажите Linux swap (82 в fdisk). Отформатировав раздел с помощью команды mkswap, вы можете активировать его командой swapon. Если все получится, дополните файл /etc/fstab. mkswap /dev/hda3 - создание swap-пространство на разделе hda3 swapon /dev/hda3 - включить swap-пространство, расположенное на разделе hda3 swapon /dev/hda2 /dev/hdb3 - активировать swap-пространства, расположенные на разделах hda2 и hdb3 |
Файл подкачки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
!!! Учитывайте что файлы подкачки не поддерживаются в файловой системе btrfs! Чтобы не использовать раздел подкачки, вы можете выгружать память в отдельный файл подкачки. Конечно, это решение на крайний случай, так как из-за такой операции замедляется доступ к файловой системе. Единственное достоинство файла подкачки заключается в том, что для него не требуется отдельный раздел. Обычно файлы подкачки сохраняются в разделе /dev. В первую очередь создаем командой dd пустой файл заданного размера. При этом в качестве источника данных используется /dev/zero. Из этого устройства можно считать сколько угодно нулевых байт. Размер нужно указывать в блоках, причем каждый блок равен 1024 байт. Кроме того, файл подкачки, подобно разделу подкачки, форматируется командой mkswap и активируется с помощью swapon. В следующем примере мы создадим маленький файл подкачки размером около 1 Мбайт: dd bs=1024 if=/dev/zero of=/swapfile count=1000 mkswap /swapfile 1000 sync swapon -v /swapfile Файлы подкачки можно указать в fstab, как и разделы подкачки: /etc/fstab /swapfile none swap sw 0 0 |
Работа оперативной памяти в linux
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Если оперативной памяти недостаточно для выполнения всех программ и в вашем распоряжении есть файлы и разделы подкачки, Linux задействует их в качестве дополнительной памяти (страничная организация памяти). Таким образом, Linux может использовать больше памяти, чем доступно в RAM. Обычно раздел подкачки создается при установке. Чтобы проверить, есть ли в вашем распоряжении виртуальная память и, если есть, то сколько (имеется или действительно применяется), выполните команду free. В следующем примере имеем 1519 Мбайт RAM и 2000 Мбайт виртуальной памяти. В настоящее время, согласно примеру, используется 401 Мбайт RAM для работы с программами и данными, остаток применяется как файловый буфер (кэш). Виртуальная память пока не задействуется. free -m total used free shared buffers cached Mem: 1519 1479 39 0 67 1010 -/+ buffers/cache: 401 1117 Swap: 2000 0 2000 Если компьютер работает длительное время, ему рано или поздно придется использовать виртуальную память, даже если у вас в распоряжении еще достаточно RAM. Причина проста: ядро управляет кэшем для предоставления доступа к файлам «для чтения»; если позже понадобится какой-либо файл, его можно считать из кэша. Как только кэш превышает по размеру свободную оперативную память, Linux выгружает блоки памяти, которые давно не применялись, в раздел подкачки. Это совсем не означает, что осталось мало памяти. Linux просто пытается использовать имеющуюся память как можно более эффективно. |
Управление работой виртуальной памяти:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Если памяти в RAM начинает не хватать, ядро Linux применяет достаточно сложный алгоритм, позволяющий решить, следует ли открыть доступ к кэш-памяти для решения новых задач либо лучше выгрузить в раздел подкачки последние неиспользованные области памяти. Параметр ядра /proc/sys/vm/swappiness позволяет вам указать, что должно делать ядро в случае выбора — уменьшить кэш или выгрузить данные. Стандартная настройка для swappiness равна 60, диапазон возможных значений: от 0 до 100. Значение 0 означает, что ядро по возможности не будет использовать постраничную организацию памяти; 100 говорит о том, что области памяти, не применяемые долгое время, будут отправляться в раздел подкачки как можно раньше. 60 - говорит о том, что если 40% памяти занято, начинаем использовать swap 1-10 - рекомендованное значение когда у вас очень много памяти 0 - Не рекомендуется (/proc/sys/vm/swappiness) ставить меньше единицы (то есть 0), так как swap спасает нас от oomkiller ommkiller - при не хватке памяти приходит и убивает процесс, критерии разные, убивает процесс который запросил больше памяти чем есть, спящие процессы которые не использовали память давно, ну и т.д. Увидеть приход oomkiller можно в dmesg Строка "Out of memory: Killed process" vm.swappiness = 2 |
/proc/meminfo
1 2 3 4 5 |
cat /proc/meminfo MemTotal: 132026284 kB - всего памяти, на самом деле при загрузке системы система забирает память под свои нужды, используем journalctl, dmesg, ищем строку Memory: 432208K reserved MemFree: 626072 kB - память которую система может прям сразу выделить без всяких буферов, cash и т.д. MemAvailable: 52605812 kB - доступная память, которая система может выделить, освободив из буфера, cash и т.д. Dirty: 300 kB - очень важный параметр, это память которая должна записаться на блочное устройство, но еще не переписалась, но система говорит что уже все закончила, sync |
Создание swap Вариант 1:
1 2 3 4 5 6 |
Предположим вам нужно увеличить swap раздел, скажем до 2 гигабайт, /swap2gb(для Linux) # dd if=/dev/zero of=/swap2gb bs=1024k count=2000 # mkswap /swap2gb # Создать swap # swapon /swap2gb # Включить swap, теперь его можно использовать # swapoff /swap2gb # Отключить swap # rm /swap2gb |
Создание swap Вариант 2:
1 2 3 4 5 6 7 |
!!! создание swap раздела на лету с добавлением в fstab fallocate -l 1G /.swap chmod 600 /.swap mkswap /.swap echo '/.swap none swap defaults 0 0' >> /etc/fstab swapon /.swap |