summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/LoadBalancing
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2014-02-21 11:01:18 +0000
committerJohnny Willemsen <jwillemsen@remedy.nl>2014-02-21 11:01:18 +0000
commit0eb17d56787c89f0500270a3d2fccabc048dc4f4 (patch)
treed9cd57ff3a3a973fd6fe05ae38a20f6b91719b96 /TAO/orbsvcs/orbsvcs/LoadBalancing
parenta299b4cd86886d654fc2b565f18f12432386dda1 (diff)
downloadATCD-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')
-rw-r--r--TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Load_Average_Monitor.cpp24
-rw-r--r--TAO/orbsvcs/orbsvcs/LoadBalancing/LB_CPU_Utilization_Monitor.cpp4
-rw-r--r--TAO/orbsvcs/orbsvcs/LoadBalancing/LB_Pull_Handler.cpp2
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;