diff options
author | Johnny Willemsen <jwillemsen@remedy.nl> | 2014-02-21 11:01:18 +0000 |
---|---|---|
committer | Johnny Willemsen <jwillemsen@remedy.nl> | 2014-02-21 11:01:18 +0000 |
commit | 0eb17d56787c89f0500270a3d2fccabc048dc4f4 (patch) | |
tree | d9cd57ff3a3a973fd6fe05ae38a20f6b91719b96 /TAO/orbsvcs/orbsvcs/LoadBalancing | |
parent | a299b4cd86886d654fc2b565f18f12432386dda1 (diff) | |
download | ATCD-0eb17d56787c89f0500270a3d2fccabc048dc4f4.tar.gz |
Fri Feb 21 11:01:28 UTC 2014 Johnny Willemsen <jwillemsen@remedy.nl>
* orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Load_Average_Monitor.cpp:
Implement retrieval of cpu load avarage on windows
* orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Utilization_Monitor.cpp:
Initialize pointer with 0
* orbsvcs/orbsvcs/LoadBalancing/LB_Pull_Handler.cpp:
Can't print process/thread id within the _tao_print_exception
argument
* orbsvcs/tests/LoadBalancing/LoadMonitor/CPU/client.cpp:
Return 1 instead of -1 on failure
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/LoadBalancing')
3 files changed, 21 insertions, 9 deletions
diff --git a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Load_Average_Monitor.cpp b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Load_Average_Monitor.cpp index 099762d2e15..e749962bae3 100644 --- a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Load_Average_Monitor.cpp +++ b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Load_Average_Monitor.cpp @@ -86,14 +86,28 @@ TAO_LB_CPU_Load_Average_Monitor::loads (void) // the number of processors and assume that any processor failure // is a catastrophic one. -#if 0 +#if defined (_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) SYSTEM_INFO sys_info; - ::GetSystemInfo (&sys_info); + ::GetNativeSystemInfo (&sys_info); - ACE_ASSERT (sys_info.dwNumberOfProcessors > 0); - - load = ::GetLoadAvg () / sys_info.dwNumberOfProcessors; + if (sys_info.dwNumberOfProcessors > 0) + { + // Retrieve systimes from windows + FILETIME idle; + FILETIME kernel; + FILETIME user; + ::GetSystemTimes (&idle, &kernel, &user); + + // Convert all times to ULONGLONG so that we can calculate with them + ULONGLONG idle_ll = (((ULONGLONG) idle.dwHighDateTime) << 32) + idle.dwLowDateTime; + ULONGLONG kernel_ll = (((ULONGLONG) kernel.dwHighDateTime) << 32) + kernel.dwLowDateTime; + ULONGLONG user_ll = (((ULONGLONG) user.dwHighDateTime) << 32) + user.dwLowDateTime; + ULONGLONG system_ll = kernel_ll + user_ll; + + // Calculate the load + load = ((system_ll - idle_ll) * 100 / system_ll) / sys_info.dwNumberOfProcessors; + } #elif defined (linux) || defined (sun) diff --git a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Utilization_Monitor.cpp b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Utilization_Monitor.cpp index c7cd6a5aa7e..d603cbdb3f9 100644 --- a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Utilization_Monitor.cpp +++ b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Utilization_Monitor.cpp @@ -62,10 +62,8 @@ double calc_cpu_loading (void) prev_total = total; return percent_cpu_load; - } - TAO_LB_CPU_Utilization_Monitor::TAO_LB_CPU_Utilization_Monitor (const char * location_id, const char * location_kind) : location_ (1) @@ -133,7 +131,7 @@ TAO_LB_CPU_Utilization_Monitor::loads (void) double load_double = calc_cpu_loading (); load = load_double; - CosLoadBalancing::LoadList * tmp; + CosLoadBalancing::LoadList * tmp = 0; ACE_NEW_THROW_EX (tmp, CosLoadBalancing::LoadList (1), CORBA::NO_MEMORY ( diff --git a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Pull_Handler.cpp b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Pull_Handler.cpp index 81f7f36ae84..2a51c58cc23 100644 --- a/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Pull_Handler.cpp +++ b/TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Pull_Handler.cpp @@ -65,7 +65,7 @@ TAO_LB_Pull_Handler::handle_timeout ( // Catch the exception and ignore it. if (TAO_debug_level > 0) - ex._tao_print_exception ("(%P|%t) PullHandler::handle_timeout()\n"); + ex._tao_print_exception ("PullHandler::handle_timeout()\n"); } return 0; |