forked from htop-dev/htop
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
New meter displays same ARC stats as FreeBSD top(1). Can be extended to other platforms that support ZFS. Pulling kstat.zfs.misc.arcstats.c_max as the meter total, so the meter has a meaningful value to work up to. The Text meter displays, first, the maximum ARC size (Meter.total), then second, the total ARC used, using the difference between Meter.maxItems and Meter.curItems to "hide" the used value from the Bar and Graph drawing functions by using an index in Meter.values[] that is beyond curItems - 1, but less than maxItems - 1.
- Loading branch information
1 parent
92258e9
commit a93edde
Showing
9 changed files
with
220 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
/* | ||
htop - ZfsArcMeter.c | ||
(C) 2004-2011 Hisham H. Muhammad | ||
Released under the GNU GPL, see the COPYING file | ||
in the source distribution for its full text. | ||
*/ | ||
|
||
#include "ZfsArcMeter.h" | ||
|
||
#include "CRT.h" | ||
#include "Platform.h" | ||
|
||
#include <stdlib.h> | ||
#include <string.h> | ||
#include <math.h> | ||
#include <sys/param.h> | ||
#include <assert.h> | ||
|
||
/*{ | ||
#include "Meter.h" | ||
}*/ | ||
|
||
int ZfsArcMeter_attributes[] = { | ||
ZFS_MFU, ZFS_MRU, ZFS_ANON, ZFS_HEADER, ZFS_OTHER | ||
}; | ||
|
||
static void ZfsArcMeter_updateValues(Meter* this, char* buffer, int size) { | ||
int written; | ||
Platform_setZfsArcValues(this); | ||
|
||
written = Meter_humanUnit(buffer, this->values[5], size); | ||
buffer += written; | ||
if ((size -= written) > 0) { | ||
*buffer++ = '/'; | ||
size--; | ||
Meter_humanUnit(buffer, this->total, size); | ||
} | ||
} | ||
|
||
static void ZfsArcMeter_display(Object* cast, RichString* out) { | ||
char buffer[50]; | ||
Meter* this = (Meter*)cast; | ||
|
||
RichString_write(out, CRT_colors[METER_TEXT], ":"); | ||
Meter_humanUnit(buffer, this->total, 50); | ||
RichString_append(out, CRT_colors[METER_VALUE], buffer); | ||
Meter_humanUnit(buffer, this->values[5], 50); | ||
RichString_append(out, CRT_colors[METER_TEXT], " Used:"); | ||
RichString_append(out, CRT_colors[METER_VALUE], buffer); | ||
Meter_humanUnit(buffer, this->values[0], 50); | ||
RichString_append(out, CRT_colors[METER_TEXT], " MFU:"); | ||
RichString_append(out, CRT_colors[ZFS_MFU], buffer); | ||
Meter_humanUnit(buffer, this->values[1], 50); | ||
RichString_append(out, CRT_colors[METER_TEXT], " MRU:"); | ||
RichString_append(out, CRT_colors[ZFS_MRU], buffer); | ||
Meter_humanUnit(buffer, this->values[2], 50); | ||
RichString_append(out, CRT_colors[METER_TEXT], " Anon:"); | ||
RichString_append(out, CRT_colors[ZFS_ANON], buffer); | ||
Meter_humanUnit(buffer, this->values[3], 50); | ||
RichString_append(out, CRT_colors[METER_TEXT], " Hdr:"); | ||
RichString_append(out, CRT_colors[ZFS_HEADER], buffer); | ||
Meter_humanUnit(buffer, this->values[4], 50); | ||
RichString_append(out, CRT_colors[METER_TEXT], " Oth:"); | ||
RichString_append(out, CRT_colors[ZFS_OTHER], buffer); | ||
} | ||
|
||
MeterClass ZfsArcMeter_class = { | ||
.super = { | ||
.extends = Class(Meter), | ||
.delete = Meter_delete, | ||
.display = ZfsArcMeter_display, | ||
}, | ||
.updateValues = ZfsArcMeter_updateValues, | ||
.defaultMode = TEXT_METERMODE, | ||
.maxItems = 6, | ||
.total = 100.0, | ||
.attributes = ZfsArcMeter_attributes, | ||
.name = "ZFSARC", | ||
.uiName = "ZFS ARC", | ||
.caption = "ARC" | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
/* Do not edit this file. It was automatically generated. */ | ||
|
||
#ifndef HEADER_ZfsArcMeter | ||
#define HEADER_ZfsArcMeter | ||
/* | ||
htop - ZfsArcMeter.h | ||
(C) 2004-2011 Hisham H. Muhammad | ||
Released under the GNU GPL, see the COPYING file | ||
in the source distribution for its full text. | ||
*/ | ||
|
||
#include "Meter.h" | ||
|
||
extern int ZfsArcMeter_attributes[]; | ||
|
||
extern MeterClass ZfsArcMeter_class; | ||
|
||
#endif |