computing execution time of tasks in VxWorks -
i want calculate execution time of series of tasks, initiate task , activate it, use taskcreatehookadd start timer , on every switch on each task recalculate time using taskswitchhookadd. after tasks deleted. calculate time 1 last time in taskdeletehookadd.
i created 4 tasks in system, insert, traverse,delete,search binary trees.at end task execution time calculate doesn't seem ok 2 of tasks, times 0. , rest of time have exact same value. have checked priorities of tasks seem ok. tasks have implementation , not empty. can see switch part of code below, i'm sure other parts work fine (by debugging), i'm not sure switch hook. appreciate if me this.thanks in advance.
` void switchtaskhook(wind_tcb *poldtcb, wind_tcb *pnewtcb ) {
if((int)poldtcb == tidinsert) { inserttotal+=tickget()-inserttick; } else if((int)poldtcb == tidtraverse) { traversetotal+=tickget()-traversetick; } else if((int)poldtcb == tidsearch) { searchtotal+=tickget()-searchtick;//;count++; } else if((int)poldtcb == tiddelete) { deletetotal+=tickget()-deletetick; } if((int)pnewtcb == tidinsert) { inserttick=tickget(); else if((int)pnewtcb == tidtraverse) { traversetick=tickget(); } else if((int)pnewtcb == tidsearch) { searchtick=tickget(); } else if((int)pnewtcb == tiddelete) { deletetick=tickget(); }
}
`
please read manual entry tickget().
it returns system tick count typically runs @ 60 2khz. coarse performance measurements. controlled bsp , don't want change without reasons (and upper rate typically 8khz, still coarse) since can impact system overhead.
a better approach use timestamp driver typically has microsecond resolution. systimestamp* function in documentation.
Comments
Post a Comment