Filesystems statistics for sar (part 3): Display statistics
authorseb <sysstat@orange.fr.fake>
Mon, 6 May 2013 19:55:04 +0000 (21:55 +0200)
committerseb <sysstat@orange.fr.fake>
Mon, 6 May 2013 19:55:04 +0000 (21:55 +0200)
This patch makes sar display filesystems statistics collected by sadc.
No average statistics are calculated here (filesystems can be unmounted,
then mounted again, making average values meaningless). Instead, sar displays again
the list of filesystems.

pr_stats.c

index 332b10eccbbc8c6644b162f8b9870c5a7cc7f72a..85a3a2082141bf6105e68391013cd16b1a268284 100644 (file)
@@ -2454,7 +2454,39 @@ __print_funct_t print_avg_pwr_usb_stats(struct activity *a, int prev, int curr,
 __print_funct_t stub_print_filesystem_stats(struct activity *a, int prev, int curr,
                                            unsigned long long itv, int dispavg)
 {
-       /* FIXME */
+       int i;
+       struct stats_filesystem *sfc;
+
+       
+       if (dis) {
+               printf("\n%-11s  MBfsfree  MBfsused   %%fsused  %%ufsused"
+                      "     Ifree     Iused    %%Iused FILESYSTEM\n",
+                      (dispavg ? _("Summary") : timestamp[!curr]));
+       }
+
+       for (i = 0; i < a->nr; i++) {
+               sfc = (struct stats_filesystem *) ((char *) a->buf[curr] + i * a->msize);
+                       
+               if (!sfc->f_blocks)
+                       /* Size of filesystem is null: We are at the end of the list */
+                       break;
+                       
+               printf("%-11s %9.0f %9.0f    %6.2f    %6.2f"
+                      " %9llu %9llu    %6.2f %s\n",
+                      (dispavg ? _("Summary") : timestamp[curr]),
+                      (double) sfc->f_bfree / 1024 / 1024,
+                      (double) (sfc->f_blocks - sfc->f_bfree) / 1024 / 1024,
+                      /* f_blocks is not null. But test it anyway ;-) */
+                      sfc->f_blocks ? SP_VALUE(sfc->f_bfree, sfc->f_blocks, sfc->f_blocks)
+                                    : 0.0,
+                      sfc->f_blocks ? SP_VALUE(sfc->f_bavail, sfc->f_blocks, sfc->f_blocks)
+                                    : 0.0,
+                      sfc->f_ffree,
+                      sfc->f_files - sfc->f_ffree,
+                      sfc->f_files ? SP_VALUE(sfc->f_ffree, sfc->f_files, sfc->f_files)
+                                   : 0.0,
+                      sfc->fs_name);
+       }
 }
 
 /*