"\"tps\": %.2f, "
"\"rd_sec\": %.2f, "
"\"wr_sec\": %.2f, "
+ "\"rkB\": %.2f, "
+ "\"wkB\": %.2f, "
"\"avgrq-sz\": %.2f, "
+ "\"areq-sz\": %.2f, "
"\"avgqu-sz\": %.2f, "
+ "\"aqu-sz\": %.2f, "
"\"await\": %.2f, "
"\"svctm\": %.2f, "
"\"util-percent\": %.2f}",
/* Confusion possible here between index and minor numbers */
dev_name,
S_VALUE(sdp->nr_ios, sdc->nr_ios, itv),
- S_VALUE(sdp->rd_sect, sdc->rd_sect, itv),
+ S_VALUE(sdp->rd_sect, sdc->rd_sect, itv), /* Unit = sectors (for backward compatibility) */
S_VALUE(sdp->wr_sect, sdc->wr_sect, itv),
+ S_VALUE(sdp->rd_sect, sdc->rd_sect, itv) / 2,
+ S_VALUE(sdp->wr_sect, sdc->wr_sect, itv) / 2,
/* See iostat for explanations */
- xds.arqsz,
+ xds.arqsz, /* Unit = sectors (for backward compatibility) */
+ xds.arqsz / 2,
+ S_VALUE(sdp->rq_ticks, sdc->rq_ticks, itv) / 1000.0, /* For backward compatibility */
S_VALUE(sdp->rq_ticks, sdc->rq_ticks, itv) / 1000.0,
xds.await,
xds.svctm,
pval((unsigned long long) sdp->wr_sect, (unsigned long long) sdc->wr_sect);
printf(" tot_ticks:");
pval((unsigned long long) sdp->tot_ticks, (unsigned long long) sdc->tot_ticks);
- pfield(NULL, 0); /* Skip avgrq-sz */
+ pfield(NULL, 0); /* Skip areq-sz */
printf(" %s:", pfield(NULL, 0));
pval((unsigned long long) sdp->rq_ticks, (unsigned long long) sdc->rq_ticks);
printf("\n");
NULL);
render(isdb, pre, PT_NOFLAG,
- "%s\trd_sec/s", NULL,
+ "%s\trkB/s", NULL,
cons(sv, dev_name, NULL),
NOVAL,
- S_VALUE(sdp->rd_sect, sdc->rd_sect, itv),
+ S_VALUE(sdp->rd_sect, sdc->rd_sect, itv) / 2,
NULL);
render(isdb, pre, PT_NOFLAG,
- "%s\twr_sec/s", NULL,
+ "%s\twkB/s", NULL,
cons(sv, dev_name, NULL),
NOVAL,
- S_VALUE(sdp->wr_sect, sdc->wr_sect, itv),
+ S_VALUE(sdp->wr_sect, sdc->wr_sect, itv) / 2,
NULL);
render(isdb, pre, PT_NOFLAG,
- "%s\tavgrq-sz", NULL,
+ "%s\tareq-sz", NULL,
cons(sv, dev_name, NULL),
NOVAL,
- xds.arqsz,
+ xds.arqsz / 2,
NULL);
render(isdb, pre, PT_NOFLAG,
- "%s\tavgqu-sz", NULL,
+ "%s\taqu-sz", NULL,
cons(sv, dev_name, NULL),
NOVAL,
S_VALUE(sdp->rq_ticks, sdc->rq_ticks, itv) / 1000.0,
"Disk statistics (3)", "Disk statistics (4)",
"Disk statistics (5)"};
char *g_title[] = {"tps",
- "rd_sec/s", "wr_sec/s",
- "avgrq-sz", "avgqu-sz",
+ "rkB/s", "wkB/s",
+ "areq-sz", "aqu-sz",
"await", "svctm",
"%util"};
int g_fields[] = {0, 1, 2};
static char **out;
static int *outsize;
char *item_name, *persist_dev_name;
- double aqusz;
+ double rkB, wkB, aqusz;
int i, j, k, pos, restart, *unregistered;
if (action & F_BEGIN) {
}
/* Check for min/max values */
- save_extrema(1, 2, 0, (void *) sdc, (void *) sdp,
+ save_extrema(1, 0, 0, (void *) sdc, (void *) sdp,
itv, spmin + pos, spmax + pos, g_fields);
+ rkB = S_VALUE(sdp->rd_sect, sdc->rd_sect, itv) / 2;
+ wkB = S_VALUE(sdp->wr_sect, sdc->wr_sect, itv) / 2;
+ if (rkB < *(spmin + pos + 1)) {
+ *(spmin + pos + 1) = rkB;
+ }
+ if (rkB > *(spmax + pos + 1)) {
+ *(spmax + pos + 1) = rkB;
+ }
+ if (wkB < *(spmin + pos + 2)) {
+ *(spmin + pos + 2) = wkB;
+ }
+ if (wkB > *(spmax + pos + 2)) {
+ *(spmax + pos + 2) = wkB;
+ }
+
compute_ext_disk_stats(sdc, sdp, itv, &xds);
- if (xds.arqsz < *(spmin + pos + 3)) {
- *(spmin + pos + 3) = xds.arqsz;
+ if ((xds.arqsz / 2) < *(spmin + pos + 3)) {
+ *(spmin + pos + 3) = xds.arqsz / 2;
}
- if (xds.arqsz > *(spmax + pos + 3)) {
- *(spmax + pos + 3) = xds.arqsz;
+ if ((xds.arqsz / 2) > *(spmax + pos + 3)) {
+ *(spmax + pos + 3) = xds.arqsz / 2;
}
aqusz = S_VALUE(sdp->rq_ticks, sdc->rq_ticks, itv) / 1000.0;
if (aqusz < *(spmin + pos + 4)) {
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
S_VALUE(sdp->nr_ios, sdc->nr_ios, itv),
out + pos, outsize + pos, restart);
- /* rd_sec/s */
+ /* rkB/s */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
- S_VALUE(sdp->rd_sect, sdc->rd_sect, itv),
+ S_VALUE(sdp->rd_sect, sdc->rd_sect, itv) / 2,
out + pos + 1, outsize + pos + 1, restart);
- /* wr_sec/s */
+ /* wkB/s */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
- S_VALUE(sdp->wr_sect, sdc->wr_sect, itv),
+ S_VALUE(sdp->wr_sect, sdc->wr_sect, itv) / 2,
out + pos + 2, outsize + pos + 2, restart);
- /* avgrq-sz */
+ /* areq-sz */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
- xds.arqsz,
+ xds.arqsz / 2,
out + pos + 3, outsize + pos + 3, restart);
- /* avgqu-sz */
+ /* aqu-sz */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
aqusz,
out + pos + 4, outsize + pos + 4, restart);
"tps=\"%.2f\" "
"rd_sec=\"%.2f\" "
"wr_sec=\"%.2f\" "
+ "rkB=\"%.2f\" "
+ "wkB=\"%.2f\" "
"avgrq-sz=\"%.2f\" "
+ "areq-sz=\"%.2f\" "
"avgqu-sz=\"%.2f\" "
+ "aqu-sz=\"%.2f\" "
"await=\"%.2f\" "
"svctm=\"%.2f\" "
"util-percent=\"%.2f\"/>",
/* Confusion possible here between index and minor numbers */
dev_name,
S_VALUE(sdp->nr_ios, sdc->nr_ios, itv),
- S_VALUE(sdp->rd_sect, sdc->rd_sect, itv),
+ S_VALUE(sdp->rd_sect, sdc->rd_sect, itv), /* Unit = sectors (for backward compatibility) */
S_VALUE(sdp->wr_sect, sdc->wr_sect, itv),
+ S_VALUE(sdp->rd_sect, sdc->rd_sect, itv) / 2,
+ S_VALUE(sdp->wr_sect, sdc->wr_sect, itv) / 2,
/* See iostat for explanations */
- xds.arqsz,
+ xds.arqsz, /* Unit = sectors (for backward compatibility) */
+ xds.arqsz / 2,
+ S_VALUE(sdp->rq_ticks, sdc->rq_ticks, itv) / 1000.0, /* For backward compatibility */
S_VALUE(sdp->rq_ticks, sdc->rq_ticks, itv) / 1000.0,
xds.await,
xds.svctm,