I think you could get the answer through a statistical analysis of enough runs of the following system:
Run one thread per processor that clears a terminate flag, then runs a loop for a fixed number of iterations or until a terminate flag is set, whichever comes first. These threads record whether they terminated due to running all the iterations, or due to the terminate flag being set.
At the same time, run an additional thread that sets the terminate flag.
Do this at a variety of number of iterations in the loop.
If the loop completes within the thread time slice, it will complete all iterations. If it does not complete within the thread time slice, the termination thread will have a chance to interrupt one of the looping threads.
Now, the termination thread will sometimes be scheduled first, and there may also be other threads running that complicate the behavior, so you may need to run this a lot of times on multiprocessor systems and analyze the results statistically. You'll also need to account for things like thread startup time and memory access time, since there will presumably be a memory barrier on each iteration through the loop to check the flag.
With enough repetitions at enough different loop iteration limits, though, this should give you the number of times you can iterate through the loop in one time slice. You can then run a large number of iterations on an unloaded system to get the length of time it takes for each iteration, and then calculate the wall clock time for each time slice.