Форум по операционной системе GNU/Linux и свободному программному обеспечению
Текущее время: 20 май 2019, 14:16

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 15 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: swap
Непрочитанное сообщениеДобавлено: 14 мар 2019, 12:17 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11733
Откуда: Харьков
Olej писал(а):
3. Не очень известно, что есть такой проект-модуль zRam. В случае использования zRam, swap будет находиться в специальном сжатом разделе оперативной памяти. Как утверждают, этот вариант прекрасно подойдет для нетбуков, имеющих 2Гб ОЗУ.
Подробнее см. здесь своп в оперативную память - модуль zRam.
Этот проект включен в стандартные репозитории некоторых дистрибутивов:
Это Mint 17.3:
Код:
olej@atom ~ $ apt search zram-*
p   zram-config                     - Upstart job to enable zram support   

Это Mint 18.1:
Код:
olej@nvidia ~ $ apt search zram-*
p   zram-config                     - Upstart job to enable zram support       


Хорошее внятное описание механизмов свопирования в память, включённых в ядро Linux:
Zram и Zswap или как увеличить эффективность оперативной памяти
Цитата:
ВТОРНИК, 15 ДЕКАБРЯ 2015 Г.

Здесь в форуме есть уже отдельная тема: своп в оперативную память - модуль zRam, поэтому детальнее - там.


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: swap
Непрочитанное сообщениеДобавлено: 14 мар 2019, 13:15 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11733
Откуда: Харьков
Olej писал(а):
1. обязателен ли swap?

Интереснейший эффект (показательнейший пример отказа от swap!) наблюдается при инсталляции пакета Dlib (распознавание лиц) на одноплатном ARM DragonBoard 410c: распознавание лиц. Эта инсталляция пакета сопряжена с очень большим объёмом компиляции. Даже на очень быстром стационарном компьютере это занимает до 10 минут процессорного времени...
... хоть при установке из пакетной системы:
Код:
olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL$ sudo time pip3 install Dlib
Collecting Dlib
  Using cached https://files.pythonhosted.org/packages/35/8d/e4ddf60452e2fb1ce3164f774e68968b3f110f1cb4cd353235d56875799e/dlib-19.16.0.tar.gz
Building wheels for collected packages: Dlib
  Running setup.py bdist_wheel for Dlib ... /
done
  Stored in directory: /root/.cache/pip/wheels/ce/f9/bc/1c51cd0b40a2b5dfd46ab79a73832b41e7c3aa918a508154f0
Successfully built Dlib
Installing collected packages: Dlib
Successfully installed Dlib-19.16.0
832.81user 20.58system 7:19.06elapsed 194%CPU (0avgtext+0avgdata 1496724maxresident)k
115936inputs+528880outputs (434major+8825255minor)pagefaults 0swaps

... хоть при сборке самой последней версии из исходников:
Код:
olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL$ git clone https://github.com/davisking/dlib
Клонирование в «dlib»…
remote: Enumerating objects: 46806, done.
remote: Total 46806 (delta 0), reused 0 (delta 0), pack-reused 46806
Получение объектов: 100% (46806/46806), 21.96 MiB | 2.01 MiB/s, готово.
Определение изменений: 100% (32895/32895), готово.

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL$ cd dlib

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/dlib$ time sudo python3 setup.py build
running build
running build_py
package init file 'dlib/__init__.py' not found (or not a regular file)
running build_ext
Building extension for Python 3.7.2rc1 (default, Dec 12 2018, 06:25:49)
...
[100%] Built target dlib_python

real    7m44,373s
user    14m8,277s
sys     0m22,124s

Естественно, что на одноплатном DragonBoard 410c, с дохленьким ARM процессором и 1Gb RAM, это может занимать несколько часов.


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: swap
Непрочитанное сообщениеДобавлено: 14 мар 2019, 13:27 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11733
Откуда: Харьков
Olej писал(а):
Естественно, что на одноплатном DragonBoard 410c, с дохленьким ARM процессором и 1Gb RAM, это может занимать несколько часов.

