swap

Вопросы программного кода и архитектуры Linux

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: swap

Непрочитанное сообщение Olej » 02 июл 2019, 19:02

Olej писал(а):Хотелось бы сообразить, как вместо этого субъективно проверять (сравнивать) это объективно, в конкретной конфигурации конкретного компьютера? Какими экспериментами?
В порядке 1-го приближения посмотрел скорость обращения к "устройству" swap:

Код: Выделить всё

root@ACER:~# swapon -s
Имя файла                Тип        Размер    Исп-но    Приоритет
/dev/sda3                                  partition    12456956    0    -2
/dev/zram0                                 partition    131068    52452    100
/dev/zram1                                 partition    131068    50460    100
Это Debian 10, реальное железо, диск (в том числе и для swap) SSD:

Код: Выделить всё

root@ACER:~# inxi -D
Drives:    Local Storage: total: 223.57 GiB used: 77.95 GiB (34.9%)
           ID-1: /dev/sda vendor: Patriot model: Burst size: 223.57 GiB
Скорость чтения SSD (раздела swap!):

Код: Выделить всё

root@ACER:~# hdparm -tT /dev/sda3
/dev/sda3:
Timing cached reads:   10266 MB in  2.00 seconds = 5141.71 MB/sec
Timing buffered disk reads: 1126 MB in  3.00 seconds = 375.07 MB/sec
Скорость чтения Zram устройства swap:

Код: Выделить всё

root@ACER:~# hdparm -tT /dev/zram0
/dev/zram0:
Timing cached reads:   10960 MB in  2.00 seconds = 5489.57 MB/sec
HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
Timing buffered disk reads: 128 MB in  0.09 seconds = 1444.52 MB/sec
Скорость чтения без кеширования (!) Zram в 3,85 раз быстрее SSD.
P.S. А работа с swap вряд ли кешируется (?) нужно с этим будет вспомнить или разобраться...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: swap

Непрочитанное сообщение Olej » 02 июл 2019, 20:54

Olej писал(а):Скорость чтения без кеширования (!) Zram в 3,85 раз быстрее SSD.
P.S. А работа с swap вряд ли кешируется (?) нужно с этим будет вспомнить или разобраться...
А здесь в форуме я как-то сравнительно мерял HDD и SSD - это другой компьютер, но это не имеет значения, важно что там диски были подключены одновременно:

Код: Выделить всё

[olej@xenix ~]$ inxi -D
Drives:    HDD Total Size: 240.1GB (5.3% used)
           ID-1: /dev/sda model: SAMSUNG_SP0802N size: 80.1GB
           ID-2: /dev/sdb model: INTEL_SSDSA2MH16 size: 160.0GB
И скорости:

Код: Выделить всё

[olej@xenix ~]$ hdparm -tT /dev/sdb
/dev/sdb: Permission denied
[olej@xenix ~]$ sudo hdparm -tT /dev/sdb
/dev/sdb:
 Timing cached reads:   11504 MB in  2.00 seconds = 5758.75 MB/sec
 Timing buffered disk reads: 724 MB in  3.00 seconds = 241.32 MB/sec

Код: Выделить всё

[olej@xenix ~]$ sudo hdparm -tT /dev/sda
/dev/sda:
 Timing cached reads:   11222 MB in  2.00 seconds = 5617.44 MB/sec
 Timing buffered disk reads: 178 MB in  3.01 seconds =  59.15 MB/sec
Разница скорости прямого (не кешированного) чтения 4,079 раз.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: swap

Непрочитанное сообщение Olej » 02 июл 2019, 21:05

Olej писал(а):Скорость чтения без кеширования (!) Zram в 3,85 раз быстрее SSD.
Olej писал(а):Разница скорости прямого (не кешированного) чтения 4,079 раз.
В итоге, можно ожидать, что свопирование в Zram/Zswap может оказаться в 3,85 х 4,079 = 15,71 раз быстрее. В жизни всё и всегда оказывается не так оптимистично, как в расчётах, но это - очень серьёзно, и может действительно заметно ощущаться "на глаз", по "отзывчивости" графических GUI приложений.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: swap

Непрочитанное сообщение Olej » 06 июл 2019, 20:07

Если вы потеряли swap раздел, или пересоздавали его с новым UUID - и это выражается ошибками при загрузке системы, то восстановление (нервное занятие! :-P ) описывается здесь: ошибка загрузки: TSC_DEADLINE disabled due to Errata.

