2016-11-02 3 views
1

Когда ядро ​​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.

+0

Хм, был '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

ответ

0

Есть /sys/devices/system/node/nodeX/meminfo файлы для каждого узла с основной информацией памяти, например /sys/devices/system/node/node0/meminfo для NUMA узла 0, /sys/devices/system/node/node1/meminfo для узла 1 и т.д.

Они должны быть похожи на /proc/meminfo общесистемного формат файла, который фактически используется по free утилита; его страница человек имеет базовое описание формата meminfo: http://man7.org/linux/man-pages/man1/free.1.html

free displays the total amount of free and used physical and swap 
    memory in the system, as well as the buffers and caches used by the 
    kernel. The information is gathered by parsing /proc/meminfo. The 
    displayed columns are: 

    total Total installed memory (MemTotal and SwapTotal in /proc/meminfo) 

    used Used memory (calculated as total - free - buffers - cache) 

    free Unused memory (MemFree and SwapFree in /proc/meminfo) 

    shared Memory used (mostly) by tmpfs (Shmem in /proc/meminfo) 

    buffers 
      Memory used by kernel buffers (Buffers in /proc/meminfo) 

    cache Memory used by the page cache and slabs (Cached and 
      SReclaimable in /proc/meminfo) 

    buff/cache 
      Sum of buffers and cache 

MemInfo для NUMA упоминается в https://www.kernel.org/doc/Documentation/ABI/stable/sysfs-devices-node

What:  /sys/devices/system/node/nodeX/meminfo 
Date:  October 2002 
Contact: Linux Memory Management list <[email protected]> 
Description: 
     Provides information about the node's distribution and memory 
     utilization. Similar to /proc/meminfo, see Documentation/filesystems/proc.txt 

и полное описание MemInfo находится в https://www.kernel.org/doc/Documentation/filesystems/proc.txt

You (I) нужно " Cached "из numa node meminfo, чтобы получить информацию о распределении кеша страницы между узлами NUMA:

 Buffers: Relatively temporary storage for raw disk blocks 
      shouldn't get tremendously large (20MB or so) 
     Cached: in-memory cache for files read from the disk (the 
      pagecache). Doesn't include SwapCached 
SReclaimable: Part of Slab, that might be reclaimed, such as caches 

Некоторых части используемой памяти могут быть загрязнены:

Dirty: Memory which is waiting to get written back to the disk 
Writeback: Memory which is actively being written back to the disk 

Он также показывает, сколько памяти используются для задач пользовательского пространства анонимный:

AnonPages: Non-file backed pages mapped into userspace page tables 
AnonHugePages: Non-file backed huge pages mapped into userspace page tables 
Смежные вопросы