.f_print_avg = print_avg_psicpu_stats,
#endif
#if defined(SOURCE_SAR) || defined(SOURCE_SADF)
- .hdr_line = "s_acpu10;s_acpu60;s_acpu300;s_tcpu/s",
+ .hdr_line = "%scpu-10;%scpu-60;%scpu-300;%scpu",
#endif
.gtypes_nr = {STATS_PSI_CPU_ULL, STATS_PSI_CPU_UL, STATS_PSI_CPU_U},
.ftypes_nr = {0, 0, 0},
.f_print_avg = print_avg_psiio_stats,
#endif
#if defined(SOURCE_SAR) || defined(SOURCE_SADF)
- .hdr_line = "s_aio10;s_aio60;s_aio300;s_tio/s;f_aio10;f_aio60;f_aio300;f_tio/s",
+ .hdr_line = "%sio-10;%sio-60;%sio-300;%sio;%fio-10;%fio-60;%fio-300;%fio",
#endif
.gtypes_nr = {STATS_PSI_IO_ULL, STATS_PSI_IO_UL, STATS_PSI_IO_U},
.ftypes_nr = {0, 0, 0},
.f_print_avg = print_avg_psimem_stats,
#endif
#if defined(SOURCE_SAR) || defined(SOURCE_SADF)
- .hdr_line = "s_amem10;s_amem60;s_amem300;s_tmem/s;f_amem10;f_amem60;f_amem300;f_tmem/s",
+ .hdr_line = "%smem-10;%smem-60;%smem-300;%smem;%fmem-10;%fmem-60;%fmem-300;%fmem",
#endif
.gtypes_nr = {STATS_PSI_MEM_ULL, STATS_PSI_MEM_UL, STATS_PSI_MEM_U},
.ftypes_nr = {0, 0, 0},
"\"some_avg10\": %.2f, "
"\"some_avg60\": %.2f, "
"\"some_avg300\": %.2f, "
- "\"some_total\": %.2f}",
+ "\"some_avg\": %.2f}",
(double) psic->some_acpu_10 / 100,
(double) psic->some_acpu_60 / 100,
(double) psic->some_acpu_300 / 100,
- S_VALUE(psip->some_cpu_total, psic->some_cpu_total, itv));
+ ((double) psic->some_cpu_total - psip->some_cpu_total) / (100 * itv));
tab--;
close_json_markup:
"\"some_avg10\": %.2f, "
"\"some_avg60\": %.2f, "
"\"some_avg300\": %.2f, "
- "\"some_total\": %.2f, "
+ "\"some_avg\": %.2f, "
"\"full_avg10\": %.2f, "
"\"full_avg60\": %.2f, "
"\"full_avg300\": %.2f, "
- "\"full_total\": %.2f}",
+ "\"full_avg\": %.2f}",
(double) psic->some_aio_10 / 100,
(double) psic->some_aio_60 / 100,
(double) psic->some_aio_300 / 100,
- S_VALUE(psip->some_io_total, psic->some_io_total, itv),
+ ((double) psic->some_io_total - psip->some_io_total) / (100 * itv),
(double) psic->full_aio_10 / 100,
(double) psic->full_aio_60 / 100,
(double) psic->full_aio_300 / 100,
- S_VALUE(psip->full_io_total, psic->full_io_total, itv));
+ ((double) psic->full_io_total - psip->full_io_total) / (100 * itv));
tab--;
close_json_markup:
"\"some_avg10\": %.2f, "
"\"some_avg60\": %.2f, "
"\"some_avg300\": %.2f, "
- "\"some_total\": %.2f, "
+ "\"some_avg\": %.2f, "
"\"full_avg10\": %.2f, "
"\"full_avg60\": %.2f, "
"\"full_avg300\": %.2f, "
- "\"full_total\": %.2f}",
+ "\"full_avg\": %.2f}",
(double) psic->some_amem_10 / 100,
(double) psic->some_amem_60 / 100,
(double) psic->some_amem_300 / 100,
- S_VALUE(psip->some_mem_total, psic->some_mem_total, itv),
+ ((double) psic->some_mem_total - psip->some_mem_total) / (100 * itv),
(double) psic->full_amem_10 / 100,
(double) psic->full_amem_60 / 100,
(double) psic->full_amem_300 / 100,
- S_VALUE(psip->full_mem_total, psic->full_mem_total, itv));
+ ((double) psic->full_mem_total - psip->full_mem_total) / (100 * itv));
tab--;
close_json_markup:
PM_IN_NULL, PM_TYPE_FLOAT, indom, PM_SEM_INSTANT,
pmiUnits(0, 0, 0, 0, 0, 0));
- pmiAddMetric("psi.cpu.some.total",
+ pmiAddMetric("psi.cpu.some.avg",
PM_IN_NULL, PM_TYPE_FLOAT, PM_INDOM_NULL, PM_SEM_INSTANT,
- pmiUnits(0, -1, 1, 0, PM_TIME_SEC, PM_COUNT_ONE));
+ pmiUnits(0, 0, 0, 0, 0, 0));
}
else if (a->id == A_PSI_IO) {
/* Create metrics for A_PSI_IO */
PM_IN_NULL, PM_TYPE_FLOAT, indom, PM_SEM_INSTANT,
pmiUnits(0, 0, 0, 0, 0, 0));
- pmiAddMetric("psi.io.some.total",
+ pmiAddMetric("psi.io.some.avg",
PM_IN_NULL, PM_TYPE_FLOAT, PM_INDOM_NULL, PM_SEM_INSTANT,
- pmiUnits(0, -1, 1, 0, PM_TIME_SEC, PM_COUNT_ONE));
+ pmiUnits(0, 0, 0, 0, 0, 0));
pmiAddMetric("psi.io.full.trends",
PM_IN_NULL, PM_TYPE_FLOAT, indom, PM_SEM_INSTANT,
pmiUnits(0, 0, 0, 0, 0, 0));
- pmiAddMetric("psi.io.full.total",
+ pmiAddMetric("psi.io.full.avg",
PM_IN_NULL, PM_TYPE_FLOAT, PM_INDOM_NULL, PM_SEM_INSTANT,
- pmiUnits(0, -1, 1, 0, PM_TIME_SEC, PM_COUNT_ONE));
+ pmiUnits(0, 0, 0, 0, 0, 0));
}
else {
/* Create metrics for A_PSI_MEM */
PM_IN_NULL, PM_TYPE_FLOAT, indom, PM_SEM_INSTANT,
pmiUnits(0, 0, 0, 0, 0, 0));
- pmiAddMetric("psi.mem.some.total",
+ pmiAddMetric("psi.mem.some.avg",
PM_IN_NULL, PM_TYPE_FLOAT, PM_INDOM_NULL, PM_SEM_INSTANT,
- pmiUnits(0, -1, 1, 0, PM_TIME_SEC, PM_COUNT_ONE));
+ pmiUnits(0, 0, 0, 0, 0, 0));
pmiAddMetric("psi.mem.full.trends",
PM_IN_NULL, PM_TYPE_FLOAT, indom, PM_SEM_INSTANT,
pmiUnits(0, 0, 0, 0, 0, 0));
- pmiAddMetric("psi.mem.full.total",
+ pmiAddMetric("psi.mem.full.avg",
PM_IN_NULL, PM_TYPE_FLOAT, PM_INDOM_NULL, PM_SEM_INSTANT,
- pmiUnits(0, -1, 1, 0, PM_TIME_SEC, PM_COUNT_ONE));
+ pmiUnits(0, 0, 0, 0, 0, 0));
}
#endif /* HAVE_PCP */
}
pmiPutValue("psi.cpu.some.trends", "300 sec", buf);
snprintf(buf, sizeof(buf), "%f",
- S_VALUE(psip->some_cpu_total, psic->some_cpu_total, itv));
- pmiPutValue("psi.cpu.some.total", NULL, buf);
+ ((double) psic->some_cpu_total - psip->some_cpu_total) / (100 * itv));
+ pmiPutValue("psi.cpu.some.avg", NULL, buf);
#endif /* HAVE_PCP */
}
pmiPutValue("psi.io.some.trends", "300 sec", buf);
snprintf(buf, sizeof(buf), "%f",
- S_VALUE(psip->some_io_total, psic->some_io_total, itv));
- pmiPutValue("psi.io.some.total", NULL, buf);
+ ((double) psic->some_io_total - psip->some_io_total) / (100 * itv));
+ pmiPutValue("psi.io.some.avg", NULL, buf);
snprintf(buf, sizeof(buf), "%f", (double) psic->full_aio_10 / 100);
pmiPutValue("psi.io.full.trends", "10 sec", buf);
pmiPutValue("psi.io.full.trends", "300 sec", buf);
snprintf(buf, sizeof(buf), "%f",
- S_VALUE(psip->full_io_total, psic->full_io_total, itv));
- pmiPutValue("psi.io.full.total", NULL, buf);
+ ((double) psic->full_io_total - psip->full_io_total) / (100 * itv));
+ pmiPutValue("psi.io.full.avg", NULL, buf);
#endif /* HAVE_PCP */
}
pmiPutValue("psi.mem.some.trends", "300 sec", buf);
snprintf(buf, sizeof(buf), "%f",
- S_VALUE(psip->some_mem_total, psic->some_mem_total, itv));
- pmiPutValue("psi.mem.some.total", NULL, buf);
+ ((double) psic->some_mem_total - psip->some_mem_total) / (100 * itv));
+ pmiPutValue("psi.mem.some.avg", NULL, buf);
snprintf(buf, sizeof(buf), "%f", (double) psic->full_amem_10 / 100);
pmiPutValue("psi.mem.full.trends", "10 sec", buf);
pmiPutValue("psi.mem.full.trends", "300 sec", buf);
snprintf(buf, sizeof(buf), "%f",
- S_VALUE(psip->full_mem_total, psic->full_mem_total, itv));
- pmiPutValue("psi.mem.full.total", NULL, buf);
+ ((double) psic->full_mem_total - psip->full_mem_total) / (100 * itv));
+ pmiPutValue("psi.mem.full.avg", NULL, buf);
#endif /* HAVE_PCP */
}
s_avg10 = s_avg60 = s_avg300 = 0;
}
- cprintf_f(NO_UNIT, 1, 9, 2,
- S_VALUE(psip->some_cpu_total, psic->some_cpu_total, itv));
+ cprintf_pc(DISPLAY_UNIT(flags), 1, 9, 2,
+ ((double) psic->some_cpu_total - psip->some_cpu_total) / (100 * itv));
printf("\n");
}
s_avg10 = s_avg60 = s_avg300 = 0;
}
- cprintf_f(NO_UNIT, 1, 9, 2,
- S_VALUE(psip->some_io_total, psic->some_io_total, itv));
+ cprintf_pc(DISPLAY_UNIT(flags), 1, 9, 2,
+ ((double) psic->some_io_total - psip->some_io_total) / (100 * itv));
if (!dispavg) {
/* Display instantaneous "full" values */
f_avg10 = f_avg60 = f_avg300 = 0;
}
- cprintf_f(NO_UNIT, 1, 9, 2,
- S_VALUE(psip->full_io_total, psic->full_io_total, itv));
+ cprintf_pc(DISPLAY_UNIT(flags), 1, 9, 2,
+ ((double) psic->full_io_total - psip->full_io_total) / (100 * itv));
printf("\n");
}
s_avg10 = s_avg60 = s_avg300 = 0;
}
- cprintf_f(NO_UNIT, 1, 9, 2,
- S_VALUE(psip->some_mem_total, psic->some_mem_total, itv));
+ cprintf_pc(DISPLAY_UNIT(flags), 1, 9, 2,
+ ((double) psic->some_mem_total - psip->some_mem_total) / (100 * itv));
if (!dispavg) {
/* Display instantaneous "full" values */
f_avg10 = f_avg60 = f_avg300 = 0;
}
- cprintf_f(NO_UNIT, 1, 9, 2,
- S_VALUE(psip->full_mem_total, psic->full_mem_total, itv));
+ cprintf_pc(DISPLAY_UNIT(flags), 1, 9, 2,
+ ((double) psic->full_mem_total - psip->full_mem_total) / (100 * itv));
printf("\n");
}
= (DISPLAY_HORIZONTALLY(flags) ? PT_NOFLAG : PT_NEWLIN);
render(isdb, pre, PT_NOFLAG,
- "-\ts_acpu10", NULL, NULL,
+ "-\t%scpu-10", NULL, NULL,
NOVAL,
(double) psic->some_acpu_10 / 100,
NULL);
render(isdb, pre, PT_NOFLAG,
- "-\ts_acpu60", NULL, NULL,
+ "-\t%scpu-60", NULL, NULL,
NOVAL,
(double) psic->some_acpu_60 / 100,
NULL);
render(isdb, pre, PT_NOFLAG,
- "-\ts_acpu300", NULL, NULL,
+ "-\t%scpu-300", NULL, NULL,
NOVAL,
(double) psic->some_acpu_300 / 100,
NULL);
render(isdb, pre, pt_newlin,
- "-\ts_tcpu/s", NULL, NULL,
+ "-\t%scpu", NULL, NULL,
NOVAL,
- S_VALUE(psip->some_cpu_total, psic->some_cpu_total, itv),
+ ((double) psic->some_cpu_total - psip->some_cpu_total) / (100 * itv),
NULL);
}
= (DISPLAY_HORIZONTALLY(flags) ? PT_NOFLAG : PT_NEWLIN);
render(isdb, pre, PT_NOFLAG,
- "-\ts_aio10", NULL, NULL,
+ "-\t%sio-10", NULL, NULL,
NOVAL,
(double) psic->some_aio_10 / 100,
NULL);
render(isdb, pre, PT_NOFLAG,
- "-\ts_aio60", NULL, NULL,
+ "-\t%sio-60", NULL, NULL,
NOVAL,
(double) psic->some_aio_60 / 100,
NULL);
render(isdb, pre, PT_NOFLAG,
- "-\ts_aio300", NULL, NULL,
+ "-\t%sio-300", NULL, NULL,
NOVAL,
(double) psic->some_aio_300 / 100,
NULL);
render(isdb, pre, PT_NOFLAG,
- "-\ts_tio/s", NULL, NULL,
+ "-\t%sio", NULL, NULL,
NOVAL,
- S_VALUE(psip->some_io_total, psic->some_io_total, itv),
+ ((double) psic->some_io_total - psip->some_io_total) / (100 * itv),
NULL);
render(isdb, pre, PT_NOFLAG,
- "-\tf_aio10", NULL, NULL,
+ "-\t%fio-10", NULL, NULL,
NOVAL,
(double) psic->full_aio_10 / 100,
NULL);
render(isdb, pre, PT_NOFLAG,
- "-\tf_aio60", NULL, NULL,
+ "-\t%fio-60", NULL, NULL,
NOVAL,
(double) psic->full_aio_60 / 100,
NULL);
render(isdb, pre, PT_NOFLAG,
- "-\tf_aio300", NULL, NULL,
+ "-\t%fio-300", NULL, NULL,
NOVAL,
(double) psic->full_aio_300 / 100,
NULL);
render(isdb, pre, pt_newlin,
- "-\tf_tio/s", NULL, NULL,
+ "-\t%fio", NULL, NULL,
NOVAL,
- S_VALUE(psip->full_io_total, psic->full_io_total, itv),
+ ((double) psic->full_io_total - psip->full_io_total) / (100 * itv),
NULL);
}
= (DISPLAY_HORIZONTALLY(flags) ? PT_NOFLAG : PT_NEWLIN);
render(isdb, pre, PT_NOFLAG,
- "-\ts_amem10", NULL, NULL,
+ "-\t%smem-10", NULL, NULL,
NOVAL,
(double) psic->some_amem_10 / 100,
NULL);
render(isdb, pre, PT_NOFLAG,
- "-\ts_amem60", NULL, NULL,
+ "-\t%smem-60", NULL, NULL,
NOVAL,
(double) psic->some_amem_60 / 100,
NULL);
render(isdb, pre, PT_NOFLAG,
- "-\ts_amem300", NULL, NULL,
+ "-\t%smem-300", NULL, NULL,
NOVAL,
(double) psic->some_amem_300 / 100,
NULL);
render(isdb, pre, PT_NOFLAG,
- "-\ts_tmem/s", NULL, NULL,
+ "-\t%smem", NULL, NULL,
NOVAL,
- S_VALUE(psip->some_mem_total, psic->some_mem_total, itv),
+ ((double) psic->some_mem_total - psip->some_mem_total) / (100 * itv),
NULL);
render(isdb, pre, PT_NOFLAG,
- "-\tf_amem10", NULL, NULL,
+ "-\t%fmem-10", NULL, NULL,
NOVAL,
(double) psic->full_amem_10 / 100,
NULL);
render(isdb, pre, PT_NOFLAG,
- "-\tf_amem60", NULL, NULL,
+ "-\t%fmem-60", NULL, NULL,
NOVAL,
(double) psic->full_amem_60 / 100,
NULL);
render(isdb, pre, PT_NOFLAG,
- "-\tf_amem300", NULL, NULL,
+ "-\t%fmem-300", NULL, NULL,
NOVAL,
(double) psic->full_amem_300 / 100,
NULL);
render(isdb, pre, pt_newlin,
- "-\tf_tmem/s", NULL, NULL,
+ "-\t%fmem", NULL, NULL,
NOVAL,
- S_VALUE(psip->full_mem_total, psic->full_mem_total, itv),
+ ((double) psic->full_mem_total - psip->full_mem_total) / (100 * itv),
NULL);
}
*psic = (struct stats_psi_cpu *) a->buf[curr],
*psip = (struct stats_psi_cpu *) a->buf[!curr];
int group[] = {3, 1};
- int g_type[] = {SVG_LINE_GRAPH, SVG_LINE_GRAPH};
+ int g_type[] = {SVG_LINE_GRAPH, SVG_BAR_GRAPH};
char *title[] = {"CPU pressure trends (some tasks)", "CPU stall time (some tasks)"};
- char *g_title[] = {"s_acpu10", "s_acpu60", "s_acpu300",
- "s_tcpu/s"};
- /*
- * s_acpu10:0, s_acpu60:1, s_acpu300:2, s_tcpu/s:3
- * g_fields[]: metric position for each field in stats_psi_cpu structure
- * some_cpu_total=3 -> only s_tcpu/s will be checked in save_extrema() function.
- * (some_acpu_10=0)
- * (some_acpu_60=1)
- * (some_acpu_300=2)
- */
- int g_fields[] = {3};
- unsigned int local_types_nr[] = {1, 0, 0};
+ char *g_title[] = {"%scpu-10", "%scpu-60", "%scpu-300",
+ "%scpu"};
static double *spmin, *spmax;
static char **out;
static int *outsize;
+ double tval;
if (action & F_BEGIN) {
/*
}
if (action & F_MAIN) {
- /*
- * Check for min/max values.
- * Don't use save_extrema() function as some values are absolute ones (s_acpu10,...)
- * but s_tcpu/s is a per-second value.
- */
- save_extrema(local_types_nr, (void *) a->buf[curr], (void *) a->buf[!curr],
- itv, spmin, spmax, g_fields);
+ /* Check for min/max values */
if (psic->some_acpu_10 > *spmax) {
*spmax = psic->some_acpu_10;
}
if (psic->some_acpu_300 < *(spmin + 2)) {
*(spmin + 2) = psic->some_acpu_300;
}
+ tval = ((double) psic->some_cpu_total - psip->some_cpu_total) / (100 * itv);
+ if (tval > *(spmax + 3)) {
+ *(spmax + 3) = tval;
+ }
+ if (tval < *(spmin + 3)) {
+ *(spmin + 3) = tval;
+ }
- /* s_acpu10 */
+ /* %scpu-10 */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
(double) psic->some_acpu_10 / 100,
out, outsize, svg_p->restart);
- /* s_acpu60 */
+ /* %scpu-60 */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
(double) psic->some_acpu_60 / 100,
out + 1, outsize + 1, svg_p->restart);
- /* s_acpu300 */
+ /* %scpu-300 */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
(double) psic->some_acpu_300 / 100,
out + 2, outsize + 2, svg_p->restart);
- /* s_tcpu/s */
- lniappend(record_hdr->ust_time - svg_p->ust_time_ref,
- S_VALUE(psip->some_cpu_total, psic->some_cpu_total, itv),
- out + 3, outsize + 3, svg_p->restart);
+ /* %scpu */
+ brappend(record_hdr->ust_time - svg_p->ust_time_ref,
+ 0.0,
+ ((double) psic->some_cpu_total - psip->some_cpu_total) / (100 * itv),
+ out + 3, outsize + 3, svg_p->dt);
}
if (action & F_END) {
*psic = (struct stats_psi_io *) a->buf[curr],
*psip = (struct stats_psi_io *) a->buf[!curr];
int group[] = {3, 1, 3, 1};
- int g_type[] = {SVG_LINE_GRAPH, SVG_LINE_GRAPH, SVG_LINE_GRAPH, SVG_LINE_GRAPH};
+ int g_type[] = {SVG_LINE_GRAPH, SVG_BAR_GRAPH, SVG_LINE_GRAPH, SVG_BAR_GRAPH};
char *title[] = {"I/O pressure trends (some tasks)", "I/O stall time (some tasks)",
"I/O pressure trends (full)", "I/O stall time (full)"};
- char *g_title[] = {"s_aio10", "s_aio60", "s_aio300",
- "s_tio/s",
- "f_aio10", "f_aio60", "f_aio300",
- "f_tio/s"};
- int g_fields[] = {3, 7};
- unsigned int local_types_nr[] = {2, 0, 0};
+ char *g_title[] = {"%sio-10", "%sio-60", "%sio-300",
+ "%sio",
+ "%fio-10", "%fio-60", "%fio-300",
+ "%fio"};
static double *spmin, *spmax;
static char **out;
static int *outsize;
+ double tval;
if (action & F_BEGIN) {
/*
}
if (action & F_MAIN) {
- /*
- * Check for min/max values.
- * Don't use save_extrema() function as some values are absolute ones and others are
- * per-second ones.
- */
- save_extrema(local_types_nr, (void *) a->buf[curr], (void *) a->buf[!curr],
- itv, spmin, spmax, g_fields);
+ /* Check for min/max values */
if (psic->some_aio_10 > *spmax) {
*spmax = psic->some_aio_10;
}
if (psic->some_aio_300 < *(spmin + 2)) {
*(spmin + 2) = psic->some_aio_300;
}
+ tval = ((double) psic->some_io_total - psip->some_io_total) / (100 * itv);
+ if (tval > *(spmax + 3)) {
+ *(spmax + 3) = tval;
+ }
+ if (tval < *(spmin + 3)) {
+ *(spmin + 3) = tval;
+ }
if (psic->full_aio_10 > *(spmax + 4)) {
*(spmax + 4) = psic->full_aio_10;
if (psic->full_aio_300 < *(spmin + 6)) {
*(spmin + 6) = psic->full_aio_300;
}
+ tval = ((double) psic->full_io_total - psip->full_io_total) / (100 * itv);
+ if (tval > *(spmax + 7)) {
+ *(spmax + 7) = tval;
+ }
+ if (tval < *(spmin + 7)) {
+ *(spmin + 7) = tval;
+ }
- /* s_aio10 */
+ /* %sio-10 */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
(double) psic->some_aio_10 / 100,
out, outsize, svg_p->restart);
- /* s_aio60 */
+ /* %sio-60 */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
(double) psic->some_aio_60 / 100,
out + 1, outsize + 1, svg_p->restart);
- /* s_aio300 */
+ /* %sio-300 */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
(double) psic->some_aio_300 / 100,
out + 2, outsize + 2, svg_p->restart);
- /* s_tio/s */
- lniappend(record_hdr->ust_time - svg_p->ust_time_ref,
- S_VALUE(psip->some_io_total, psic->some_io_total, itv),
- out + 3, outsize + 3, svg_p->restart);
+ /* %sio */
+ brappend(record_hdr->ust_time - svg_p->ust_time_ref,
+ 0.0,
+ ((double) psic->some_io_total - psip->some_io_total) / (100 * itv),
+ out + 3, outsize + 3, svg_p->dt);
- /* f_aio10 */
+ /* %fio-10 */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
(double) psic->full_aio_10 / 100,
out + 4, outsize + 4, svg_p->restart);
- /* f_aio60 */
+ /* %fio-60 */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
(double) psic->full_aio_60 / 100,
out + 5, outsize + 5, svg_p->restart);
- /* f_aio300 */
+ /* %fio-300 */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
(double) psic->full_aio_300 / 100,
out + 6, outsize + 6, svg_p->restart);
- /* f_tio/s */
- lniappend(record_hdr->ust_time - svg_p->ust_time_ref,
- S_VALUE(psip->full_io_total, psic->full_io_total, itv),
- out + 7, outsize + 7, svg_p->restart);
+ /* %fio */
+ brappend(record_hdr->ust_time - svg_p->ust_time_ref,
+ 0.0,
+ ((double) psic->full_io_total - psip->full_io_total) / (100 * itv),
+ out + 7, outsize + 7, svg_p->dt);
}
if (action & F_END) {
*psic = (struct stats_psi_mem *) a->buf[curr],
*psip = (struct stats_psi_mem *) a->buf[!curr];
int group[] = {3, 1, 3, 1};
- int g_type[] = {SVG_LINE_GRAPH, SVG_LINE_GRAPH, SVG_LINE_GRAPH, SVG_LINE_GRAPH};
+ int g_type[] = {SVG_LINE_GRAPH, SVG_BAR_GRAPH, SVG_LINE_GRAPH, SVG_BAR_GRAPH};
char *title[] = {"Memory pressure trends (some tasks)", "Memory stall time (some tasks)",
"Memory pressure trends (full)", "Memory stall time (full)"};
- char *g_title[] = {"s_amem10", "s_amem60", "s_amem300",
- "s_tmem/s",
- "f_amem10", "f_amem60", "f_amem300",
- "f_tmem/s"};
- int g_fields[] = {3, 7};
- unsigned int local_types_nr[] = {2, 0, 0};
+ char *g_title[] = {"%smem-10", "%smem-60", "%smem-300",
+ "%smem",
+ "%fmem-10", "%fmem-60", "%fmem-300",
+ "%fmem"};
static double *spmin, *spmax;
static char **out;
static int *outsize;
+ double tval;
if (action & F_BEGIN) {
/*
}
if (action & F_MAIN) {
- /*
- * Check for min/max values.
- * Don't use save_extrema() function as some values are absolute ones and others are
- * per-second ones.
- */
- save_extrema(local_types_nr, (void *) a->buf[curr], (void *) a->buf[!curr],
- itv, spmin, spmax, g_fields);
+ /* Check for min/max values */
if (psic->some_amem_10 > *spmax) {
*spmax = psic->some_amem_10;
}
if (psic->some_amem_300 < *(spmin + 2)) {
*(spmin + 2) = psic->some_amem_300;
}
+ tval = ((double) psic->some_mem_total - psip->some_mem_total) / (100 * itv);
+ if (tval > *(spmax + 3)) {
+ *(spmax + 3) = tval;
+ }
+ if (tval < *(spmin + 3)) {
+ *(spmin + 3) = tval;
+ }
if (psic->full_amem_10 > *(spmax + 4)) {
*(spmax + 4) = psic->full_amem_10;
if (psic->full_amem_300 < *(spmin + 6)) {
*(spmin + 6) = psic->full_amem_300;
}
+ tval = ((double) psic->full_mem_total - psip->full_mem_total) / (100 * itv);
+ if (tval > *(spmax + 7)) {
+ *(spmax + 7) = tval;
+ }
+ if (tval < *(spmin + 7)) {
+ *(spmin + 7) = tval;
+ }
- /* s_amem10 */
+ /* %smem-10 */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
(double) psic->some_amem_10 / 100,
out, outsize, svg_p->restart);
- /* s_amem60 */
+ /* %smem-60 */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
(double) psic->some_amem_60 / 100,
out + 1, outsize + 1, svg_p->restart);
- /* s_amem300 */
+ /* %smem-300 */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
(double) psic->some_amem_300 / 100,
out + 2, outsize + 2, svg_p->restart);
- /* s_tmem/s */
- lniappend(record_hdr->ust_time - svg_p->ust_time_ref,
- S_VALUE(psip->some_mem_total, psic->some_mem_total, itv),
- out + 3, outsize + 3, svg_p->restart);
+ /* %smem */
+ brappend(record_hdr->ust_time - svg_p->ust_time_ref,
+ 0.0,
+ ((double) psic->some_mem_total - psip->some_mem_total) / (100 * itv),
+ out + 3, outsize + 3, svg_p->dt);
- /* f_amem10 */
+ /* %fmem-10 */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
(double) psic->full_amem_10 / 100,
out + 4, outsize + 4, svg_p->restart);
- /* f_amem60 */
+ /* %fmem-60 */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
(double) psic->full_amem_60 / 100,
out + 5, outsize + 5, svg_p->restart);
- /* f_amem300 */
+ /* %fmem-300 */
lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
(double) psic->full_amem_300 / 100,
out + 6, outsize + 6, svg_p->restart);
- /* f_tmem/s */
- lniappend(record_hdr->ust_time - svg_p->ust_time_ref,
- S_VALUE(psip->full_mem_total, psic->full_mem_total, itv),
- out + 7, outsize + 7, svg_p->restart);
+ /* %fmem */
+ brappend(record_hdr->ust_time - svg_p->ust_time_ref,
+ 0.0,
+ ((double) psic->full_mem_total - psip->full_mem_total) / (100 * itv),
+ out + 7, outsize + 7, svg_p->dt);
}
if (action & F_END) {
"some_avg10=\"%.2f\" "
"some_avg60=\"%.2f\" "
"some_avg300=\"%.2f\" "
- "some_total=\"%.2f\"/>",
+ "some_avg=\"%.2f\"/>",
(double) psic->some_acpu_10 / 100,
(double) psic->some_acpu_60 / 100,
(double) psic->some_acpu_300 / 100,
- S_VALUE(psip->some_cpu_total, psic->some_cpu_total, itv));
+ ((double) psic->some_cpu_total - psip->some_cpu_total) / (100 * itv));
tab--;
close_xml_markup:
"some_avg10=\"%.2f\" "
"some_avg60=\"%.2f\" "
"some_avg300=\"%.2f\" "
- "some_total=\"%.2f\" "
+ "some_avg=\"%.2f\" "
"full_avg10=\"%.2f\" "
"full_avg60=\"%.2f\" "
"full_avg300=\"%.2f\" "
- "full_total=\"%.2f\"/>",
+ "full_avg=\"%.2f\"/>",
(double) psic->some_aio_10 / 100,
(double) psic->some_aio_60 / 100,
(double) psic->some_aio_300 / 100,
- S_VALUE(psip->some_io_total, psic->some_io_total, itv),
+ ((double) psic->some_io_total - psip->some_io_total) / (100 * itv),
(double) psic->full_aio_10 / 100,
(double) psic->full_aio_60 / 100,
(double) psic->full_aio_300 / 100,
- S_VALUE(psip->full_io_total, psic->full_io_total, itv));
+ ((double) psic->full_io_total - psip->full_io_total) / (100 * itv));
tab--;
close_xml_markup:
"some_avg10=\"%.2f\" "
"some_avg60=\"%.2f\" "
"some_avg300=\"%.2f\" "
- "some_total=\"%.2f\" "
+ "some_avg=\"%.2f\" "
"full_avg10=\"%.2f\" "
"full_avg60=\"%.2f\" "
"full_avg300=\"%.2f\" "
- "full_total=\"%.2f\"/>",
+ "full_avg=\"%.2f\"/>",
(double) psic->some_amem_10 / 100,
(double) psic->some_amem_60 / 100,
(double) psic->some_amem_300 / 100,
- S_VALUE(psip->some_mem_total, psic->some_mem_total, itv),
+ ((double) psic->some_mem_total - psip->some_mem_total) / (100 * itv),
(double) psic->full_amem_10 / 100,
(double) psic->full_amem_60 / 100,
(double) psic->full_amem_300 / 100,
- S_VALUE(psip->full_mem_total, psic->full_mem_total, itv));
+ ((double) psic->full_mem_total - psip->full_mem_total) / (100 * itv));
tab--;
close_xml_markup: