OSX: exclude cached memory from used

This commit is contained in:
Pawel "l0ner" Soltys 2015-02-15 01:17:51 +01:00
parent cf2a094f13
commit 33d64bc53b

@ -30,33 +30,29 @@ std::string mem_string( bool use_colors )
std::ostringstream oss; std::ostringstream oss;
// These values are in bytes // These values are in bytes
int64_t total_mem; u_int64_t total_mem;
int64_t used_mem; u_int64_t used_mem;
int64_t unused_mem; //u_int64_t unused_mem;
vm_size_t page_size; vm_size_t page_size;
mach_port_t mach_port;
mach_msg_type_number_t count;
vm_statistics_data_t vm_stats; vm_statistics_data_t vm_stats;
// Get total physical memory // Get total physical memory
int mib[2]; int mib[] = { CTL_HW, HW_MEMSIZE };
mib[0] = CTL_HW; size_t length = sizeof( total_mem );
mib[1] = HW_MEMSIZE;
size_t length = sizeof( int64_t );
sysctl( mib, 2, &total_mem, &length, NULL, 0 ); sysctl( mib, 2, &total_mem, &length, NULL, 0 );
mach_port = mach_host_self(); mach_port_t mach_port = mach_host_self();
count = sizeof( vm_stats ) / sizeof( natural_t ); mach_msg_type_number_t count = sizeof( vm_stats ) / sizeof( natural_t );
if( KERN_SUCCESS == host_page_size( mach_port, &page_size ) && if( KERN_SUCCESS == host_page_size( mach_port, &page_size ) &&
KERN_SUCCESS == host_statistics( mach_port, HOST_VM_INFO, KERN_SUCCESS == host_statistics( mach_port, HOST_VM_INFO,
( host_info_t )&vm_stats, &count ) ) ( host_info_t )&vm_stats, &count )
)
{ {
unused_mem = ( int64_t )vm_stats.free_count * ( int64_t )page_size; //unused_mem = static_cast<u_int64_t>( vm_stats.free_count * page_size );
used_mem = ( ( int64_t )vm_stats.active_count + used_mem = static_cast<u_int64_t>(
( int64_t )vm_stats.inactive_count + ( int64_t )vm_stats.wire_count ( vm_stats.active_count + vm_stats.wire_count ) * page_size);
) * ( int64_t )page_size;
} }
if( use_colors ) if( use_colors )
@ -65,7 +61,7 @@ std::string mem_string( bool use_colors )
} }
oss << convert_unit( used_mem, MEGABYTES ) << '/' oss << convert_unit( used_mem, MEGABYTES ) << '/'
<< convert_unit( total_mem, MEGABYTES ) << "MB"; << convert_unit( total_mem, MEGABYTES ) << "MB";
if( use_colors ) if( use_colors )
{ {