My /proc/vmstat contains the following rows:

pgalloc_dma 0
pgalloc_dma32 288126724
pgalloc_normal 33952724486
pgalloc_movable 0

I'm wondering what they are measurements of. Are they counters of the total number of page allocations done for as long as the machine has been alive or are they gauges of the current number of allocated pages of each type?

The man page for proc only tells us in which version of the kernel each metric was added, referring the reader to the kernel source code for further information.

Grepping for pgalloc_normal in the Linux kernel source yields nothing. The file mm/vmstat seems to define the list of fields present in /proc/vmstat under the name vmstat_text. I have tried to trace back the source of the metrics which seem to be written in the function vmstat_refresh, but from there I'm lost in the redirection.


The pgalloc rows reflect PGALLOC events, which count page allocations per CPU and per zone since the system was booted (and /proc/vmstat folds all the per-CPU values into a single system-wide value). There’s a corresponding pgfree which counts page freeing events (not per zone).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.