When you feel curious about what memory status is at some point, you can use SysRq facility. After enabling the sysrq featulre by execute following command, you just need to press ‘SysRq’ + ‘m’ or trigger the command.
echo 1 > /proc/sys/kernel/sysrq
Above command enables the SysRq feature. To get memory status, you can run following command.
echo m > /proc/sysrq-trigger
It will print out some messages on your screen as something similar like following.
SysRq : Show Memory Mem-Info: DMA per-cpu: CPU 0: hi: 0, btch: 1 usd: 0 CPU 1: hi: 0, btch: 1 usd: 0 CPU 2: hi: 0, btch: 1 usd: 0 CPU 3: hi: 0, btch: 1 usd: 0 Normal per-cpu: CPU 0: hi: 186, btch: 31 usd: 173 CPU 1: hi: 186, btch: 31 usd: 174 CPU 2: hi: 186, btch: 31 usd: 165 CPU 3: hi: 186, btch: 31 usd: 175 HighMem per-cpu: CPU 0: hi: 186, btch: 31 usd: 36 CPU 1: hi: 186, btch: 31 usd: 56 CPU 2: hi: 186, btch: 31 usd: 7 CPU 3: hi: 186, btch: 31 usd: 3 active_anon:244635 inactive_anon:74164 isolated_anon:0 active_file:303491 inactive_file:315696 isolated_file:0 unevictable:0 dirty:4987 writeback:913 unstable:0 free:30580 slab_reclaimable:20107 slab_unreclaimable:8831 mapped:14616 shmem:3164 pagetables:3059 bounce:190 DMA free:8224kB min:64kB low:80kB high:96kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB iso ... Free swap = 5451488kB Total swap = 5455864kB 1245184 pages RAM 1018370 pages HighMem 214926 pages reserved 579156 pages shared 539390 pages non-shared
At first, it could be something like gibberish. If you want to know meaning of each line, you should check it with kernel source. SysRq-‘m’ execute show_mem() function.
void show_mem(void) { int total = 0, reserved = 0; int shared = 0, cached = 0; int highmem = 0; struct page *page; pg_data_t *pgdat; unsigned long i; unsigned long flags; printk(KERN_INFO "Mem-info:n"); show_free_areas(); printk(KERN_INFO "Free swap: %6ldkBn", nr_swap_pages<<(PAGE_SHIFT-10)); for_each_online_pgdat(pgdat) { pgdat_resize_lock(pgdat, &flags); for (i = 0; i node_spanned_pages; ++i) { page = pgdat_page_nr(pgdat, i); total++; if (PageHighMem(page)) highmem++; if (PageReserved(page)) reserved++; else if (PageSwapCache(page)) cached++; else if (page_count(page)) shared += page_count(page) - 1; } pgdat_resize_unlock(pgdat, &flags); } printk(KERN_INFO "%d pages of RAMn", total); printk(KERN_INFO "%d pages of HIGHMEMn", highmem); printk(KERN_INFO "%d reserved pagesn", reserved); printk(KERN_INFO "%d pages sharedn", shared); printk(KERN_INFO "%d pages swap cachedn", cached); printk(KERN_INFO "%lu pages dirtyn", global_page_state(NR_FILE_DIRTY)); printk(KERN_INFO "%lu pages writebackn", global_page_state(NR_WRITEBACK)); printk(KERN_INFO "%lu pages mappedn", global_page_state(NR_FILE_MAPPED)); printk(KERN_INFO "%lu pages slabn", global_page_state(NR_SLAB)); printk(KERN_INFO "%lu pages pagetablesn", global_page_state(NR_PAGETABLE)); }
Leave a Reply