Но!
Наблюдая командой top за загрузкой процессов, обнаруживаем, что поток ядра kswapd0 занимает (меняется, прыгает) 90% и 95% времени процессора. А это значит, что 90-95% времени система, установленная в EMM память без свопа занимается "тасовкой" активных и неактивных страниц RAM!
Код:
linaro@linaro-alip:~/FaceDL/dlib$ top

Tasks: 127 total,   1 running,  80 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us, 26.4 sy,  0.0 ni, 51.4 id, 20.6 wa,  0.9 hi,  0.6 si,  0.0 st
KiB Mem :   947380 total,    30484 free,   892304 used,    24592 buff/cache
KiB Swap:        0 total,        0 free,        0 used.     2792 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                             
  689 root      20   0       0      0      0 S  95.2  0.0   5:11.30 kswapd0                                                             
 1501 root      20   0       0      0      0 S   8.5  0.0   0:22.07 mmcqd/0                                                             
 5364 root      20   0  817896 764428   1556 D   4.4 80.7   1:29.70 cc1plus                                                             
 5065 linaro    20   0    7876    700     72 R   3.3  0.1   0:13.32 top                                                                 
 2008 root      20   0  470576   3472      0 S   0.4  0.4   1:02.94 NetworkManager                               

И только после того, как я:
- установил SD-карту в держатель платы...
- создал раздел для свопа...
- подготовил этот раздел для свопа (это эквивалентно форматированию для раздела данных)...
Код:
$ mkswap /dev/mmcblk1p2

- назначил своп системы на этот раздел...
Код:
$ swapon /dev/mmcblk1p2

Код:
linaro@linaro-alip:~/FaceDL/dlib$ sudo swapon --show
NAME           TYPE      SIZE USED PRIO
/dev/mmcblk1p2 partition 9.2G   0B   -2

Только тогда:
Код:
top - 10:57:02 up 15:34,  4 users,  load average: 0.81, 0.42, 0.85
Tasks: 132 total,   2 running,  83 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.7 sy, 24.0 ni, 73.6 id,  0.2 wa,  0.9 hi,  0.5 si,  0.0 st
KiB Mem :   947380 total,    36856 free,   874064 used,    36460 buff/cache
KiB Swap:  9681916 total,  9608444 free,    73472 used.    17228 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                         
 5517 root      39  19  854412 813064  12052 R  97.4 85.8   1:27.30 cc1plus                                                         
  689 root      20   0       0      0      0 S   0.3  0.0   8:55.57 kswapd0                                                         
 2008 root      20   0  470576    132      0 S   0.3  0.0   1:09.91 NetworkManager                                                   
 5040 linaro    20   0   15152    640    568 S   0.3  0.1   0:00.50 mc                                                               
 5418 root      20   0       0      0      0 S   0.3  0.0   0:00.08 mmcqd/1                                                         
 5519 linaro    20   0    7876   1828   1192 R   0.3  0.2   0:00.57 top                                                             
    1 root      20   0  160640    280      0 S   0.0  0.0   0:05.22 systemd                                                         
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.10 kthreadd                                                         
...

И при этом сборка шла >2 часов непрерывного времени! (это последняя попытка make после предыдущих 30m):
Код:
...
real   97m4.898s
user   69m43.846s
sys   2m50.426s

А без свопа она бы продолжалась 2х(10-20) = 20-40 часов, т.е. 1-2 суток! ... если оно вообще когда-то закончится...


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: swap
Непрочитанное сообщениеДобавлено: 14 мар 2019, 13:45 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11733
Откуда: Харьков
Olej писал(а):
А без свопа она бы продолжалась 2х(10-20) = 20-40 часов, т.е. 1-2 суток! ... если оно вообще когда-то закончится...

