Merge pull request #22 from jasperla/openbsd_memory
Switch to using uvmexp which is the prefered way of retrieving memory information
This commit is contained in:
commit
39dc52f23c
@ -34,7 +34,6 @@
|
|||||||
|
|
||||||
#include <sys/mount.h> // VFS_* which we use to get cache
|
#include <sys/mount.h> // VFS_* which we use to get cache
|
||||||
#include <sys/sysctl.h>
|
#include <sys/sysctl.h>
|
||||||
#include <sys/vmmeter.h> // vmtotal struct
|
|
||||||
|
|
||||||
#include "error.h"
|
#include "error.h"
|
||||||
#include "memory.h"
|
#include "memory.h"
|
||||||
@ -43,6 +42,9 @@
|
|||||||
|
|
||||||
static int pageshift;
|
static int pageshift;
|
||||||
|
|
||||||
|
#ifndef LOG1024
|
||||||
|
#define LOG1024 10
|
||||||
|
#endif
|
||||||
#define pagesh(size) ((size) << pageshift)
|
#define pagesh(size) ((size) << pageshift)
|
||||||
|
|
||||||
std::string mem_string( bool use_colors = false )
|
std::string mem_string( bool use_colors = false )
|
||||||
@ -72,11 +74,13 @@ std::string mem_string( bool use_colors = false )
|
|||||||
page_size >>= 1;
|
page_size >>= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pageshift -= LOG1024;
|
||||||
|
|
||||||
// get vm memory stats
|
// get vm memory stats
|
||||||
static int vm_totalmem[] = { CTL_VM, VM_METER };
|
static int uvmexp_mib[] = { CTL_VM, VM_UVMEXP };
|
||||||
struct vmtotal vm_total;
|
struct uvmexp uvmexp;
|
||||||
size = sizeof( vm_total );
|
size = sizeof( uvmexp );
|
||||||
if( sysctl( vm_totalmem, 2, &vm_total, &size, NULL, 0 ) < 0 )
|
if( sysctl( uvmexp_mib, 2, &uvmexp, &size, NULL, 0 ) < 0 )
|
||||||
{
|
{
|
||||||
error( "memory: error getting vm memory stats" );
|
error( "memory: error getting vm memory stats" );
|
||||||
}
|
}
|
||||||
@ -90,16 +94,17 @@ std::string mem_string( bool use_colors = false )
|
|||||||
error( "memory: error getting cached memory size" );
|
error( "memory: error getting cached memory size" );
|
||||||
}
|
}
|
||||||
|
|
||||||
// calculations based on conky openbsd port
|
// calculations based on libgtop
|
||||||
used_mem = pagesh( vm_total.t_rm );
|
used_mem = (uint64_t) pagesh (uvmexp.npages - uvmexp.free) << LOG1024;
|
||||||
free_mem = pagesh( vm_total.t_free );
|
|
||||||
|
free_mem = (uint64_t) pagesh( uvmexp.free ) << LOG1024;
|
||||||
|
|
||||||
// from nagios-memory plugin
|
// from nagios-memory plugin
|
||||||
used_mem -= pagesh( bcstats.numbufpages );
|
used_mem -= pagesh( bcstats.numbufpages );
|
||||||
free_mem += pagesh( bcstats.numbufpages );
|
free_mem += pagesh( bcstats.numbufpages );
|
||||||
|
|
||||||
// calculate total memory
|
// calculate total memory
|
||||||
total_mem = used_mem + free_mem;
|
total_mem = (uint64_t) pagesh( uvmexp.npages ) << LOG1024;
|
||||||
|
|
||||||
if( use_colors )
|
if( use_colors )
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user