diff options
author | wolff1 <wolff1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2009-05-04 19:18:45 +0000 |
---|---|---|
committer | wolff1 <wolff1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2009-05-04 19:18:45 +0000 |
commit | 533b4b5d78886f796d39b66df6928fe862e3544f (patch) | |
tree | 70dec1d3735dc0c1ea1592bdcabf3a7d78607bec | |
parent | bb507fe85103ac5f980e98b659f976e296e52e5c (diff) | |
download | ATCD-533b4b5d78886f796d39b66df6928fe862e3544f.tar.gz |
added worstfit algorithm
6 files changed, 36 insertions, 11 deletions
diff --git a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/packing/generate.sh b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/packing/generate.sh index db24ea15b86..a827ad07741 100755 --- a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/packing/generate.sh +++ b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/packing/generate.sh @@ -23,7 +23,7 @@ for TASK_NO in 10 20 40 80 160; do \ -s $SS_UPPER \ -z $SS_LOWER > ./$DATA_DIR/$TASK_NO-tasks.input && \ for BACKUP_NO in 1 2 3 4; do \ - for ALGORITHM in pftrmff aftrmff frftrmff bsftrmbf; do \ + for ALGORITHM in pftrmff aftrmff frftrmff bsftrmbf bsftrmwf; do \ echo "run $ALGORITHM for $BACKUP_NO backups..." && \ echo "start $ALGORITHM with $TASK_NO tasks and $BACKUP_NO backups at `date`" >> ./$DATA_DIR/timing.log && \ $DECORAM_BIN/$ALGORITHM \ 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 120c7a3a7c5..2261445bbd7 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 aftrmff frftrmff bsftrmbf; do \ +for ALGORITHM in pftrmff aftrmff frftrmff bsftrmbf bsftrmwf; 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; do \ diff --git a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/packing/schedulability.sh b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/packing/schedulability.sh index 4eb049c73b6..b50e20a1c4e 100755 --- a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/packing/schedulability.sh +++ b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/packing/schedulability.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 aftrmff frftrmff bsftrmbf; do \ +for ALGORITHM in pftrmff aftrmff frftrmff bsftrmbf bsftrmwf; 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; do \ diff --git a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/FTRMFF_Bestfit.cpp b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/FTRMFF_Bestfit.cpp index 133f862ddd1..abd56c6ddb6 100644 --- a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/FTRMFF_Bestfit.cpp +++ b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/FTRMFF_Bestfit.cpp @@ -37,10 +37,12 @@ FTRMFF_Bestfit::operator () (const FTRMFF_Input & input) FTRMFF_Bestfit_Algorithm::FTRMFF_Bestfit_Algorithm ( const PROCESSOR_LIST & processors, - unsigned int consistency_level) + unsigned int consistency_level, + bool bestfit) : FTRMFF_Algorithm_Impl (consistency_level), scheduler_ (processors, - consistency_level_) + consistency_level_), + bestfit_ (bestfit) { // fill last_results data structure ScheduleResult result = { {"NoTask", .0, .0, .0, PRIMARY, 0}, @@ -127,7 +129,7 @@ FTRMFF_Bestfit_Algorithm::schedule () const return scheduler_.schedule (); } -struct ScheduleResultComparison : public std::binary_function < +struct BestfitScheduleResultComparison : public std::binary_function < RESULT_MAP::value_type, RESULT_MAP::value_type, bool> @@ -139,6 +141,18 @@ struct ScheduleResultComparison : public std::binary_function < } }; +struct WorstfitScheduleResultComparison : public std::binary_function < + RESULT_MAP::value_type, + RESULT_MAP::value_type, + bool> +{ + bool operator () (const RESULT_MAP::value_type & r1, + const RESULT_MAP::value_type & r2) + { + return (r1.second.wcrt < r2.second.wcrt); + } +}; + struct ProcessorAccumulator : public std::unary_function < RESULT_MAP::value_type, Processor> @@ -163,9 +177,14 @@ FTRMFF_Bestfit_Algorithm::best_processors (void) std::inserter (entries, entries.begin ())); - std::sort (entries.begin (), - entries.end (), - ScheduleResultComparison ()); + if (bestfit_) + std::sort (entries.begin (), + entries.end (), + BestfitScheduleResultComparison ()); + else + std::sort (entries.begin (), + entries.end (), + WorstfitScheduleResultComparison ()); TRACE ("entries : " << entries.size ()); diff --git a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/FTRMFF_Bestfit.h b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/FTRMFF_Bestfit.h index de339f81278..7c306265539 100644 --- a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/FTRMFF_Bestfit.h +++ b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/FTRMFF_Bestfit.h @@ -30,7 +30,8 @@ class FTRMFF_Bestfit_Algorithm : { public: FTRMFF_Bestfit_Algorithm (const PROCESSOR_LIST & processors, - unsigned int consistency_level); + unsigned int consistency_level, + bool bestfit = true); virtual ~FTRMFF_Bestfit_Algorithm (); @@ -44,6 +45,7 @@ private: private: RESULT_MAP last_results_; Forward_Ranking_Scheduler scheduler_; + bool bestfit_; }; #endif /* FTRMFF_BEST_FIT_ALGORITHM_H_ */ diff --git a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/FTRMFF_Binary_Search.cpp b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/FTRMFF_Binary_Search.cpp index 0126bf6294a..e652209892a 100644 --- a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/FTRMFF_Binary_Search.cpp +++ b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/FTRMFF_Binary_Search.cpp @@ -162,7 +162,11 @@ FTRMFF_Binary_Search_Algorithm::create_scheduling_algorithm ( if (scheduling_algorithm_ == "bestfit") return new FTRMFF_Bestfit_Algorithm (processors, consistency_level_); - else + else if (scheduling_algorithm_ == "worstfit") + return new FTRMFF_Bestfit_Algorithm (processors, + consistency_level_, + false); + else // this algorithm is outdated return new FTRMFF_Worstfit_Algorithm (processors, consistency_level_); } |