Но ошибка (после форматирования swap раздела командой mkswap) может явно не диагностироваться, а выражаться в том, что что загрузка системы станет вдруг молчаливо происходить не 15 сек., а так, скажем, 1.5-2 или более минут.
В таком случае нужно:
1). прописать новый UUID swap раздела в /etc/swap;
2). пересобрать новый iniramfs в /boot, с новым значением UUID;
Про то, как диагностировать такую ситуацию и в деталях что и как сделать см. здесь: загрузка: восстановление и оптимизация.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: swap

Непрочитанное сообщение Olej » 18 авг 2019, 21:06

Ещё на одном компьютере (Mint 19.2) создавал swap файл ... а сйчас как делал его подключение - забыл :oops:

Код: Выделить всё

root@nvidia:/etc/lightdm# swapon -s
Имя файла				Тип		Размер	Исп-но	Приоритет
/dev/sda3                              	partition	4606972	0	-2
Вот так ;-) :

Код: Выделить всё

root@nvidia:/etc/lightdm# ls -l /swapfile 
-rw------- 1 root root 524288000 апр 17  2017 /swapfile

root@nvidia:/etc/lightdm# swapon -f /swapfile 

root@nvidia:/etc/lightdm# swapon -s
Имя файла				Тип		Размер	Исп-но	Приоритет
/dev/sda3                              	partition	4606972	0	-2
/swapfile                              	file    	511996	0	-3

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: swap

Непрочитанное сообщение Olej » 29 янв 2020, 13:37

Olej писал(а):
16 апр 2017, 19:50
1. обязателен ли swap?
Вот прекрасная иллюстрация того, что бывает при отсутствии swap - технические проблемы:
Сегодня 29.01.2020 около 04:51 форум упал на хостинге... и пролежал в таком состоянии около 8 часов. :-o
Из логов + из ответов техподдержки хостера:
Проблема возникла из-за аварийной оставки mysql по исчепранию памяти

Код: Выделить всё

Jan 29 04:51:12 277938 kernel: [1593816.467930] [  12054]   107 12054   434373    34361   581632        0             0 mysqld
Jan 29 04:51:12 277938 kernel: [1593816.467968] Out of memory: Kill process 12054 (mysqld) score 279 or sacrifice child
Jan 29 04:51:12 277938 kernel: [1593816.471449] Killed process 12054 (mysqld) total-vm:1737492kB, anon-rss:137444kB, file-rss:0kB, shmem-rss:0kB
Jan 29 04:51:12 277938 kernel: [1593816.491402] oom_reaper: reaped process 12054 (mysqld), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
Решением может быть оптимизация службы mysql, переход на тарифный план с большим количеством оперативной памяти или использование файла подкачки
Решение прописано здесь: phpBB.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: swap

Непрочитанное сообщение Olej » 29 янв 2020, 16:00

Есть ещё один вопрос, связанный со swap - режим сна, гибернации (большая гадость, по моим понятиям ... принесенная из вЫньды), когда полное содержимое RAM целиком сбрасывается в swap для последующего быстрого пробуждения.
Какой тогда должен быть размер swap?

Из документации ядра, про /sys/power/image_size
controls the size of the image created by the suspend-to-disk mechanism
Даже если ваш раздел подкачки меньше ОЗУ, у вас все еще есть большая вероятность успешно перейти в спящий режим. Согласно ядерной документации:
/sys/power/image_size управляет размером образа, создаваемого механизмом приостановки на диск. Это может быть строка, представляющая неотрицательное целое число, которое будет использоваться в качестве верхнего предела размера образа в байтах. Механизм приостановки сделает все возможное, чтобы размер образа не превышал это число. Однако, если это окажется невозможным, он попытается приостановить все равно, используя наименьший возможный размер образа. В частности, если в этот файл записать «0», размер образа будет настолько мал на сколько это возможно. Чтение из этого файла отображает текущее ограничение размера образа, которое по умолчанию установлено на 2/5 доступного ОЗУ.
Вы можете либо уменьшить значение /sys/power/image_size, чтобы сделать образ как можно меньшим (для небольших разделов подкачки) или увеличить его, чтобы ускорить процесс гибернации.
Это вот у меня на стационарном компьютере Debian 10:

Код: Выделить всё

olej@ACER:~$ sudo cat /sys/power/image_size 
6638706688
6.5Gb ... дофига :-o
Даже при:

Код: Выделить всё

olej@ACER:~$ free
              total        used        free      shared  buff/cache   available
