swap

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

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 13446
Зарегистрирован: 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
Писатель
Сообщения: 13446
Зарегистрирован: 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
Писатель
Сообщения: 13446
Зарегистрирован: 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
Писатель
Сообщения: 13446
Зарегистрирован: 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
Писатель
Сообщения: 13446
Зарегистрирован: 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
Писатель
Сообщения: 13446
Зарегистрирован: 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
Писатель
Сообщения: 13446
Зарегистрирован: 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.

Ответить

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

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

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