Когда ядро Linux работает в NUMA, каждый узел NUMA имеет частично раздельное управление памятью. There isecho '?' > /proc/sysrq-trigger
функция «сбросит текущую информацию памяти на консоль.» из SysRq (реализован в виде sysrq_handle_showmem
и show_mem
), чтобы получить основную статистику памяти для каждого NUMA узла к системной консоли, dmesg и системный журнал ядра.Ядро Linux: получить информацию о распределении кэша страниц по узлам NUMA
Как я понимаю, есть данные, напечатанные на использовании памяти, дискового кэша ядра (page cache) для каждого узла NUMA, вероятно, из active_file:%lu inactive_file:%lu
кода show_free_areas
. (Линия кэширована из free
выход инструмента?)
Я хочу отслеживать использование кеша диска на узлах numa в течение длительного времени с частыми обновлениями; и я хочу не заполнять всю консоль и dmesg выводами из SysRq-m
. Я планирую найти, как многопроцессорные или многопоточные программы (не привязанные к ядру или узлу с аффинностью) взаимодействуют с страницами pagecache, размещенными в другой памяти узла.
Эта информация (использование памяти pagecache для узла NUMA) опубликована для доступа к программе без использования sysrq, путем чтения и анализа некоторых специальных файлов в /proc
или в /sys
? Или для этого нужно написать новый модуль ядра?
free
инструмент использует /proc/meminfo
для печати cacheMemory used by the page cache and slabs для всей системы; не для каждого узла NUMA. Я не смог найти perm numa статистику в http://man7.org/linux/man-pages/man5/proc.5.html man page of proc 5.
Существует numastat: https://www.kernel.org/doc/Documentation/numastat.txt, но у него нет статистических данных о пакетиках; как я понимаю, он говорит только о подсчетах перекрестных ссылок на страницы, что может быть бесполезным, когда процессы часто перемещаются между узлами NUMA.
Хм, был 'K (node_page_state (pgdat, NR_ACTIVE_FILE)), 'в [' show_free_areas'] (http: //lxr.free-electrons.com/source/mm/page_alloc.c? v = 4.8 # L4153), и он также используется в драйверах/base/node.c: 'node_read_meminfo'. Как получить к нему доступ, когда он был реализован? Документировано ли это на страницах руководства; не только в https://www.kernel.org/doc/Documentation/ABI/stable/sysfs-devices-node? – osgx