Package: xosview
Version: 1.8.3+debian-11
Severity: wishlist
Tags: patch

I created a patch that adds memory fields for SLAB, mapped files, and page tables. It's mainly for the SLAB field, since if the SLAB cache gets very large (let's say 1/3 of the system's ram or more), users might either think that their apps are taking up that amount of memory or that there might be a kernel leak.

This patch will only work with 2.6 kernels that list the fields "Slab", "Mapped", and "PageTables" in /proc/meminfo.

Ryan Thoryk
System Administrator
onShore Networks, LLC
[EMAIL PROTECTED]
[EMAIL PROTECTED]
#!/bin/sh /usr/share/dpatch/dpatch-run
## 24_enhanced_mem.dpatch
## Dpatch by Ryan Thoryk <[EMAIL PROTECTED]>
## DP: Additional mem values for Linux

@DPATCH@

diff -urN xosview-1.8.3-orig/linux/memmeter.cc 
xosview-1.8.3-new/linux/memmeter.cc
--- xosview-1.8.3-orig/linux/memmeter.cc        2006-02-17 22:33:06.000000000 
-0600
+++ xosview-1.8.3-new/linux/memmeter.cc 2008-11-26 12:34:17.558494000 -0600
@@ -15,7 +15,7 @@
 static const char MEMSTATFNAME[] = "/proc/memstat";
 
 MemMeter::MemMeter( XOSView *parent )
