Hi Gurus,
I am using a dtrace script to collect the disk io information.
#!/usr/sbin/dtrace -qCs
dtrace:::BEGIN
{
printf("Tracing... Hit Ctrl-C to end.\n");
}
fbt:sd:sdstrategy:entry
{
start[(struct buf *)arg0] = timestamp;
}
fbt:sd:sdintr:entry
/ start[(this->buf = (struct buf *)((struct scsi_pkt *)arg0)->pkt_private)] !=
0 /
{
this->un = ((struct sd_xbuf *) this->buf->b_private)->xb_un;
this->scsi_device = ((struct sd_lun *)this->un)->un_sd;
this->scsi_address = ((struct scsi_device
*)this->scsi_device)->sd_address;
this->tgt_id = ((struct scsi_address)this->scsi_address).a_target;
this->lun_id = ((struct scsi_address)this->scsi_address).a_lun;
this->sd_dev = ((struct scsi_device *)this->scsi_device)->sd_dev;
this->devi_addr = ((struct dev_info *)this->sd_dev)->devi_addr;
@[stringof(this->devi_addr), this->tgt_id, this->lun_id, "<TGT,LUN>"] =
lquantize((timestamp - start[this->buf])/1000000,
60000, 600000, 60000);
@q[stringof(this->devi_addr), this->tgt_id, this->lun_id, "<TGT,LUN>"]
= quantize((timestamp - start[this->buf])/1000000);
start[this->buf] = 0;
}
dtrace:::END
{
}
I am happy with the result I collected.
w21000011c68108b1,0 1284 0 <TGT,LUN>
value ------------- Distribution ------------- count
-1 | 0
0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 70706
1 |@@@@@@@@@@@ 25665
2 | 58
4 | 10
8 | 5
16 | 1
32 | 0
w21000011c6810a19,0 2050 0 <TGT,LUN>
value ------------- Distribution ------------- count
-1 | 0
0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 65479
1 |@@@@@@@@@@@@@ 32115
2 | 38
4 | 9
8 | 2
16 | 0
20:28:59.029 82 112600.30 54.98 512 100.00 1.137 11.273
0.230 72.8 56.0
20:29:00.034 83 111777.97 54.58 512 100.00 1.136 17.561
0.263 72.1 55.8
20:29:01.039 84 112644.53 55.00 512 100.00 1.136 13.126
0.221 73.0 56.2
20:29:02.026 85 111823.39 54.60 512 100.00 1.136 17.770
0.271 80.0 57.8
20:29:03.027 86 111960.96 54.67 512 100.00 1.137 18.749
0.350 83.0 57.6
20:29:04.099 87 110560.03 53.98 512 100.00 1.136 32.826
0.688 91.0 68.7
20:29:05.019 88 109541.66 53.49 512 100.00 1.140 105.035
1.263 99.2 80.9
20:29:06.041 89 108109.20 52.79 512 100.00 1.143 34.500
1.023 99.3 80.7
20:29:07.066 90 107981.97 52.73 512 100.00 1.141 40.364
0.920 99.5 80.8
interval i/o MB/sec bytes read resp resp
resp cpu% cpu%
rate 1024**2 i/o pct time max
stddev sys+usr sys
20:29:08.062 91 109250.32 53.34 512 100.00 1.144 72.684
1.098 99.0 79.9
20:29:09.101 92 108673.08 53.06 512 100.00 1.147 83.059
1.358 99.3 80.0
20:29:10.081 93 109205.82 53.32 512 100.00 1.139 111.060
1.198 99.5 81.2
20:29:11.028 94 108347.70 52.90 512 100.00 1.141 85.047
1.049 99.0 80.2
20:29:12.030 95 109196.89 53.32 512 100.00 1.148 57.354
1.248 99.5 80.8
20:29:13.057 96 108357.71 52.91 512 100.00 1.142 46.475
1.095 99.5 80.6
20:29:14.018 97 109040.55 53.24 512 100.00 1.145 45.807
1.106 99.0 80.5
20:29:15.030 98 109622.74 53.53 512 100.00 1.141 51.471
0.965 99.0 81.3
20:29:16.041 99 109202.76 53.32 512 100.00 1.141 52.890
1.103 99.0 80.4
20:29:17.030 100 108316.06 52.89 512 100.00 1.139 70.290
1.135 99.5 80.1
20:29:18.035 101 108316.66 52.89 512 100.00 1.141 51.215
1.048 99.0 80.1
20:29:19.029 102 110732.81 54.07 512 100.00 1.153 94.411
1.082 74.8 57.7
20:29:20.020 103 112189.29 54.78 512 100.00 1.135 13.923
0.218 72.7 55.6
20:29:21.026 104 111925.33 54.65 512 100.00 1.136 16.001
0.237 72.6 56.0
20:29:22.032 105 112443.53 54.90 512 100.00 1.136 18.047
0.247 73.0 55.8
20:29:23.027 106 112051.83 54.71 512 100.00 1.135 11.832
0.188 73.6 56.3
20:29:24.030 107 112146.90 54.76 512 100.00 1.136 13.474
0.226 74.1 56.4
The only thing I am dissatisfied is that the CPU utilization increase from 73%
to 99% during the probing period. Is this something I have to tolerate? Does
it mean that the DTrace is not a good tool for perf monitoring.
Thanks for any comments
John
--
This message posted from opensolaris.org
_______________________________________________
dtrace-discuss mailing list
[email protected]