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