Better track latencies in us

git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4819 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Vladislav Bolkhovitin
2013-03-26 21:50:25 +00:00
parent 11ddefba2a
commit 1cbdfc1567
3 changed files with 19 additions and 15 deletions

View File

@@ -9452,7 +9452,7 @@ out_unlock:
#ifdef CONFIG_SCST_MEASURE_LATENCY
static uint64_t scst_get_nsec(void)
static uint64_t scst_get_usec(void)
{
struct timespec ts;
@@ -9460,68 +9460,72 @@ static uint64_t scst_get_nsec(void)
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 16)
return (uint64_t)ts.tv_sec * 1000000000 + ts.tv_nsec;
#else
return timespec_to_ns(&ts);
#if (BITS_PER_LONG > 32)
return timespec_to_ns(&ts) / 1000;
#else
return timespec_to_ns(&ts) >> 10;
#endif
#endif
}
void scst_set_start_time(struct scst_cmd *cmd)
{
cmd->start = scst_get_nsec();
cmd->start = scst_get_usec();
TRACE_DBG("cmd %p: start %lld", cmd, cmd->start);
}
void scst_set_cur_start(struct scst_cmd *cmd)
{
cmd->curr_start = scst_get_nsec();
cmd->curr_start = scst_get_usec();
TRACE_DBG("cmd %p: cur_start %lld", cmd, cmd->curr_start);
}
void scst_set_parse_time(struct scst_cmd *cmd)
{
cmd->parse_time += scst_get_nsec() - cmd->curr_start;
cmd->parse_time += scst_get_usec() - cmd->curr_start;
TRACE_DBG("cmd %p: parse_time %lld", cmd, cmd->parse_time);
}
void scst_set_alloc_buf_time(struct scst_cmd *cmd)
{
cmd->alloc_buf_time += scst_get_nsec() - cmd->curr_start;
cmd->alloc_buf_time += scst_get_usec() - cmd->curr_start;
TRACE_DBG("cmd %p: alloc_buf_time %lld", cmd, cmd->alloc_buf_time);
}
void scst_set_restart_waiting_time(struct scst_cmd *cmd)
{
cmd->restart_waiting_time += scst_get_nsec() - cmd->curr_start;
cmd->restart_waiting_time += scst_get_usec() - cmd->curr_start;
TRACE_DBG("cmd %p: restart_waiting_time %lld", cmd,
cmd->restart_waiting_time);
}
void scst_set_rdy_to_xfer_time(struct scst_cmd *cmd)
{
cmd->rdy_to_xfer_time += scst_get_nsec() - cmd->curr_start;
cmd->rdy_to_xfer_time += scst_get_usec() - cmd->curr_start;
TRACE_DBG("cmd %p: rdy_to_xfer_time %lld", cmd, cmd->rdy_to_xfer_time);
}
void scst_set_pre_exec_time(struct scst_cmd *cmd)
{
cmd->pre_exec_time += scst_get_nsec() - cmd->curr_start;
cmd->pre_exec_time += scst_get_usec() - cmd->curr_start;
TRACE_DBG("cmd %p: pre_exec_time %lld", cmd, cmd->pre_exec_time);
}
void scst_set_exec_time(struct scst_cmd *cmd)
{
cmd->exec_time += scst_get_nsec() - cmd->curr_start;
cmd->exec_time += scst_get_usec() - cmd->curr_start;
TRACE_DBG("cmd %p: exec_time %lld", cmd, cmd->exec_time);
}
void scst_set_dev_done_time(struct scst_cmd *cmd)
{
cmd->dev_done_time += scst_get_nsec() - cmd->curr_start;
cmd->dev_done_time += scst_get_usec() - cmd->curr_start;
TRACE_DBG("cmd %p: dev_done_time %lld", cmd, cmd->dev_done_time);
}
void scst_set_xmit_time(struct scst_cmd *cmd)
{
cmd->xmit_time += scst_get_nsec() - cmd->curr_start;
cmd->xmit_time += scst_get_usec() - cmd->curr_start;
TRACE_DBG("cmd %p: xmit_time %lld", cmd, cmd->xmit_time);
}
@@ -9533,7 +9537,7 @@ void scst_update_lat_stats(struct scst_cmd *cmd)
int i;
struct scst_ext_latency_stat *latency_stat, *dev_latency_stat;
finish = scst_get_nsec();
finish = scst_get_usec();
/* Determine the IO size for extended latency statistics */
data_len = cmd->bufflen;

View File

@@ -488,7 +488,7 @@ static int lat_info_show(struct seq_file *seq, void *v)
if (!header_printed) {
seq_printf(seq, "%-15s %-15s %-46s %-46s %-46s\n",
"T-L names", "Total commands", "SCST latency",
"Target latency", "Dev latency (min/avg/max/all ns)");
"Target latency", "Dev latency (min/avg/max/all us)");
header_printed = true;
}

View File

@@ -3195,7 +3195,7 @@ static ssize_t scst_sess_latency_show(struct kobject *kobj,
res += scnprintf(&buffer[res], SCST_SYSFS_BLOCK_SIZE - res,
"%-15s %-15s %-46s %-46s %-46s\n",
"T-L names", "Total commands", "SCST latency",
"Target latency", "Dev latency (min/avg/max/all ns)");
"Target latency", "Dev latency (min/avg/max/all us)");
spin_lock_bh(&sess->lat_lock);