mirror of https://github.com/xzeldon/htop.git
Implement FreeBSD support for minimum ZFS ARC size
This commit is contained in:
parent
491c6f1044
commit
c0a9e92eea
|
@ -227,6 +227,7 @@ double Platform_setCPUValues(Meter* this, unsigned int cpu) {
|
||||||
|
|
||||||
void Platform_setMemoryValues(Meter* this) {
|
void Platform_setMemoryValues(Meter* this) {
|
||||||
const ProcessList* pl = this->pl;
|
const ProcessList* pl = this->pl;
|
||||||
|
const FreeBSDProcessList* fpl = (const FreeBSDProcessList*) pl;
|
||||||
|
|
||||||
this->total = pl->totalMem;
|
this->total = pl->totalMem;
|
||||||
this->values[0] = pl->usedMem;
|
this->values[0] = pl->usedMem;
|
||||||
|
@ -234,6 +235,16 @@ void Platform_setMemoryValues(Meter* this) {
|
||||||
// this->values[2] = "shared memory, like tmpfs and shm"
|
// this->values[2] = "shared memory, like tmpfs and shm"
|
||||||
this->values[3] = pl->cachedMem;
|
this->values[3] = pl->cachedMem;
|
||||||
// this->values[4] = "available memory"
|
// this->values[4] = "available memory"
|
||||||
|
|
||||||
|
if (fpl->zfs.enabled) {
|
||||||
|
// ZFS does not shrink below the value of zfs_arc_min.
|
||||||
|
unsigned long long int shrinkableSize = 0;
|
||||||
|
if (fpl->zfs.size > fpl->zfs.min)
|
||||||
|
shrinkableSize = fpl->zfs.size - fpl->zfs.min;
|
||||||
|
this->values[0] -= shrinkableSize;
|
||||||
|
this->values[3] += shrinkableSize;
|
||||||
|
// this->values[4] += shrinkableSize;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Platform_setSwapValues(Meter* this) {
|
void Platform_setSwapValues(Meter* this) {
|
||||||
|
|
|
@ -15,6 +15,7 @@ in the source distribution for its full text.
|
||||||
|
|
||||||
|
|
||||||
static int MIB_kstat_zfs_misc_arcstats_size[5];
|
static int MIB_kstat_zfs_misc_arcstats_size[5];
|
||||||
|
static int MIB_kstat_zfs_misc_arcstats_c_min[5];
|
||||||
static int MIB_kstat_zfs_misc_arcstats_c_max[5];
|
static int MIB_kstat_zfs_misc_arcstats_c_max[5];
|
||||||
static int MIB_kstat_zfs_misc_arcstats_mfu_size[5];
|
static int MIB_kstat_zfs_misc_arcstats_mfu_size[5];
|
||||||
static int MIB_kstat_zfs_misc_arcstats_mru_size[5];
|
static int MIB_kstat_zfs_misc_arcstats_mru_size[5];
|
||||||
|
@ -35,6 +36,7 @@ void openzfs_sysctl_init(ZfsArcStats* stats) {
|
||||||
len = 5;
|
len = 5;
|
||||||
sysctlnametomib("kstat.zfs.misc.arcstats.size", MIB_kstat_zfs_misc_arcstats_size, &len);
|
sysctlnametomib("kstat.zfs.misc.arcstats.size", MIB_kstat_zfs_misc_arcstats_size, &len);
|
||||||
|
|
||||||
|
sysctlnametomib("kstat.zfs.misc.arcstats.c_min", MIB_kstat_zfs_misc_arcstats_c_min, &len);
|
||||||
sysctlnametomib("kstat.zfs.misc.arcstats.c_max", MIB_kstat_zfs_misc_arcstats_c_max, &len);
|
sysctlnametomib("kstat.zfs.misc.arcstats.c_max", MIB_kstat_zfs_misc_arcstats_c_max, &len);
|
||||||
sysctlnametomib("kstat.zfs.misc.arcstats.mfu_size", MIB_kstat_zfs_misc_arcstats_mfu_size, &len);
|
sysctlnametomib("kstat.zfs.misc.arcstats.mfu_size", MIB_kstat_zfs_misc_arcstats_mfu_size, &len);
|
||||||
sysctlnametomib("kstat.zfs.misc.arcstats.mru_size", MIB_kstat_zfs_misc_arcstats_mru_size, &len);
|
sysctlnametomib("kstat.zfs.misc.arcstats.mru_size", MIB_kstat_zfs_misc_arcstats_mru_size, &len);
|
||||||
|
@ -61,6 +63,10 @@ void openzfs_sysctl_updateArcStats(ZfsArcStats* stats) {
|
||||||
sysctl(MIB_kstat_zfs_misc_arcstats_size, 5, &(stats->size), &len, NULL, 0);
|
sysctl(MIB_kstat_zfs_misc_arcstats_size, 5, &(stats->size), &len, NULL, 0);
|
||||||
stats->size /= 1024;
|
stats->size /= 1024;
|
||||||
|
|
||||||
|
len = sizeof(stats->min);
|
||||||
|
sysctl(MIB_kstat_zfs_misc_arcstats_c_min, 5, &(stats->min), &len, NULL, 0);
|
||||||
|
stats->min /= 1024;
|
||||||
|
|
||||||
len = sizeof(stats->max);
|
len = sizeof(stats->max);
|
||||||
sysctl(MIB_kstat_zfs_misc_arcstats_c_max, 5, &(stats->max), &len, NULL, 0);
|
sysctl(MIB_kstat_zfs_misc_arcstats_c_max, 5, &(stats->max), &len, NULL, 0);
|
||||||
stats->max /= 1024;
|
stats->max /= 1024;
|
||||||
|
|
Loading…
Reference in New Issue