I know that kernel will emit detailed system memory status to kernel log when OOM Killer is triggered. Is there a way to query this information while the system is running normally?
I know that basic info can be found at /proc/meminfo
but the details I cannot find is following lines in the OOM Killer output (example from my system):
Node 0 DMA: 0*4kB 0*8kB 1*16kB (U) 0*32kB 2*64kB (U) 1*128kB (U) 1*256kB (U) 0*512kB 1*1024kB (U) 1*2048kB (M) 3*4096kB (M) = 15888k
B
Node 0 DMA32: 14121*4kB (UME) 18163*8kB (UME) 12588*16kB (UME) 5074*32kB (UME) 1404*64kB (UME) 484*128kB (UME) 19*256kB (UME) 0*512k
B 0*1024kB 0*2048kB 0*4096kB = 722236kB
Node 0 Normal: 399161*4kB (UME) 126769*8kB (UME) 74232*16kB (UME) 26738*32kB (UME) 5767*64kB (UME) 1079*128kB (UME) 50*256kB (UE) 2*
512kB (U) 0*1024kB 0*2048kB 0*4096kB = 5175148kB
This information tells how much free RAM the system has ready for future memory requests. I'm trying to minimize system latency and I'd like to collect and log information about how much free space I normally have in each bucket so I could better understand abnormal situation when the OOM Killer is activated because the system is often seeing high latency before that.
Is the information in the above three lines available accessible using vanilla Linux kernel without triggering OOM Killer? (Obviously, NUMA systems could have more RAM nodes so the above lines are the minimum info.)