-: FieldMeterGraph( parent, 4, "MEM", "USED+SHAR/BUFF/CACHE/FREE" ){
+: FieldMeterGraph( parent, 7, "MEM", "USED/BUFF/SLAB/MAP/PT/CACHE/FREE" ){
   _shAdj = -1;
 
   // Check and see if the memstat module has been loaded
@@ -43,8 +43,11 @@
   if (_shAdj == 0)
     setfieldcolor( 1, parent_->getResource( "memSharedColor" ) );
   setfieldcolor( 2 + _shAdj, parent_->getResource( "memBufferColor" ) );
-  setfieldcolor( 3 + _shAdj, parent_->getResource( "memCacheColor" ) );
-  setfieldcolor( 4 + _shAdj, parent_->getResource( "memFreeColor" ) );
+  setfieldcolor( 3 + _shAdj, parent_->getResource( "memSlabColor" ) );
+  setfieldcolor( 4 + _shAdj, parent_->getResource( "memMapColor" ) );
+  setfieldcolor( 5 + _shAdj, parent_->getResource( "memPTColor" ) );
+  setfieldcolor( 6 + _shAdj, parent_->getResource( "memCacheColor" ) );
+  setfieldcolor( 7 + _shAdj, parent_->getResource( "memFreeColor" ) );
   priority_ = atoi (parent_->getResource( "memPriority" ) );
   dodecay_ = parent_->isResourceTrue( "memDecay" );
   useGraph_ = parent_->isResourceTrue( "memGraph" );
@@ -54,11 +57,12 @@
 void MemMeter::checkevent( void ){
   getmeminfo();
   /* for debugging (see below)
-  printf("t %4.1f used %4.1f share %4.1f buffer %4.1f cache %4.1f free 
%4.1f\n",
+  printf("t %4.1f used %4.1f buffer %4.1f slab %4.1f map %4.1f pt %4.1f cache 
%4.1f free %4.1f\n",
          total_/1024.0/1024.0,
          fields_[0]/1024.0/1024.0, fields_[1]/1024.0/1024.0,
         fields_[2]/1024.0/1024.0, fields_[3]/1024.0/1024.0,
-        fields_[4]/1024.0/1024.0);
+        fields_[4]/1024.0/1024.0, fields_[5]/1024.0/1024.0,
+        fields_[6]/1024.0/1024.0);
   */
   drawfields();
 }
@@ -76,11 +80,11 @@
                               // without this fix "used" sometimes gets < 0 !
     fields_[0] = total_ - fields_[4] - fields_[3] - fields_[2] - fields_[1];
   }else{
-    fields_[0] = total_ - fields_[3] - fields_[2] - fields_[1];
+    fields_[0] = total_ - fields_[6] - fields_[5] - fields_[4] - fields_[3] - 
fields_[2] - fields_[1];
   }
 
   if (total_)
-    FieldMeterDecay::setUsed (total_ - fields_[4 + _shAdj], total_);
+    FieldMeterDecay::setUsed (total_ - fields_[7 + _shAdj], total_);
 }
 
 MemMeter::LineInfo *MemMeter::findLines(LineInfo *tmplate, int len,
@@ -116,9 +120,12 @@
 void MemMeter::initLineInfo(void){
   static LineInfo infos[] = {
     LineInfo("MemTotal", &total_),
-    LineInfo("MemFree", &fields_[4 + _shAdj]),
+    LineInfo("MemFree", &fields_[7 + _shAdj]),
     LineInfo("Buffers", &fields_[2 + _shAdj]),
-    LineInfo("Cached", &fields_[3 + _shAdj])
+    LineInfo("Slab", &fields_[3 + _shAdj]),
+    LineInfo("Mapped", &fields_[4 + _shAdj]),
+    LineInfo("PageTables", &fields_[5 + _shAdj]),
+    LineInfo("Cached", &fields_[6 + _shAdj])
   };
   _numMIlineInfos = sizeof(infos) / sizeof(LineInfo);
 
diff -urN xosview-1.8.3-orig/Xdefaults xosview-1.8.3-new/Xdefaults
--- xosview-1.8.3-orig/Xdefaults        2006-02-18 19:36:08.000000000 -0600
+++ xosview-1.8.3-new/Xdefaults 2008-11-26 12:53:01.477496000 -0600
@@ -87,6 +87,9 @@
 xosview*memUsedColor:       seagreen
 xosview*memSharedColor:     SkyBlue
 xosview*memBufferColor:     orange
+xosview*memSlabColor:      slateblue1
+xosview*memMapColor:       lightgoldenrod
+xosview*memPTColor:        lightgreen
 xosview*memCacheColor:      red
 xosview*memFreeColor:       aquamarine
 xosview*memTextColor:       blue
diff -urN xosview-1.8.3-orig/Xdefaults.in xosview-1.8.3-new/Xdefaults.in
--- xosview-1.8.3-orig/Xdefaults.in     2006-02-17 23:45:00.000000000 -0600
+++ xosview-1.8.3-new/Xdefaults.in      2008-11-26 12:37:19.204494000 -0600
@@ -87,6 +87,9 @@
 xosview*memUsedColor:       seagreen
 xosview*memSharedColor:     SkyBlue
 xosview*memBufferColor:     orange
+xosview*memSlabColor:      blue
+xosview*memMapColor:       SlateBlue1
+xosview*memPTColor:        lightgreen
 xosview*memCacheColor:      red
 xosview*memFreeColor:       aquamarine
 xosview*memTextColor:       blue
diff -urN xosview-1.8.3-orig/Xdefaults.stipple 
xosview-1.8.3-new/Xdefaults.stipple
--- xosview-1.8.3-orig/Xdefaults.stipple        1999-11-06 16:48:16.000000000 
-0600
+++ xosview-1.8.3-new/Xdefaults.stipple 2008-11-26 12:25:50.067494000 -0600
@@ -14,6 +14,9 @@
 xosvstipple*memUsedColor:      orange
 xosvstipple*memSharedColor:    orange
 xosvstipple*memBufferColor:    orange
+xosvstipple*memSlabColor:      orange
+xosvstipple*memMapColor:        orange
+xosvstipple*memPTColor:         orange
 xosvstipple*memCacheColor:     orange
 xosvstipple*memFreeColor:      orange
 xosvstipple*memTextColor:      orange
@@ -51,6 +54,9 @@
 xosvstipplebw*memUsedColor:    black
 xosvstipplebw*memSharedColor:  black
 xosvstipplebw*memBufferColor:  black
+xosvstipplebw*memSlabColor:    black
+xosvstipplebw*memMapColor:      black
+xosvstipplebw*memPTColor:       black
 xosvstipplebw*memCacheColor:   black
 xosvstipplebw*memFreeColor:    black
 xosvstipplebw*memTextColor:    black

Reply via email to