|
|
9a8d55 |
From b6905bafa7fc82ba22afaeb26ff46c900738e9d4 Mon Sep 17 00:00:00 2001
|
|
|
9a8d55 |
From: Sebastien GODARD <sysstat@orange.fr.fake>
|
|
|
9a8d55 |
Date: Sun, 12 May 2013 15:17:01 +0200
|
|
|
9a8d55 |
Subject: [PATCH] Filesystems statistics (part 4): ppc and db output formats
|
|
|
9a8d55 |
|
|
|
9a8d55 |
This patch adds ppc and database (CSV) output formats for filesystems
|
|
|
9a8d55 |
statistics. These formats can be displayed with sadf options -p and -d.
|
|
|
9a8d55 |
|
|
|
9a8d55 |
Also add a new flag (PT_USERND) to the render() function so that
|
|
|
9a8d55 |
a statistic value can be rounded to the nearest integer value.
|
|
|
9a8d55 |
|
|
|
9a8d55 |
(cherry picked from commit 37e6da76fd59dcdff84e216e2c8ef10c439d9f84)
|
|
|
9a8d55 |
---
|
|
|
9a8d55 |
activity.c | 2 +-
|
|
|
9a8d55 |
rndr_stats.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
|
|
|
9a8d55 |
rndr_stats.h | 1 +
|
|
|
9a8d55 |
3 files changed, 75 insertions(+), 2 deletions(-)
|
|
|
9a8d55 |
|
|
|
9a8d55 |
diff --git a/activity.c b/activity.c
|
|
|
9a8d55 |
index b1aba37..734df4a 100644
|
|
|
9a8d55 |
--- a/activity.c
|
|
|
9a8d55 |
+++ b/activity.c
|
|
|
9a8d55 |
@@ -1214,7 +1214,7 @@ struct activity filesystem_act = {
|
|
|
9a8d55 |
.f_render = render_filesystem_stats,
|
|
|
9a8d55 |
.f_xml_print = xml_print_filesystem_stats,
|
|
|
9a8d55 |
.f_json_print = json_print_filesystem_stats,
|
|
|
9a8d55 |
- .hdr_line = "Mbfsfree;Mbfsused;%fsused;%ufsused;Ifree;Iused;%Iused;FILESYSTEM",
|
|
|
9a8d55 |
+ .hdr_line = "FILESYSTEM,MBfsfree;MBfsused;%fsused;%ufsused;Ifree;Iused;%Iused",
|
|
|
9a8d55 |
.name = "A_FILESYSTEM",
|
|
|
9a8d55 |
#endif
|
|
|
9a8d55 |
.nr = -1,
|
|
|
9a8d55 |
diff --git a/rndr_stats.c b/rndr_stats.c
|
|
|
9a8d55 |
index 8349e9a..a3dcb22 100644
|
|
|
9a8d55 |
--- a/rndr_stats.c
|
|
|
9a8d55 |
+++ b/rndr_stats.c
|
|
|
9a8d55 |
@@ -147,6 +147,9 @@ static void render(int isdb, char *pre, int rflags, const char *pptxt,
|
|
|
9a8d55 |
else if (rflags & PT_USESTR) {
|
|
|
9a8d55 |
printf("%s%s", seps[isdb], sval);
|
|
|
9a8d55 |
}
|
|
|
9a8d55 |
+ else if (rflags & PT_USERND) {
|
|
|
9a8d55 |
+ printf("%s%.0f", seps[isdb], dval);
|
|
|
9a8d55 |
+ }
|
|
|
9a8d55 |
else {
|
|
|
9a8d55 |
printf("%s%.2f", seps[isdb], dval);
|
|
|
9a8d55 |
}
|
|
|
9a8d55 |
@@ -2808,5 +2811,74 @@ __print_funct_t render_pwr_usb_stats(struct activity *a, int isdb, char *pre,
|
|
|
9a8d55 |
__print_funct_t render_filesystem_stats(struct activity *a, int isdb, char *pre,
|
|
|
9a8d55 |
int curr, unsigned long long itv)
|
|
|
9a8d55 |
{
|
|
|
9a8d55 |
- /* FIXME */
|
|
|
9a8d55 |
+ int i;
|
|
|
9a8d55 |
+ struct stats_filesystem *sfc;
|
|
|
9a8d55 |
+
|
|
|
9a8d55 |
+ for (i = 0; i < a->nr; i++) {
|
|
|
9a8d55 |
+ sfc = (struct stats_filesystem *) ((char *) a->buf[curr] + i * a->msize);
|
|
|
9a8d55 |
+
|
|
|
9a8d55 |
+ if (!sfc->f_blocks)
|
|
|
9a8d55 |
+ /* Size of filesystem is null: We are at the end of the list */
|
|
|
9a8d55 |
+ break;
|
|
|
9a8d55 |
+
|
|
|
9a8d55 |
+ render(isdb, pre, PT_USERND,
|
|
|
9a8d55 |
+ "%s\tMBfsfree",
|
|
|
9a8d55 |
+ "%s",
|
|
|
9a8d55 |
+ cons(sv, sfc->fs_name, NOVAL),
|
|
|
9a8d55 |
+ NOVAL,
|
|
|
9a8d55 |
+ (double) sfc->f_bfree / 1024 / 1024,
|
|
|
9a8d55 |
+ NULL);
|
|
|
9a8d55 |
+
|
|
|
9a8d55 |
+ render(isdb, pre, PT_USERND,
|
|
|
9a8d55 |
+ "%s\tMBfsused",
|
|
|
9a8d55 |
+ NULL,
|
|
|
9a8d55 |
+ cons(sv, sfc->fs_name, NOVAL),
|
|
|
9a8d55 |
+ NOVAL,
|
|
|
9a8d55 |
+ (double) (sfc->f_blocks - sfc->f_bfree) / 1024 / 1024,
|
|
|
9a8d55 |
+ NULL);
|
|
|
9a8d55 |
+
|
|
|
9a8d55 |
+ render(isdb, pre, PT_NOFLAG,
|
|
|
9a8d55 |
+ "%s\t%%fsused",
|
|
|
9a8d55 |
+ NULL,
|
|
|
9a8d55 |
+ cons(sv, sfc->fs_name, NOVAL),
|
|
|
9a8d55 |
+ NOVAL,
|
|
|
9a8d55 |
+ sfc->f_blocks ? SP_VALUE(sfc->f_bfree, sfc->f_blocks, sfc->f_blocks)
|
|
|
9a8d55 |
+ : 0.0,
|
|
|
9a8d55 |
+ NULL);
|
|
|
9a8d55 |
+
|
|
|
9a8d55 |
+ render(isdb, pre, PT_NOFLAG,
|
|
|
9a8d55 |
+ "%s\t%%ufsused",
|
|
|
9a8d55 |
+ NULL,
|
|
|
9a8d55 |
+ cons(sv, sfc->fs_name, NOVAL),
|
|
|
9a8d55 |
+ NOVAL,
|
|
|
9a8d55 |
+ sfc->f_blocks ? SP_VALUE(sfc->f_bavail, sfc->f_blocks, sfc->f_blocks)
|
|
|
9a8d55 |
+ : 0.0,
|
|
|
9a8d55 |
+ NULL);
|
|
|
9a8d55 |
+
|
|
|
9a8d55 |
+ render(isdb, pre, PT_USEINT,
|
|
|
9a8d55 |
+ "%s\tIfree",
|
|
|
9a8d55 |
+ NULL,
|
|
|
9a8d55 |
+ cons(sv, sfc->fs_name, NOVAL),
|
|
|
9a8d55 |
+ sfc->f_ffree,
|
|
|
9a8d55 |
+ NOVAL,
|
|
|
9a8d55 |
+ NULL);
|
|
|
9a8d55 |
+
|
|
|
9a8d55 |
+ render(isdb, pre, PT_USEINT,
|
|
|
9a8d55 |
+ "%s\tIused",
|
|
|
9a8d55 |
+ NULL,
|
|
|
9a8d55 |
+ cons(sv, sfc->fs_name, NOVAL),
|
|
|
9a8d55 |
+ sfc->f_files - sfc->f_ffree,
|
|
|
9a8d55 |
+ NOVAL,
|
|
|
9a8d55 |
+ NULL);
|
|
|
9a8d55 |
+
|
|
|
9a8d55 |
+ render(isdb, pre,
|
|
|
9a8d55 |
+ (DISPLAY_HORIZONTALLY(flags) ? PT_NOFLAG : PT_NEWLIN),
|
|
|
9a8d55 |
+ "%s\t%%Iused",
|
|
|
9a8d55 |
+ NULL,
|
|
|
9a8d55 |
+ cons(sv, sfc->fs_name, NOVAL),
|
|
|
9a8d55 |
+ NOVAL,
|
|
|
9a8d55 |
+ sfc->f_files ? SP_VALUE(sfc->f_ffree, sfc->f_files, sfc->f_files)
|
|
|
9a8d55 |
+ : 0.0,
|
|
|
9a8d55 |
+ NULL);
|
|
|
9a8d55 |
+ }
|
|
|
9a8d55 |
}
|
|
|
9a8d55 |
diff --git a/rndr_stats.h b/rndr_stats.h
|
|
|
9a8d55 |
index ff6452a..9de51b2 100644
|
|
|
9a8d55 |
--- a/rndr_stats.h
|
|
|
9a8d55 |
+++ b/rndr_stats.h
|
|
|
9a8d55 |
@@ -18,6 +18,7 @@
|
|
|
9a8d55 |
#define PT_USEINT 0x0001 /* Use the integer arg, not double nor string */
|
|
|
9a8d55 |
#define PT_NEWLIN 0x0002 /* Terminate the current output line */
|
|
|
9a8d55 |
#define PT_USESTR 0x0004 /* Use the string arg */
|
|
|
9a8d55 |
+#define PT_USERND 0x0008 /* Double value, format %.0f */
|
|
|
9a8d55 |
|
|
|
9a8d55 |
#define NOVAL 0 /* For placeholder zeros */
|
|
|
9a8d55 |
#define DNOVAL 0.0 /* Wilma! */
|
|
|
9a8d55 |
--
|
|
|
9a8d55 |
2.14.3
|
|
|
9a8d55 |
|