From b424a5b137797ef1b921b7ed1e6ee6521b7b65b0 Mon Sep 17 00:00:00 2001 From: Nathan Scott Date: Wed, 17 Mar 2021 09:54:15 +1100 Subject: Implement shared memory support on the PCP platform Uses the mem.util.shared metric (Shmem from meminfo). --- pcp/PCPProcessList.c | 7 ++++--- pcp/Platform.c | 20 ++++++++++---------- pcp/Platform.h | 3 ++- 3 files changed, 16 insertions(+), 14 deletions(-) (limited to 'pcp') diff --git a/pcp/PCPProcessList.c b/pcp/PCPProcessList.c index a823695e..780862b3 100644 --- a/pcp/PCPProcessList.c +++ b/pcp/PCPProcessList.c @@ -1,7 +1,7 @@ /* htop - PCPProcessList.c (C) 2014 Hisham H. Muhammad -(C) 2020 htop dev team +(C) 2020-2021 htop dev team (C) 2020-2021 Red Hat, Inc. All Rights Reserved. Released under the GNU GPLv2, see the COPYING file in the source distribution for its full text. @@ -584,12 +584,13 @@ static void PCPProcessList_updateMemoryInfo(ProcessList* super) { super->buffersMem = value.ull; if (Metric_values(PCP_MEM_SRECLAIM, &value, 1, PM_TYPE_U64) != NULL) sreclaimableMem = value.ull; + if (Metric_values(PCP_MEM_SHARED, &value, 1, PM_TYPE_U64) != NULL) + super->sharedMem = value.ull; if (Metric_values(PCP_MEM_CACHED, &value, 1, PM_TYPE_U64) != NULL) { super->cachedMem = value.ull; super->cachedMem += sreclaimableMem; } - unsigned long long int usedDiff; - usedDiff = freeMem + super->cachedMem + super->buffersMem; + const memory_t usedDiff = freeMem + super->cachedMem + sreclaimableMem + super->buffersMem + super->sharedMem; super->usedMem = (super->totalMem >= usedDiff) ? super->totalMem - usedDiff : super->totalMem - freeMem; if (Metric_values(PCP_MEM_AVAILABLE, &value, 1, PM_TYPE_U64) != NULL) diff --git a/pcp/Platform.c b/pcp/Platform.c index 91b92673..70af0a85 100644 --- a/pcp/Platform.c +++ b/pcp/Platform.c @@ -1,7 +1,7 @@ /* htop - linux/Platform.c (C) 2014 Hisham H. Muhammad -(C) 2020 htop dev team +(C) 2020-2021 htop dev team (C) 2020-2021 Red Hat, Inc. All Rights Reserved. Released under the GNU GPLv2, see the COPYING file in the source distribution for its full text. @@ -152,6 +152,7 @@ static const char *Platform_metricNames[] = { [PCP_MEM_AVAILABLE] = "mem.util.available", [PCP_MEM_BUFFERS] = "mem.util.bufmem", [PCP_MEM_CACHED] = "mem.util.cached", + [PCP_MEM_SHARED] = "mem.util.shared", [PCP_MEM_SRECLAIM] = "mem.util.slabReclaimable", [PCP_MEM_SWAPCACHED] = "mem.util.swapCached", [PCP_MEM_SWAPTOTAL] = "mem.util.swapTotal", @@ -587,18 +588,17 @@ double Platform_setCPUValues(Meter* this, int cpu) { void Platform_setMemoryValues(Meter* this) { const ProcessList* pl = this->pl; const PCPProcessList* ppl = (const PCPProcessList*) pl; - long int usedMem = pl->usedMem; - long int buffersMem = pl->buffersMem; - long int cachedMem = pl->cachedMem; - usedMem -= buffersMem + cachedMem; - this->total = pl->totalMem; - this->values[0] = usedMem; - this->values[1] = buffersMem; - this->values[2] = cachedMem; + + this->total = pl->totalMem; + this->values[0] = pl->usedMem; + this->values[1] = pl->buffersMem; + this->values[2] = pl->sharedMem; + this->values[3] = pl->cachedMem; + this->values[4] = pl->availableMem; if (ppl->zfs.enabled != 0) { this->values[0] -= ppl->zfs.size; - this->values[2] += ppl->zfs.size; + this->values[3] += ppl->zfs.size; } } diff --git a/pcp/Platform.h b/pcp/Platform.h index 4d66d888..1661be77 100644 --- a/pcp/Platform.h +++ b/pcp/Platform.h @@ -3,7 +3,7 @@ /* htop - pcp/Platform.h (C) 2014 Hisham H. Muhammad -(C) 2020 htop dev team +(C) 2020-2021 htop dev team (C) 2020-2021 Red Hat, Inc. All Rights Reserved. Released under the GNU GPLv2, see the COPYING file in the source distribution for its full text. @@ -125,6 +125,7 @@ typedef enum Metric_ { PCP_MEM_FREE, /* mem.util.free */ PCP_MEM_BUFFERS, /* mem.util.bufmem */ PCP_MEM_CACHED, /* mem.util.cached */ + PCP_MEM_SHARED, /* mem.util.shared */ PCP_MEM_AVAILABLE, /* mem.util.available */ PCP_MEM_SRECLAIM, /* mem.util.slabReclaimable */ PCP_MEM_SWAPCACHED, /* mem.util.swapCached */ -- cgit v1.2.3