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