scsitrace

Another addition to DTrace was the integration of a SCSI provider allowing you to trace SCSI commands on your system. It’s a quite powerful feature allowing you to get in-depth insight what’s going on on the storage side of your system. I really suggest to read through the documentation.

However what’s not really highlighted in the “What’s new” documentation for Solaris 11.4 is the availability of a new script called scsitrace in Oracle Solaris 11.4. This script uses the new functionality in order give you this kind of deep insight without having to write a script for DTrace on your own.

root@batou:/# /usr/dtrace/DTT/scsitrace -v
Press Control C to exit
00039.958182402 0x2a write(10) -> ahci0 dev:0:0 path: timeout:60  zpool-rpool(5)  cdb:0x2a0001ffbcd800000200 id:ffffa100336f860000000184a7f53340
00039.958208406 0x2a write(10) -> ahci0 dev:0:0 path: timeout:60  zpool-rpool(5)  cdb:0x2a0001ffbed800000200 id:ffffa100336fe08000000184a7f59980
00039.958221834 0x2a write(10) <- ahci0 dev:0:0 path: tran:1(ACCEPT) reason:0(completed) status:0(GOOD) sense:0x0/0x0/0x0 resid:0x0 latency:40(40+18446744073709551)us cdb:0x2a0001ffbcd800000200 id:ffffa100336f860000000184a7f53340
00039.958222081 0x2a write(10) <- ahci0 dev:0:0 path: tran:1(ACCEPT) reason:0(completed) status:0(GOOD) sense:0x0/0x0/0x0 resid:0x0 latency:14(14+18446744073709551)us cdb:0x2a0001ffbed800000200 id:ffffa100336fe08000000184a7f59980
00039.958627013 0x35 synchronize_cache -> ahci0 dev:0:0 path: timeout:60  sched(0)  cdb:0x35000000000000000000 id:ffffa100336fe08000000184a7fbf9cd
00039.959734004 0x35 synchronize_cache <- ahci0 dev:0:0 path: tran:1(ACCEPT) reason:0(completed) status:0(GOOD) sense:0x0/0x0/0x0 resid:0x0 latency:1104(1104+18446744073709551)us cdb:0x35000000000000000000 id:ffffa100336fe08000000184a7fbf9cd


This script would have been really handy recently when i had to diagnose a performance problem at a customer. I got the data differently, but it would have been much easier with the script. However the system was still running 11.3.