summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwolff1 <wolff1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-04-30 03:34:11 +0000
committerwolff1 <wolff1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-04-30 03:34:11 +0000
commit1d824867665bad352226ebc6461008e45e96b735 (patch)
tree034069dd5f3be933fed708046c61aa9a4116680f
parentfc36e7f9746436721ce9820e817ca3e52776370f (diff)
downloadATCD-1d824867665bad352226ebc6461008e45e96b735.tar.gz
changed algorithm names
-rwxr-xr-xTAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/packing/processor_util.sh2
-rwxr-xr-xTAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_backups_and_loads/generate.sh2
-rwxr-xr-xTAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_backups_and_loads/processor_util.sh2
-rwxr-xr-xTAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_tasks_and_loads/generate.sh2
-rwxr-xr-xTAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_tasks_and_loads/processor_util.sh2
-rw-r--r--TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/schedulability_check.cpp91
6 files changed, 65 insertions, 36 deletions
diff --git a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/packing/processor_util.sh b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/packing/processor_util.sh
index e3b7eb7edb1..9beb1193f8d 100755
--- a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/packing/processor_util.sh
+++ b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/packing/processor_util.sh
@@ -7,7 +7,7 @@ RESULT_DIR=$DATA_DIR/$EXPERIMENT_NAME
if [ ! -d ./$DATA_DIR ]; then echo Directory $DATA_DIR does not exist && exit; fi
if [ ! -d ./$RESULT_DIR ]; then mkdir -p ./$RESULT_DIR; fi
-for ALGORITHM in pftrmff bftrmff frftrmff; do \
+for ALGORITHM in pftrmff aftrmff frftrmff; do \
for TASK_NO in 10 20 40 80 160; do \
echo "$TASK_NO tasks:" >> ./$RESULT_DIR/$EXPERIMENT_NAME-$ALGORITHM.dat && \
for BACKUP_NO in 1 2 3 4 5; do \
diff --git a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_backups_and_loads/generate.sh b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_backups_and_loads/generate.sh
index e0de9d77d1b..0ff729b71dd 100755
--- a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_backups_and_loads/generate.sh
+++ b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_backups_and_loads/generate.sh
@@ -25,7 +25,7 @@ $DECORAM_BIN/tgen \
-z $SS_LOWER > ./$DATA_DIR/tasks.input
for BACKUP_NO in 0 1 2 3 4 5; do \
- for ALGORITHM in bftrmff eftrmff rftrmff sftrmff; do
+ for ALGORITHM in aftrmff uftrmff rftrmff sftrmff; do
echo "run $ALGORITHM for $BACKUP_NO backups..." && \
$DECORAM_BIN/$ALGORITHM \
./$DATA_DIR/tasks.input \
diff --git a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_backups_and_loads/processor_util.sh b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_backups_and_loads/processor_util.sh
index 7609a6cbcee..7dcb4d65b12 100755
--- a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_backups_and_loads/processor_util.sh
+++ b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_backups_and_loads/processor_util.sh
@@ -8,7 +8,7 @@ if [ ! -d ./$DATA_DIR ]; then echo Directory $DATA_DIR does not exist && exit; f
if [ ! -d ./$RESULT_DIR ]; then mkdir -p ./$RESULT_DIR; fi
for BACKUP_NO in 0 1 2 3 4 5; do \
- for ALGORITHM in bftrmff eftrmff rftrmff sftrmff; do
+ for ALGORITHM in aftrmff uftrmff rftrmff sftrmff; do
echo "count processors used by $ALGORITHM for $BACKUP_NO backups..." && \
$DECORAM_BIN/scheck -c -f ./$DATA_DIR/$ALGORITHM-$BACKUP_NO-backups.txt >> ./$RESULT_DIR/$EXPERIMENT_NAME-$ALGORITHM.dat; \
done; \
diff --git a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_tasks_and_loads/generate.sh b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_tasks_and_loads/generate.sh
index 450002294ef..be4b2e4b1a0 100755
--- a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_tasks_and_loads/generate.sh
+++ b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_tasks_and_loads/generate.sh
@@ -25,7 +25,7 @@ for TASK_NUMBER in 10 20 40 80 160; do \
-l $PERIOD_LOWER \
-s $SS_UPPER \
-z $SS_LOWER > ./$DATA_DIR/$TASK_NUMBER-tasks.input && \
- for ALGORITHM in bftrmff sftrmff eftrmff rftrmff; do \
+ for ALGORITHM in aftrmff sftrmff uftrmff rftrmff; do \
echo "run $ALGORITHM for $TASK_NUMBER tasks..." && \
$DECORAM_BIN/$ALGORITHM \
./$DATA_DIR/$TASK_NUMBER-tasks.input \
diff --git a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_tasks_and_loads/processor_util.sh b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_tasks_and_loads/processor_util.sh
index 28b2ae49b11..80bd51d6de6 100755
--- a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_tasks_and_loads/processor_util.sh
+++ b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/variable_tasks_and_loads/processor_util.sh
@@ -9,7 +9,7 @@ if [ ! -d ./$RESULT_DIR ]; then mkdir -p ./$RESULT_DIR; fi
rm ./$RESULT_DIR/*.dat
for TASK_NUMBER in 10 20 40 80 160; do \
- for ALGORITHM in bftrmff sftrmff eftrmff rftrmff pftrmff; do \
+ for ALGORITHM in aftrmff sftrmff uftrmff rftrmff pftrmff; do \
echo "count processors used by $ALGORITHM for $TASK_NUMBER tasks..." && \
$DECORAM_BIN/scheck -c -f ./$DATA_DIR/$ALGORITHM-$TASK_NUMBER.txt >> ./$RESULT_DIR/$EXPERIMENT_NAME-$ALGORITHM.dat;
done;\
diff --git a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/schedulability_check.cpp b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/schedulability_check.cpp
index c44130d23b3..f0bac501c91 100644
--- a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/schedulability_check.cpp
+++ b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/schedulability_check.cpp
@@ -14,7 +14,7 @@
#include <sstream>
#include <iostream>
#include <numeric>
-#include "Schedule.h"
+#include "Scheduler.h"
#include "CTT_Enhanced.h"
#include "CTT_Basic.h"
#include <ace/Get_Opt.h>
@@ -24,6 +24,53 @@ bool counting_mode = false;
bool average_mode = false;
bool check_overbooking = false;
+class ScheduleChecker : public std::binary_function <double,
+ SCHEDULE::value_type,
+ double>
+{
+public:
+ ScheduleChecker (const SCHEDULE & schedule)
+ : schedule_ (schedule)
+ {
+ // build replica_groups data structure
+ for (SCHEDULE::const_iterator sched_it = schedule.begin ();
+ sched_it != schedule.end ();
+ ++sched_it)
+ {
+ Processor processor = sched_it->first;
+ for (TASK_LIST::const_iterator task_it = sched_it->second.begin ();
+ task_it != sched_it->second.end ();
+ ++task_it)
+ {
+ REPLICA_GROUPS::iterator rep_it =
+ replica_groups_.find (primary_name (*task_it));
+
+ TASK_POSITION position (processor, *task_it);
+ if (rep_it == replica_groups_.end ())
+ {
+ TASK_POSITIONS entry;
+ entry.push_back (position);
+ replica_groups_[primary_name (*task_it)] = entry;
+ }
+ else
+ {
+ replica_groups_[
+ primary_name (*task_it)].push_back (position);
+ }
+ }
+ }
+ }
+
+ double operator () (double previous, const SCHEDULE::value_type & entry)
+ {
+ return .0;
+ }
+
+private:
+ const SCHEDULE & schedule_;
+ REPLICA_GROUPS replica_groups_;
+};
+
static int
parse_args (int argc, char *argv[])
{
@@ -113,41 +160,23 @@ int main (int argc, char *argv[])
}
else
{
- std::auto_ptr <CTT_Algorithm> ctt;
- if (check_overbooking)
- ctt.reset (new CTT_Basic ());
- else
- ctt.reset (new CTT_Enhanced ());
-
- int status = 0;
- double wcrt = 0;
- double period = 0;
+ unsigned long usage = processor_usage (schedule);
- for (SCHEDULE::iterator it = schedule.begin ();
- it != schedule.end ();
- ++it)
+ SCHEDULE min_schedule;
+ SCHEDULE::const_iterator schedule_it = schedule.begin ();
+ for (unsigned long i = 0; i < usage; ++i)
{
- std::cout << it->first << ": ";
- wcrt = (*ctt) (it->second);
-
- if (wcrt > 0)
- {
- period = it->second.back ().period;
+ min_schedule.insert (*schedule_it);
+ }
- std::cout << wcrt << " / "
- << period;
- }
- else
- {
- std::cout << "not schedulable";
- }
- std::cout << std::endl;
+ std::map <Processor, double> wcrts;
- if ((wcrt > period) || (wcrt == 0))
- ++status;
- }
+ double wcrt = std::accumulate (min_schedule.begin (),
+ min_schedule.end (),
+ -1.0,
+ ScheduleChecker (min_schedule));
- return status;
+ return wcrt > .0;
} // end else counting_mode not true
return 0;