]> err.no Git - linux-2.6/blobdiff - include/linux/mmzone.h
[PATCH] zoned vm counters: conversion of nr_writeback to per zone counter
[linux-2.6] / include / linux / mmzone.h
index d6120fa69116f92399bfeb6951250ac1cc21e4a5..885cc9727001cc93c692fd039de81c2b0c126b82 100644 (file)
@@ -46,6 +46,17 @@ struct zone_padding {
 #define ZONE_PADDING(name)
 #endif
 
+enum zone_stat_item {
+       NR_ANON_PAGES,  /* Mapped anonymous pages */
+       NR_FILE_MAPPED, /* pagecache pages mapped into pagetables.
+                          only modified from process context */
+       NR_FILE_PAGES,
+       NR_SLAB,        /* Pages used by slab allocator */
+       NR_PAGETABLE,   /* used for pagetables */
+       NR_FILE_DIRTY,
+       NR_WRITEBACK,
+       NR_VM_ZONE_STAT_ITEMS };
+
 struct per_cpu_pages {
        int count;              /* number of pages in the list */
        int high;               /* high watermark, emptying needed */
@@ -55,6 +66,10 @@ struct per_cpu_pages {
 
 struct per_cpu_pageset {
        struct per_cpu_pages pcp[2];    /* 0: hot.  1: cold */
+#ifdef CONFIG_SMP
+       s8 vm_stat_diff[NR_VM_ZONE_STAT_ITEMS];
+#endif
+
 #ifdef CONFIG_NUMA
        unsigned long numa_hit;         /* allocated in intended node */
        unsigned long numa_miss;        /* allocated in non intended node */
@@ -165,12 +180,8 @@ struct zone {
        /* A count of how many reclaimers are scanning this zone */
        atomic_t                reclaim_in_progress;
 
-       /*
-        * timestamp (in jiffies) of the last zone reclaim that did not
-        * result in freeing of pages. This is used to avoid repeated scans
-        * if all memory in the zone is in use.
-        */
-       unsigned long           last_unsuccessful_zone_reclaim;
+       /* Zone statistics */
+       atomic_long_t           vm_stat[NR_VM_ZONE_STAT_ITEMS];
 
        /*
         * prev_priority holds the scanning priority for this zone.  It is