[devel] Q: CONFIG_PSI_DEFAULT_DISABLED=y

Andrey Savchenko bircoph на altlinux.org
Пн Сен 6 18:47:02 MSK 2021


On Mon, 6 Sep 2021 19:23:49 +0400 Alexey Sheplyakov wrote:
> On 06.09.2021 19:03, Andrey Savchenko wrote:
> 
> >> Хоть с PSI, хоть без ядро всё равно ведёт учёт занятой/доступной памяти.
> >> А планировщик всё равно отслеживает, сколько потоков готово к выполнению,
> >> сколько заблокированы, и т.п. C PSI ядро может предоставить эту информацию
> >> в userspace.
> > 
> > Это не так. Pressure stall accounting при выключенной опции ядро не
> > ведёт.
> 
> В тех местах, где и так всё упирается в ввод-вывод (считая манипуляции
> таблицами страниц), например, __perform_reclaim, __alloc_pages_direct_compact,
> ядро вызывает psi_memstall_enter/psi_memstall_leave.
> Которые по сути ставят/снимают флажок.

Это может быть несущественно при дисковом i/o (и то я не уверен на
счёт современных NVMe), но не стоит игнорировать манипуляции
с памятью: ядро делает дополнительный вызов, это создаёт лишний
переход или даже несколько, уменьшает эффективность использования
кеша и т.д. и т.п..
 
> >> Так что пусть по умолчанию будет включено. А кто хочет рискнуть стабильностью
> >> системы ради (мнимого) прироста производительности - пусть **отключают**. 
> >> Вместе с /proc/loadavg
> > 
> > Надеюсь, вы понимаете разницу между общим счётчиком и детализацией
> > для каждого процесса?
> 
> $ cat /proc/loadavg 
> 0.63 0.50 0.42 1/1546 251275
> 
> $ cat /proc/pressure/memory
> 
> some avg10=0.00 avg60=0.00 avg300=0.00 total=2657355
> full avg10=0.00 avg60=0.00 avg300=0.00 total=1480309
> 
> Ровно та же детализация, что у loadavg. Только, грубо говоря,
> есть loadavg ещё и для памяти и дисков (IO).

Там достаточно много run-time сбора телеметрии выходит. Это не так
безобидно, как кажется.
 
> > Вообще, memory accounting в ядре затратен и без нужды лучше не использовать.
> 
> Парламент не место для дискуссий, ага. А ядро не место для учёта памяти.
> Это надо отлить в граните.

Вместо отлива в граните Вы лучше разок сами ядро соберите
и почитайте описания задействованных при этом опций. Вот пример:

config MEMCG_SWAP_ENABLED
    bool "Swap controller enabled by default"
    depends on MEMCG_SWAP
    default y
    help
      Memory Resource Controller Swap Extension comes with its price in
      a bigger memory consumption. General purpose distribution kernels
      which want to enable the feature but keep it disabled by default
      and let the user enable it by swapaccount=1 boot command line
      parameter should have this option unselected.
      For those who want to have the feature enabled by default should
      select this option (if, for some reason, they need to disable it
      then swapaccount=0 does the trick).

Там что не весь учёт потребления памяти одинаково полезен.

Обратите внимание: для функциональности с побочными эффектами
предусмотрен флажок для вкл/выкл по-умолчанию — ну прямо как для
CONFIG_PSI.

Best regards,
Andrew Savchenko
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 833 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20210906/4d8519bc/attachment.bin>


Подробная информация о списке рассылки Devel