diff options
author | wolff1 <wolff1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2009-04-30 03:34:11 +0000 |
---|---|---|
committer | wolff1 <wolff1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2009-04-30 03:34:11 +0000 |
commit | 1d824867665bad352226ebc6461008e45e96b735 (patch) | |
tree | 034069dd5f3be933fed708046c61aa9a4116680f | |
parent | fc36e7f9746436721ce9820e817ca3e52776370f (diff) | |
download | ATCD-1d824867665bad352226ebc6461008e45e96b735.tar.gz |
changed algorithm names
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; |