Skip to content

Commit

Permalink
Fix some of the memory stats.
Browse files Browse the repository at this point in the history
  • Loading branch information
fraggerfox committed Feb 22, 2024
1 parent 63ec2cd commit a50f2ad
Showing 1 changed file with 20 additions and 21 deletions.
41 changes: 20 additions & 21 deletions src/netbsd/btop_collect.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ namespace Shared {
long pageSize, clkTck, coreCount, physicalCoreCount, arg_max;
int totalMem_len, kfscale;
long bootTime;
size_t size;

void init() {
//? Shared global variables init
Expand All @@ -132,8 +133,8 @@ namespace Shared {
coreCount = ncpu;
}

pageSize = sysconf(_SC_PAGE_SIZE);
if (pageSize <= 0) {
size = sizeof(pageSize);
if (sysctlbyname("hw.pagesize", &pageSize, &size, nullptr, 0) < 0) {
pageSize = 4096;
Logger::warning("Could not get system page size. Defaulting to 4096, processes memory usage might be incorrect.");
}
Expand All @@ -144,12 +145,10 @@ namespace Shared {
Logger::warning("Could not get system clock ticks per second. Defaulting to 100, processes cpu usage might be incorrect.");
}

int64_t memsize = 0;
size_t size = sizeof(memsize);
if (sysctlbyname("hw.physmem", &memsize, &size, nullptr, 0) < 0) {
size = sizeof(totalMem);
if (sysctlbyname("hw.physmem", &totalMem, &size, nullptr, 0) < 0) {
Logger::warning("Could not get memory size");
}
totalMem = memsize;

struct timeval result;
size = sizeof(result);
Expand Down Expand Up @@ -599,31 +598,31 @@ namespace Mem {
auto &mem = current_mem;
static bool snapped = (getenv("BTOP_SNAPPED") != nullptr);

u_int memActive, memWire, cachedMem;
// u_int freeMem;
uint64_t memActive, memWired, memCached, memFree, memInactive;
size_t size;

static int uvmexp_mib[] = {CTL_VM, VM_UVMEXP2};
struct uvmexp_sysctl uvmexp;
size = sizeof(uvmexp);
if (sysctl(uvmexp_mib, 2, &uvmexp, &size, NULL, 0) == -1) {
Logger::error("uvmexp sysctl failed");
bzero(&uvmexp, sizeof(uvmexp));
}
memActive = (uvmexp.active + uvmexp.wired) * Shared::pageSize;
memWire = uvmexp.wired;
// freeMem = uvmexp.free * Shared::pageSize;
cachedMem = (uvmexp.filepages + uvmexp.execpages) * Shared::pageSize;
mem.stats.at("used") = memActive;
mem.stats.at("available") = Shared::totalMem - memActive - memWire;
mem.stats.at("cached") = cachedMem;
mem.stats.at("free") = Shared::totalMem - memActive - memWire;

memActive = (uvmexp.active + uvmexp.bootpages) * Shared::pageSize;
memWired = uvmexp.wired * Shared::pageSize;
memInactive = uvmexp.inactive * Shared::pageSize;
memFree = uvmexp.free * Shared::pageSize;
memCached = (uvmexp.filepages + uvmexp.execpages + uvmexp.anonpages) * Shared::pageSize;
mem.stats.at("used") = memActive + memWired;
mem.stats.at("available") = memInactive + memCached;
mem.stats.at("cached") = memCached;
mem.stats.at("free") = memFree;

if (show_swap) {
uint64_t total = uvmexp.swpages * Shared::pageSize;
mem.stats.at("swap_total") = total;
uint64_t swapped = uvmexp.swpginuse * Shared::pageSize;
mem.stats.at("swap_used") = swapped;
mem.stats.at("swap_free") = total - swapped;
mem.stats.at("swap_total") = uvmexp.swpages * Shared::pageSize;
mem.stats.at("swap_used") = uvmexp.swpginuse * Shared::pageSize;
mem.stats.at("swap_free") = (uvmexp.swpages - uvmexp.swpginuse) * Shared::pageSize;
}

if (show_swap and mem.stats.at("swap_total") > 0) {
Expand Down

0 comments on commit a50f2ad

Please sign in to comment.