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 | ||