summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2011-10-14 14:58:09 -0400
committerGlenn Elliott <gelliott@cs.unc.edu>2011-10-14 14:58:09 -0400
commit4fae91ccf761c7c441555399c4fa4d49d32833a2 (patch)
treef53f2592e7e89039dfed7a2374bd1c978ae2cb0d
parent782dfbe4414c29bc1d56b10dddfd1ea5334f8486 (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.cpp20
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
79map<Task, set<Job> > traceData; 79map<Task, set<Job> > traceData;
80map<Task, int> forcedCompletionCount;
80 81
81template <class T> 82template <class T>
82double stddev(const T& arr) 83double 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