diff options
| author | Glenn Elliott <gelliott@cs.unc.edu> | 2011-10-14 14:58:09 -0400 |
|---|---|---|
| committer | Glenn Elliott <gelliott@cs.unc.edu> | 2011-10-14 14:58:09 -0400 |
| commit | 4fae91ccf761c7c441555399c4fa4d49d32833a2 (patch) | |
| tree | f53f2592e7e89039dfed7a2374bd1c978ae2cb0d | |
| parent | 782dfbe4414c29bc1d56b10dddfd1ea5334f8486 (diff) | |
Update showst2.cpp to count forced job completions.wip-mc-glenn
used to correlate non-forced job completions with the
job ID of the job that is actually completing.
| -rw-r--r-- | src/showst2.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/showst2.cpp b/src/showst2.cpp index 98f5c39..ec9b1b3 100644 --- a/src/showst2.cpp +++ b/src/showst2.cpp | |||
| @@ -77,6 +77,7 @@ struct Task | |||
| 77 | }; | 77 | }; |
| 78 | 78 | ||
| 79 | map<Task, set<Job> > traceData; | 79 | map<Task, set<Job> > traceData; |
| 80 | map<Task, int> forcedCompletionCount; | ||
| 80 | 81 | ||
| 81 | template <class T> | 82 | template <class T> |
| 82 | double stddev(const T& arr) | 83 | double stddev(const T& arr) |
| @@ -161,6 +162,7 @@ int main(int argc, char** argv) | |||
| 161 | if(iter == traceData.end()) | 162 | if(iter == traceData.end()) |
| 162 | { | 163 | { |
| 163 | traceData[tsk] = set<Job>(); | 164 | traceData[tsk] = set<Job>(); |
| 165 | forcedCompletionCount[tsk] = 0; | ||
| 164 | } | 166 | } |
| 165 | else | 167 | else |
| 166 | { | 168 | { |
| @@ -181,13 +183,14 @@ int main(int argc, char** argv) | |||
| 181 | traceData[srch] = set<Job>(); | 183 | traceData[srch] = set<Job>(); |
| 182 | iter = traceData.find(srch); | 184 | iter = traceData.find(srch); |
| 183 | iter->first.period = rec->data.release.release - rec->data.release.deadline; | 185 | iter->first.period = rec->data.release.release - rec->data.release.deadline; |
| 186 | forcedCompletionCount[srch] = 0; | ||
| 184 | } | 187 | } |
| 185 | 188 | ||
| 186 | if(iter != traceData.end()) | 189 | if(iter != traceData.end()) |
| 187 | { | 190 | { |
| 188 | Job jsrch; | 191 | Job jsrch; |
| 189 | jsrch.jid = rec->hdr.job; | 192 | jsrch.jid = rec->hdr.job; |
| 190 | 193 | ||
| 191 | set<Job>::iterator jter = iter->second.find(jsrch); | 194 | set<Job>::iterator jter = iter->second.find(jsrch); |
| 192 | if(jter == iter->second.end()) | 195 | if(jter == iter->second.end()) |
| 193 | { | 196 | { |
| @@ -223,12 +226,25 @@ int main(int argc, char** argv) | |||
| 223 | traceData[srch] = set<Job>(); | 226 | traceData[srch] = set<Job>(); |
| 224 | iter = traceData.find(srch); | 227 | iter = traceData.find(srch); |
| 225 | iter->first.period = 0; | 228 | iter->first.period = 0; |
| 229 | |||
| 230 | forcedCompletionCount[srch] = 0; | ||
| 226 | } | 231 | } |
| 227 | 232 | ||
| 233 | |||
| 234 | if(rec->data.completion.forced) | ||
| 235 | { | ||
| 236 | forcedCompletionCount[srch] += 1; // increment # for forced completions | ||
| 237 | continue; // move onto next record | ||
| 238 | } | ||
| 239 | |||
| 240 | // we're processing a regular (non-forced) completion | ||
| 228 | if(iter != traceData.end()) | 241 | if(iter != traceData.end()) |
| 229 | { | 242 | { |
| 230 | Job jsrch; | 243 | Job jsrch; |
| 231 | jsrch.jid = rec->hdr.job; | 244 | //jsrch.jid = rec->hdr.job; |
| 245 | // subtract off the number of forced completions to correlate the | ||
| 246 | // job ID with the job that has actually completed | ||
| 247 | jsrch.jid = rec->hdr.job - forcedCompletionCount[srch]; | ||
| 232 | set<Job>::iterator j = iter->second.find(jsrch); | 248 | set<Job>::iterator j = iter->second.find(jsrch); |
| 233 | 249 | ||
| 234 | 250 | ||