Это "в натуре" наблюдается тот эффект, который известен и называется пробуксовка:
[url=https://ru.wikipedia.org/wiki/Подкачка_страниц#Пробуксовка]Подкачка страниц[/url]
Цитата:
Системы с виртуальной памятью работают эффективно, когда сумма рабочих множеств всех процессов не превышает размер физической оперативной памяти. В этом случае время, требуемое на обработку отказов страниц не оказывает большого влияния на производительность. Однако, программа, работающая с большими структурами данных, может иметь слишком большой рабочий набор, который система подкачки не сможет эффективно обслуживать. Это приведет к непрерывному потоку отказов страниц и резкому снижению производительности компьютера. Такая ситуация называется пробуксовкой: страницы непрерывно выгружаются, а затем к ним происходит обращение, вызывая частые отказы страниц.

Интересной особенностью пробуксовки является медленный до определенной критической точки рост числа отказов страниц по мере роста рабочего множества. После достижения этой критической точки число отказов страниц резко возрастает и на их обработку тратится большая часть вычислительной мощности.

[url=https://ru.wikipedia.org/wiki/Пробуксовка_(информатика)]Пробуксовка (информатика)[/url]
Цитата:
Однако если сумма рабочих множеств всех процессов превышает объём оперативной памяти, резко возрастает вероятность отказа страницы, то есть отсутствия требуемой страницы в оперативной памяти. Происходит постоянная загрузка страниц рабочих множеств активных процессов и выгрузка страниц неактивных процессов. Поскольку загрузка страницы с внешнего носителя на несколько порядков медленнее обращения к оперативной памяти, производительность компьютера резко падает. Загрузка процессора при этом невысока. Такое состояние и называется пробуксовкой.

Такая же симптоматика наблюдается, очень редко, и на стационарном десктопе, сколько много RAM там не было бы установлено: 8G, 16Gb, 32Gb, ... - но всегда можно дойти до такой загрузки, когда возникнет пробуксовка - например, просто элементарным открытием всё новых и новых вкладок в браузере ... при некотором числе (большом: 50, 100, ...) страниц система впадёт в пробуксовку.
Болезненность такого состояния в том, что когда оно резко возникнет, вы уже практически не можете её вернуть обратно: реакция на действия пользователя замедляется в 1000, 10000 и т.д. раз, движение мышки требует 20-40 секунд, закрытие окна ("крестом") - 2-3 минуты... Фактически, выручает только перезагрузка кнопкой Reset!
Если такое впадание в ступор произойдёт одновременно с выполняющимся (начавшимся, но не завершившимся) банковским переводом денег, то последствия непредсказуемы и могут быть трагическими! :-o :cry:


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: swap
Непрочитанное сообщениеДобавлено: 14 мар 2019, 15:00 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11733
Откуда: Харьков
Olej писал(а):
Если такое впадание в ступор произойдёт одновременно с выполняющимся (начавшимся, но не завершившимся) банковским переводом денег, то последствия непредсказуемы и могут быть трагическими! :-o :cry:

Интересный свежий перевод относительно а). необходимости swap, б). его размера и в). настроек его использования:
В защиту swap'а [в Linux]: распространенные заблуждения
Цитата:
8 февраля 2018 в 11:24


И ещё... Оптимальный размер swap в Linux для современных компьютеров
Цитата:
Например, специалисты Red Hat рекомендуют использовать 20% от RAM, но при условии, что компьютер является современным. Под современным инженеры RH понимают такие, в которых установлено 4 Гб и более.
Разработчики CentOS рекомендуют другую формулу: удваивайте объем ОЗУ, если на компьютере 2 Гб и менее. Если более, используйте формулу: объем ОЗУ + еще 2 Гб. Например, в системе 4 Гб оперативной памяти, тогда создавайте своп на 6.
Программисты Canonical советуют диапазон: от квадратного корня из объема RAM до удвоенного значения. Это при условии, что памяти больше, чем 1 Гб. В противном случае удваивать память.

Это границы ... от ... и до ...
Итого, например, при 8Gb RAM (это вскре станет нормой) это от 1.6Gb (RedHat) и от 2.8Gb (Canonical) ... до 10Gb (CentOS).
(а для 4Gb RAM, соответственно, от 0.8Gb - 2Gb до 6Gb)


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
[ Time : 0.355s | 17 Queries | GZIP : On ]