summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils_T.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils_T.cpp')
-rw-r--r--TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils_T.cpp83
1 files changed, 46 insertions, 37 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils_T.cpp b/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils_T.cpp
index fbe66a8a334..d6c0fc79eee 100644
--- a/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils_T.cpp
+++ b/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils_T.cpp
@@ -26,10 +26,6 @@
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
-#if !defined (__ACE_INLINE__)
-#include "Reconfig_Sched_Utils_T.i"
-#endif /* __ACE_INLINE__ */
-
ACE_RCSID(Sched, Reconfig_Sched_Utils_T, "$Id$")
////////////////////////////////
@@ -58,7 +54,7 @@ visit (TAO_Reconfig_Scheduler_Entry &rse)
{
int result = 0;
- /* WSOA merge - commented out
+ /* WSOA merge - commented out
// Call unconditional action method, which performs any necessary
// modifications that are applied to each node unconditionally.
if (this->unconditional_action (rse) < 0)
@@ -112,7 +108,7 @@ visit (TAO_Reconfig_Scheduler_Entry &rse)
if (rt_info_map_.find ((*dependency_set) [i].rt_info,
next_rt_info) != 0)
{
- ACE_ERROR_RETURN ((LM_ERROR, "RT_Info (%i) not found.\n",
+ ACE_ERROR_RETURN ((LM_ERROR, "RT_Info (%i) not found.\n",
(*dependency_set) [i].rt_info), -1);
}
@@ -271,7 +267,7 @@ template <class RECONFIG_SCHED_STRATEGY, class ACE_LOCK> int
TAO_RSE_DFS_Visitor<RECONFIG_SCHED_STRATEGY, ACE_LOCK>::
precondition (TAO_Reconfig_Scheduler_Entry &rse)
{
- int result =
+ int result =
TAO_RSE_Dependency_Visitor<RECONFIG_SCHED_STRATEGY, ACE_LOCK>::
precondition (rse);
@@ -411,7 +407,7 @@ template <class RECONFIG_SCHED_STRATEGY, class ACE_LOCK> int
TAO_RSE_SCC_Visitor<RECONFIG_SCHED_STRATEGY, ACE_LOCK>::
precondition (TAO_Reconfig_Scheduler_Entry &rse)
{
- int result =
+ int result =
TAO_RSE_Dependency_Visitor<RECONFIG_SCHED_STRATEGY, ACE_LOCK>::
precondition (rse);
@@ -722,17 +718,17 @@ pre_recurse_action (TAO_Reconfig_Scheduler_Entry &entry,
"Failed to access tuple under iterator"));
return -1;
}
-
+
// @TODO - check for conjunction nodes here and perform conjunctive
// function on existing rate tuples.
#ifdef SCHEDULER_LOGGING
- ACE_DEBUG((LM_DEBUG, "Inserting new propagated tuple for RT_Info: %d, entry_ptr: 0x%x, tuple_ptr: 0x%x\n",
- successor.actual_rt_info ()->handle,
+ ACE_DEBUG((LM_DEBUG, "Inserting new propagated tuple for RT_Info: %d, entry_ptr: 0x%x, tuple_ptr: 0x%x\n",
+ successor.actual_rt_info ()->handle,
&successor,
(*tuple_ptr_ptr)));
#endif
- // Propagate tuples disjunctively.
+ // Propagate tuples disjunctively.
successor.insert_tuple (**tuple_ptr_ptr,
TAO_Reconfig_Scheduler_Entry::PROPAGATED);
@@ -755,18 +751,18 @@ pre_recurse_action (TAO_Reconfig_Scheduler_Entry &entry,
"Failed to access tuple under iterator"));
return -1;
}
-
+
// @TODO - check for conjunction nodes here and perform conjunctive
// function on existing rate tuples.
#ifdef SCHEDULER_LOGGING
- ACE_DEBUG((LM_DEBUG, "Inserting new propagated tuple for RT_Info: %d, entry_ptr: 0x%x, tuple_ptr: 0x%x\n",
- successor.actual_rt_info ()->handle,
+ ACE_DEBUG((LM_DEBUG, "Inserting new propagated tuple for RT_Info: %d, entry_ptr: 0x%x, tuple_ptr: 0x%x\n",
+ successor.actual_rt_info ()->handle,
&successor,
(*tuple_ptr_ptr)));
#endif
- // Propagate tuples disjunctively.
+ // Propagate tuples disjunctively.
successor.insert_tuple (**tuple_ptr_ptr,
TAO_Reconfig_Scheduler_Entry::PROPAGATED);
@@ -815,7 +811,7 @@ TAO_RSE_Priority_Visitor<RECONFIG_SCHED_STRATEGY, ACE_LOCK>::visit (TAO_Reconfig
{
int result = 0;
#ifdef SCHEDULER_LOGGING
- ACE_DEBUG ((LM_DEBUG,
+ ACE_DEBUG ((LM_DEBUG,
"Priority_Visitor visiting %s[%d],crit=%d,period=%d\n",
rse.actual_rt_info ()->entry_point.in(),
rse.actual_rt_info ()->handle,
@@ -836,7 +832,7 @@ TAO_RSE_Priority_Visitor<RECONFIG_SCHED_STRATEGY, ACE_LOCK>::visit (TAO_Reconfig
else
{
#ifdef SCHEDULER_LOGGING
- ACE_DEBUG ((LM_DEBUG,
+ ACE_DEBUG ((LM_DEBUG,
"Previous entry %s[%d],crit=%d,period=%d\n",
previous_entry_->actual_rt_info ()->entry_point.in(),
previous_entry_->actual_rt_info ()->handle,
@@ -921,6 +917,8 @@ TAO_Tuple_Admission_Visitor (const CORBA::Double & critical_utilization_threshol
const CORBA::Double & noncritical_utilization_threshold)
: critical_utilization_ (0.0),
noncritical_utilization_ (0.0),
+ total_critical_utilization_ (0.0),
+ total_noncritical_utilization_ (0.0),
critical_utilization_threshold_ (critical_utilization_threshold),
noncritical_utilization_threshold_ (noncritical_utilization_threshold)
{
@@ -943,34 +941,30 @@ TAO_Tuple_Admission_Visitor<RECONFIG_SCHED_STRATEGY>::visit (TAO_RT_Info_Tuple &
if (t.enabled_state () == RtecScheduler::RT_INFO_DISABLED
|| entry->enabled_state () == RtecScheduler::RT_INFO_DISABLED)
{
- return 0;
+ return 0;
}
// Compute the current tuple's utilization.
CORBA::Double delta_utilization =
- (ACE_static_cast (CORBA::Double,
- t.threads)
- * ACE_static_cast (CORBA::Double,
- ACE_UINT64_DBLCAST_ADAPTER (entry->
+ (static_cast<CORBA::Double> (t.threads)
+ * static_cast<CORBA::Double> (ACE_UINT64_DBLCAST_ADAPTER (entry->
aggregate_exec_time ())))
- / ACE_static_cast (CORBA::Double,
- t.period);
+ / static_cast<CORBA::Double> (t.period);
// Subtract the previous tuple's utilization (if any) for the entry.
if (entry->current_admitted_tuple ())
{
delta_utilization -=
- (ACE_static_cast (CORBA::Double,
- entry->current_admitted_tuple ()->threads)
- * ACE_static_cast (CORBA::Double,
- ACE_UINT64_DBLCAST_ADAPTER (entry->
+ (static_cast<CORBA::Double> (entry->current_admitted_tuple ()->threads)
+ * static_cast<CORBA::Double> (ACE_UINT64_DBLCAST_ADAPTER (entry->
aggregate_exec_time ())))
- / ACE_static_cast (CORBA::Double,
- entry->current_admitted_tuple ()->period);
+ / static_cast<CORBA::Double> (entry->current_admitted_tuple ()->period);
}
if (RECONFIG_SCHED_STRATEGY::is_critical (t))
{
+ this->total_critical_utilization_ += delta_utilization;
+
if (this->critical_utilization_ + this->noncritical_utilization_
+delta_utilization
< this->critical_utilization_threshold_)
@@ -982,6 +976,7 @@ TAO_Tuple_Admission_Visitor<RECONFIG_SCHED_STRATEGY>::visit (TAO_RT_Info_Tuple &
}
else
{
+ this->total_noncritical_utilization_ += delta_utilization;
if (this->critical_utilization_ + this->noncritical_utilization_
+delta_utilization
< this->noncritical_utilization_threshold_)
@@ -991,7 +986,6 @@ TAO_Tuple_Admission_Visitor<RECONFIG_SCHED_STRATEGY>::visit (TAO_RT_Info_Tuple &
entry->actual_rt_info ()->period = t.period;
}
}
-
return 0;
}
@@ -1013,6 +1007,21 @@ TAO_Tuple_Admission_Visitor<RECONFIG_SCHED_STRATEGY>::noncritical_utilization ()
return this->noncritical_utilization_;
}
+template <class RECONFIG_SCHED_STRATEGY> CORBA::Double
+TAO_Tuple_Admission_Visitor<RECONFIG_SCHED_STRATEGY>::total_critical_utilization ()
+{
+ return this->total_critical_utilization_;
+}
+
+
+// Accessor for utilization by noncritical operations.
+
+template <class RECONFIG_SCHED_STRATEGY> CORBA::Double
+TAO_Tuple_Admission_Visitor<RECONFIG_SCHED_STRATEGY>::total_noncritical_utilization ()
+{
+ return this->total_noncritical_utilization_;
+}
+
// Accessor for utilization threshold for critical operations.
template <class RECONFIG_SCHED_STRATEGY> CORBA::Double
@@ -1056,7 +1065,7 @@ pre_recurse_action (TAO_Reconfig_Scheduler_Entry &entry,
ACE_UNUSED_ARG (di);
#ifdef SCHEDULER_LOGGING
- ACE_DEBUG ((LM_DEBUG,
+ ACE_DEBUG ((LM_DEBUG,
"Crit Prop_Visitor visiting %s[%d], successor is %s[%d]\n",
entry.actual_rt_info ()->entry_point.in(),
entry.actual_rt_info ()->handle,
@@ -1066,19 +1075,19 @@ pre_recurse_action (TAO_Reconfig_Scheduler_Entry &entry,
if (successor.enabled_state () != RtecScheduler::RT_INFO_DISABLED)
{
- RtecScheduler::Criticality_t entry_crit =
+ RtecScheduler::Criticality_t entry_crit =
entry.actual_rt_info ()->criticality;
- RtecScheduler::Criticality_t succ_crit =
+ RtecScheduler::Criticality_t succ_crit =
successor.actual_rt_info ()->criticality;
RtecScheduler::Criticality_t max_crit = entry_crit;
-
+
if (max_crit < succ_crit)
max_crit = succ_crit;
successor.actual_rt_info ()->criticality = max_crit;
#ifdef SCHEDULER_LOGGING
- ACE_DEBUG ((LM_DEBUG,
+ ACE_DEBUG ((LM_DEBUG,
"Successor's new criticality is %d\n",
successor.actual_rt_info ()->criticality));
#endif