Go to the documentation of this file.00001
00002
00003 #if defined (ACE_HAS_KSTAT)
00004 #include <sys/sysinfo.h>
00005 #endif
00006
00007 #include "ace/Monitor_Control/Memory_Usage_Monitor.h"
00008
00009 #if defined (ACE_HAS_MONITOR_FRAMEWORK) && (ACE_HAS_MONITOR_FRAMEWORK == 1)
00010
00011 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00012
00013 namespace ACE
00014 {
00015 namespace Monitor_Control
00016 {
00017 const char* Memory_Usage_Monitor::default_name_ =
00018 "OS/Memory/TotalUsage";
00019
00020 Memory_Usage_Monitor::Memory_Usage_Monitor (const char* name)
00021 : Monitor_Base (name, Monitor_Control_Types::MC_NUMBER)
00022 #if defined (ACE_HAS_WIN32_PDH)
00023 , Windows_Monitor (ACE_TEXT ("\\Memory\\% Committed Bytes In Use"))
00024 #endif
00025 {
00026 }
00027
00028 void
00029 Memory_Usage_Monitor::update (void)
00030 {
00031 #if defined (ACE_HAS_WIN32_PDH)
00032 this->update_i ();
00033 this->receive (this->value_);
00034 #elif defined (ACE_HAS_LINUX_SYSINFO)
00035 if (::sysinfo (&this->sysinfo_) != 0)
00036 {
00037 ACE_ERROR ((LM_ERROR,
00038 ACE_TEXT ("Memory usage - sysinfo() failed\n")));
00039 return;
00040 }
00041
00042 double used_ram = this->sysinfo_.totalram - this->sysinfo_.freeram;
00043 double percent_mem_usage = used_ram / this->sysinfo_.totalram * 100.0;
00044
00045 this->receive (percent_mem_usage);
00046 #elif defined (ACE_HAS_KSTAT)
00047 unsigned long page_size = sysconf (_SC_PAGE_SIZE);
00048 unsigned long total = sysconf (_SC_PHYS_PAGES) * page_size;
00049 unsigned long free = sysconf (_SC_AVPHYS_PAGES) * page_size;
00050
00051 double used = total - free;
00052 double percent_mem_usage = used / total * 100.0;
00053
00054 this->receive (percent_mem_usage);
00055 #endif
00056 }
00057
00058 const char*
00059 Memory_Usage_Monitor::default_name (void)
00060 {
00061 return Memory_Usage_Monitor::default_name_;
00062 }
00063
00064 void
00065 Memory_Usage_Monitor::clear_i (void)
00066 {
00067 #if defined (ACE_HAS_WIN32_PDH)
00068 this->clear_impl ();
00069 #endif
00070
00071 this->Monitor_Base::clear_i ();
00072 }
00073 }
00074 }
00075
00076 ACE_END_VERSIONED_NAMESPACE_DECL
00077
00078 #endif