iostat and microseconds

Solaris 11.4 got a small extension to the iostat command. In a time when storage storage gets faster and faster, you may end in a sitation where the wsvc_t and asvc_t always show zero despite the fact that there is actually some load on the interface. This happens when the resolution of milliseconds iostat used so far isn’t precise enough. So the -u option was introduced a while ago in Solaris 11.4. With this resolution is microseconds and so it’s much better suited to monitor your storage devices.

This is a nice example, why this is interesting. Look at the wsvc_t column. It looks like you have no time in the wait queue for your commands.

root@solaris:~# iostat -x sd0 1
                    extended device statistics
device    r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b
sd0      0,3    4,7   12,7   81,0  0,0  0,0    0,0    0,2   0   0

But when you look more closely with the -u option you will see there is actually some wait time.

root@solaris:~# iostat -xu sd0 1
                    extended device statistics
device    r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b
sd0      0,3    4,7   12,7   81,0  0,0  0,0  0,031  0,232   0   0

The default is still milliseconds as scripts (like “alert me when a requests takes longer han 50 milliseonds”) could still depend on the old scaling and you don’t want to get an allert at 50 microseconds.

PS: By the way, don’t dismiss microseconds, they are very important as Admiral Hopper eloquently explained … they could hang around your neck ;)