Disk IO:mptlatency.d

From DTraceBook

Jump to: navigation, search

mptlatency.d, page 268

#!/usr/sbin/dtrace -s

dtrace:::BEGIN
{
	/* See /usr/include/sys/scsi/generic/commands.h for the full list. */
	scsi_cmd[0x00] = "test_unit_ready";
	scsi_cmd[0x08] = "read";
	scsi_cmd[0x0a] = "write";
	scsi_cmd[0x12] = "inquiry";
	scsi_cmd[0x17] = "release";
	scsi_cmd[0x1a] = "mode_sense";
	scsi_cmd[0x1b] = "load/start/stop";
	scsi_cmd[0x1c] = "get_diagnostic_results";
	scsi_cmd[0x1d] = "send_diagnostic_command";
	scsi_cmd[0x25] = "read_capacity";
	scsi_cmd[0x28] = "read(10)";
	scsi_cmd[0x2a] = "write(10)";
	scsi_cmd[0x35] = "synchronize_cache";
	scsi_cmd[0x4d] = "log_sense";
	scsi_cmd[0x5e] = "persistent_reserve_in";
	scsi_cmd[0xa0] = "report_luns";
}

sdt:mpt::io-time-on-hba-non-a-reply
{
	this->mpt = (mpt_t *)arg0;
	this->mpt_cmd = (mpt_cmd_t *)arg1;

	this->mpt_name = strjoin("mpt", lltostr(this->mpt->m_instance));
	this->delta = (this->mpt_cmd->cmd_io_done_time -
	    this->mpt_cmd->cmd_io_start_time) / 1000;
	this->code = *this->mpt_cmd->cmd_cdb;
	this->cmd_text = scsi_cmd[this->code] != NULL ?
	    scsi_cmd[this->code] : lltostr(this->code);
	@[this->mpt_name, this->cmd_text] = quantize(this->delta);
}

dtrace:::END
{
	printf("Command Latency (us):\n");
	printa(@);
}
Personal tools