If we're aggregating values, we increment TRACK->aggregated by operation; then when the aggregation period finishes, we update the appropriate TRACK bucket by the counter in TRACK->aggregated.

So, we do 2 inserts, 3 updates and 5 reads in 20ms; thread->insert->aggregated = 2, thread->update->aggregated = 3, thread->read->aggregated = 5.  We average the ops (20 / (2 + 3 + 5) == 2), and then we update each thread's operation 2ms bucket by its aggregate count: increment the thread->insert 2ms bucket by 2, the thread->update 2ms bucket by 3, and the thread->read 2ms bucket by 5.

Let me know if I'm missing your point...