diff options
| author | Andrew Morton <akpm@zip.com.au> | 2002-07-18 21:09:17 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-07-18 21:09:17 -0700 |
| commit | e177ea28e7eded3490174487c81e5bef8a2c4d95 (patch) | |
| tree | 3a4422d4f04b7643fd14e809e7b8385246122bd9 /include/linux/kernel_stat.h | |
| parent | 6a2ea3382b534e937ba2153f4a0c6021e04a1ef5 (diff) | |
[PATCH] VM instrumentation
A patch from Rik which adds some operational statitics to the VM.
In /proc/meminfo:
PageTables: Amount of memory used for process pagetables
PteChainTot: Amount of memory allocated for pte_chain objects
PteChainUsed: Amount of memory currently in use for pte chains.
In /proc/stat:
pageallocs: Number of pages allocated in the page allocator
pagefrees: Number of pages returned to the page allocator
(These can be used to measure the allocation rate)
pageactiv: Number of pages activated (moved to the active list)
pagedeact: Number of pages deactivated (moved to the inactive list)
pagefault: Total pagefaults
majorfault: Major pagefaults
pagescan: Number of pages which shrink_cache looked at
pagesteal: Number of pages which shrink_cache freed
pageoutrun: Number of calls to try_to_free_pages()
allocstall: Number of calls to balance_classzone()
Rik will be writing a userspace app which interprets these things.
The /proc/meminfo stats are efficient, but the /proc/stat accumulators
will cause undesirable cacheline bouncing. We need to break the disk
statistics out of struct kernel_stat and make everything else in there
per-cpu. If that doesn't happen in time for 2.6 then we disable
KERNEL_STAT_INC().
Diffstat (limited to 'include/linux/kernel_stat.h')
| -rw-r--r-- | include/linux/kernel_stat.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/include/linux/kernel_stat.h b/include/linux/kernel_stat.h index de592f2ba451..75533ee86b73 100644 --- a/include/linux/kernel_stat.h +++ b/include/linux/kernel_stat.h @@ -26,6 +26,11 @@ struct kernel_stat { unsigned int dk_drive_wblk[DK_MAX_MAJOR][DK_MAX_DISK]; unsigned int pgpgin, pgpgout; unsigned int pswpin, pswpout; + unsigned int pgalloc, pgfree; + unsigned int pgactivate, pgdeactivate; + unsigned int pgfault, pgmajfault; + unsigned int pgscan, pgsteal; + unsigned int pageoutrun, allocstall; #if !defined(CONFIG_ARCH_S390) unsigned int irqs[NR_CPUS][NR_IRQS]; #endif @@ -35,6 +40,13 @@ extern struct kernel_stat kstat; extern unsigned long nr_context_switches(void); +/* + * Maybe we need to smp-ify kernel_stat some day. It would be nice to do + * that without having to modify all the code that increments the stats. + */ +#define KERNEL_STAT_INC(x) kstat.x++ +#define KERNEL_STAT_ADD(x, y) kstat.x += y + #if !defined(CONFIG_ARCH_S390) /* * Number of interrupts per specific IRQ source, since bootup |
