summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwolff1 <wolff1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-05-04 19:18:45 +0000
committerwolff1 <wolff1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-05-04 19:18:45 +0000
commit533b4b5d78886f796d39b66df6928fe862e3544f (patch)
tree70dec1d3735dc0c1ea1592bdcabf3a7d78607bec
parentbb507fe85103ac5f980e98b659f976e296e52e5c (diff)
downloadATCD-533b4b5d78886f796d39b66df6928fe862e3544f.tar.gz
added worstfit algorithm
-rwxr-xr-xTAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/packing/generate.sh2
-rwxr-xr-xTAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/packing/processor_util.sh2
-rwxr-xr-xTAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/experiments/packing/schedulability.sh2
-rw-r--r--TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/FTRMFF_Bestfit.cpp31
-rw-r--r--TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/FTRMFF_Bestfit.h4
-rw-r--r--TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/FTRMFF_Binary_Search.cpp6
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_);
}