Inner Loop Timers
The vovserver tracks how the time is spent in the inner loop. The statistics are accumulated over multiple loops and are rotated every 10 seconds, so what you normally see in the stats is the overall time spent in the past 10 to 20 seconds.
If you are ADMIN, you can check the timers with
vovshow
:
% vovshow -innerlooptimers
PHASE TGT ACTUAL TIME(ms) MAX(ms)
INNER_LOOP_TIMER idle 0 22.91 2931.476 0.032
INNER_LOOP_TIMER poll 0 2.84 362.885 0.001
INNER_LOOP_TIMER misc 0 0.09 11.580 0.000
INNER_LOOP_TIMER tasks 20 1.42 181.897 0.010
INNER_LOOP_TIMER sched 20 0.38 49.108 0.001
INNER_LOOP_TIMER work 0 48.04 6146.102 0.222
INNER_LOOP_TIMER http 0 0.01 0.961 0.000
INNER_LOOP_TIMER fairshare 0 0.00 0.601 0.000
INNER_LOOP_TIMER preempt 0 0.00 0.004 0.000
INNER_LOOP_TIMER notify 35 24.31 3110.120 0.168
INNER_LOOP_TIMER total 0 100.00 12794.734 0.000
Here is a brief explanation of the timers in the inner loop:
Timer Name | Description |
---|---|
idle | Time spent waiting for clients. In the code, this is the time
spent in poll() , epoll_wait() , or
select() . If the vovserver
spends a lot of time in "wait" then there should be no performance
issue at all. |
poll | Time spent preparing the poll-array or choosing the next client to service. |
misc | Time spent miscellaneous activities. |
tasks | Time spent in server-initiated tasks, such as checking smart sets and removing expired sets. This activity is controlled by the parameter tasksMaxEffort. |
sched | Time spent dispatching jobs from buckets to taskers. This activity is controlled by the parameter schedMaxEffort. |
notify | Time spent sending events to clients and saving events to the journal and to the crash recovery file. This activity is controlled by the parameter notifyMaxEffort. |
fairshare | Time spent updating FairShare statistics |
work | Time spent servicing clients (except HTTP clients) |
http | Time spent servicing HTTP clients |
total | Total time spent in inner loop |