[Crash-utility] Incorrect HighMem statistics

Dave Anderson anderson at redhat.com
Fri Jan 13 14:04:27 UTC 2012



----- Original Message -----
> Dne Čt 12. ledna 2012 22:59:14 Dave Anderson napsal(a):
> > ----- Original Message -----
> > 
> > > Hi all,
> > > 
> > > it seems crash shows incorrect HighMem stats with recent kernels.
> > > E.g.:
> > > 
> > > crash> kmem -i
> > > [...]
> > > TOTAL HIGH  1821682       6.9 GB   93% of TOTAL MEM
> > >  FREE HIGH        0            0    0% of TOTAL HIGH
> > >  TOTAL LOW   132983     519.5 MB    6% of TOTAL MEM
> > >  
> > >   FREE LOW  1333474       5.1 GB  1002% of TOTAL LOW
> > > 
> > > BTW note that total low is smaller than free low, which is obviously
> > > incorrect. I believe that this is somehow related to the Movable zone,
> > > because the code that counts free low pages checks for pages which
> > > belong to
> > > 
> > > ZONE_HIGHMEM, which is initialized as:
> > >                 vt->ZONE_HIGHMEM = vt->nr_zones - 1;
> > > 
> > > My system has 4 zones:
> > > 
> > > ZONE  NAME         SIZE   MEM_MAP  START_PADDR  START_MAPNR
> > > 
> > >   0   DMA          4080  f4a02200        10000            0
> > >   1   Normal     221694  f4a22000      1000000         4080
> > >   2   HighMem    790002  f50e5fc0     371fe000       225774
> > >   3   Movable         0         0            0            0
> > > 
> > > And indeed, "help -v" shows:
> > > [...]
> > > 
> > >     dump_free_pages: dump_free_pages_zones_v2()
> > > 
> > > [...]
> > > 
> > >        ZONE_HIGHMEM: 3
> > > 
> > > I don't know yet how to fix this, but maybe somebody can push me in
> > > the right direction.
> > 
> > Seems like you're already headed down the right path with the
> > vt->ZONE_HIGHMEM initialization, at least w/respect to the
> > FREE HIGH of "0".  On the other hand, I'm looking at a recent
> > x86 kernel with the Movable zone, and it has normal
> > looking statistics w/respect to total-low/free-low.
> 
> Interesting. What does "kmem -n" show? How is your ZONE_HIGHMEM
> reported by "help -v"?

It's got the incorrect value:

crash> help -v | grep HIGH
       ZONE_HIGHMEM: 3
crash>

crash> kmem -n
NODE    SIZE    PGLIST_DATA   BOOTMEM_DATA   NODE_ZONES 
  0    262128     c0a8c980        ----        c0a8c980  
                                              c0a8ccc0
                                              c0a8d000
                                              c0a8d340
MEM_MAP   START_PADDR  START_MAPNR
f5c51200     10000          16    

ZONE  NAME         SIZE   MEM_MAP  START_PADDR  START_MAPNR
  0   DMA          4080  f5c51200        10000            0
  1   Normal     221694  f5c71000      1000000         4080
  2   HighMem     36354  f6334fc0     371fe000       225774
  3   Movable         0         0            0            0
crash>

And presumably that causes the same FREE HIGH of 0 that 
you are also seeing:

crash> kmem -i
              PAGES        TOTAL      PERCENTAGE
 TOTAL MEM   256423    1001.7 MB         ----
      FREE    97052     379.1 MB   37% of TOTAL MEM
      USED   159371     622.5 MB   62% of TOTAL MEM
    SHARED   171876     671.4 MB   67% of TOTAL MEM
   BUFFERS     2322       9.1 MB    0% of TOTAL MEM
    CACHED    90337     352.9 MB   35% of TOTAL MEM
      SLAB    14440      56.4 MB    5% of TOTAL MEM

TOTAL HIGH    36354       142 MB   14% of TOTAL MEM
 FREE HIGH        0            0    0% of TOTAL HIGH
 TOTAL LOW   220069     859.6 MB   85% of TOTAL MEM
  FREE LOW    97052     379.1 MB   44% of TOTAL LOW

TOTAL SWAP  1359871       5.2 GB         ----
 SWAP USED     9039      35.3 MB    0% of TOTAL SWAP
 SWAP FREE  1350832       5.2 GB   99% of TOTAL SWAP
crash> 






More information about the Crash-utility mailing list