I feel obliged to point out that this blog post is roughly 5 years and 1 month old. People change, opinions evolve. In just a few years, vast technological landscapes can shift. And don't get me started on config files. Please consider this text in the context of its time.

Solaris 11.4 got a small extension to the iostat command. In a time when storage gets faster and faster, you may end up in a situation 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 the 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 request takes longer than 50 milliseconds”) could still depend on the old scaling and you don’t want to get an alert 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 ;)

Written by

Joerg Moellenkamp

Grey-haired, sometimes grey-bearded Windows dismissing Unix guy.