Mem:       16238712     6800508     4916652     1526360     4521552     7576592
Swap:      12588024           0    12588024
Показатель сжатия RAM при записи назначается порядка 3/8.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: swap

Непрочитанное сообщение Olej » 26 июн 2021, 23:18

В защиту swap'а [в Linux]: распространенные заблуждения
8 февраля 2018 в 11:24
Работая над улучшением и использованием cgroup v2, я успел поговорить со многими инженерами об их отношении к управлению памяти, особенно о поведении приложения под нагрузкой и об эвристическом алгоритме операционной системы, используемым «под капотом» для управления памятью.

Повторяющейся темой этих обсуждений стал swap. Тема swap активно оспаривается и плохо понимается даже теми, кто проработал с Linux долгие годы. Многие воспринимают его как нечто бесполезное или очень вредное — мол, это пережиток прошлого, когда памяти было мало и диски являлись необходимым злом, предоставляющим столь нужное пространство для подкачки. И до сих пор, все последние годы, я достаточно часто наблюдаю споры вокруг этого утверждения: немало дискуссий провёл и я сам с коллегами, друзьями, собратьями по индустрии, помогая им понять, почему swap — это по-прежнему полезная концепция на современных компьютерах, имеющих гораздо больше физической памяти, чем в былые времена.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: swap

Непрочитанное сообщение Olej » 12 ноя 2021, 15:21

Вот ещё совершенно непонятная мне ситуация...
- сервер, 40 потоков

Код: Выделить всё

olej@R420:~$ inxi -Cxxx
CPU:       Topology: 2x 10-Core model: Intel Xeon E5-2470 v2 bits: 64 type: MT MCP SMP arch: Ivy Bridge rev: 4 
           L2 cache: 50.0 MiB 
           flags: avx lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 192109 
           Speed: 2800 MHz min/max: 1200/3200 MHz Core speeds (MHz): 1: 2800 2: 2800 3: 2800 4: 2800 5: 2800 6: 2800 7: 2801 
           8: 2800 9: 2800 10: 2800 11: 2801 12: 2801 13: 2800 14: 2805 15: 2804 16: 2802 17: 2801 18: 2800 19: 2800 20: 2800 
           21: 2801 22: 2802 23: 2800 24: 2801 25: 2800 26: 2801 27: 2806 28: 2800 29: 2800 30: 2801 31: 2798 32: 2800 
           33: 2800 34: 2800 35: 2800 36: 2800 37: 2800 38: 2802 39: 2800 40: 2800 
- RAM дофигища... (96Gb физической RAM, из которой свободно только ~500Mb :-o )

Код: Выделить всё

olej@R420:~$ free
              всего        занято        свободно      общая  буф./врем.   доступно
Память:    98941476    13776860      522092      446348    84642524    83857004
Подкачка:     2097148     1834412      262736
Снимок экрана от 2021-11-12 14-19-37.png
Снимок экрана от 2021-11-12 14-19-37.png (216.49 КБ) 1229 просмотров
И при этом активно используется swap:

Код: Выделить всё

olej@R420:~$ sudo swapon
NAME      TYPE SIZE USED PRIO
/swapfile file   2G 1,8G   -2

Код: Выделить всё

olej@R420:~$ cat /proc/swaps
Filename				Type		Size	Used	Priority
/swapfile                               file		2097148	1834892	-2
И это при том, что установлено:

Код: Выделить всё

olej@R420:~$ cat /proc/sys/vm/swappiness
5
т.е. активно использовать swap только когда останется 5% от установленной RAM, т.е. около 4.8Gb, т.е. когда занято >90Gb RAM :-o

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: swap

Непрочитанное сообщение Olej » 12 ноя 2021, 15:25

Olej писал(а):
12 ноя 2021, 15:21
И при этом активно используется swap:

Код: Выделить всё

olej@R420:~$ sudo swapoff -a
olej@R420:~$
Операция эта происходит не сильно быстро ... использование swap сначала подпрыгивает до 100%, и только затем падает в 0:
Снимок экрана от 2021-11-12 14-22-53.png
Снимок экрана от 2021-11-12 14-22-53.png (211.98 КБ) 1229 просмотров

Код: Выделить всё

olej@R420:~$ swapon 

Код: Выделить всё

olej@R420:~$ 
olej@R420:~$ free
              всего        занято        свободно      общая  буф./врем.   доступно
Память:    98941476    15359688      576348      639276    83005440    82081236
Подкачка:           0           0           0

Ответить

Вернуться в «Linux изнутри»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя