[systemd-devel] [PATCH] cgtop: raw output option (disable conversion to human-readable units)

Umut Tezduyar Lindskog umut at tezduyar.com
Tue May 26 23:54:17 PDT 2015


Hi Charles,

We have done something similar to this with the cpu accounting. The
option is --cpu=TYPE (There is also hidden key '%' on the tty output
which toggles between different display modes). If this patch will be
taken I think we should be consistent. Maybe something like --io=TYPE
or --memory=TYPE.

Umut

On Fri, May 22, 2015 at 11:56 PM, Charles Duffy <charles at dyfis.net> wrote:
> From: Charles Duffy <chaduffy at cisco.com>
>
> ---
>  src/cgtop/cgtop.c | 28 ++++++++++++++++++++++------
>  1 file changed, 22 insertions(+), 6 deletions(-)
>
> diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c
> index a390cf3..0dbac7f 100644
> --- a/src/cgtop/cgtop.c
> +++ b/src/cgtop/cgtop.c
> @@ -62,6 +62,7 @@ typedef struct Group {
>  static unsigned arg_depth = 3;
>  static unsigned arg_iterations = 0;
>  static bool arg_batch = false;
> +static bool arg_raw = false;
>  static usec_t arg_delay = 1*USEC_PER_SEC;
>
>  static enum {
> @@ -533,15 +534,24 @@ static int display(Hashmap *a) {
>                          printf(" %*s", maxtcpu, format_timespan(buffer, sizeof(buffer), (nsec_t) (g->cpu_usage / NSEC_PER_USEC), 0));
>
>                  if (g->memory_valid)
> -                        printf(" %8s", format_bytes(buffer, sizeof(buffer), g->memory));
> +                        if(arg_raw) {
> +                                printf(" %8ld", g->memory);
> +                        } else {
> +                                printf(" %8s", format_bytes(buffer, sizeof(buffer), g->memory));
> +                        }
>                  else
>                          fputs("        -", stdout);
>
>                  if (g->io_valid) {
> -                        printf(" %8s",
> -                               format_bytes(buffer, sizeof(buffer), g->io_input_bps));
> -                        printf(" %8s",
> -                               format_bytes(buffer, sizeof(buffer), g->io_output_bps));
> +                        if(arg_raw) {
> +                                printf(" %8ld", g->io_input_bps);
> +                                printf(" %8ld", g->io_output_bps);
> +                        } else {
> +                                printf(" %8s",
> +                                       format_bytes(buffer, sizeof(buffer), g->io_input_bps));
> +                                printf(" %8s",
> +                                       format_bytes(buffer, sizeof(buffer), g->io_output_bps));
> +                        }
>                  } else
>                          fputs("        -        -", stdout);
>
> @@ -561,6 +571,7 @@ static void help(void) {
>                 "  -c                  Order by CPU load\n"
>                 "  -m                  Order by memory load\n"
>                 "  -i                  Order by IO load\n"
> +               "  -r                  Provide raw (not human-readable) numbers\n"
>                 "     --cpu[=TYPE]     Show CPU usage as time or percentage (default)\n"
>                 "  -d --delay=DELAY    Delay between updates\n"
>                 "  -n --iterations=N   Run for N iterations before exiting\n"
> @@ -583,6 +594,7 @@ static int parse_argv(int argc, char *argv[]) {
>                  { "delay",      required_argument, NULL, 'd'         },
>                  { "iterations", required_argument, NULL, 'n'         },
>                  { "batch",      no_argument,       NULL, 'b'         },
> +                { "raw",        no_argument,       NULL, 'r'         },
>                  { "depth",      required_argument, NULL, ARG_DEPTH   },
>                  { "cpu",        optional_argument, NULL, ARG_CPU_TYPE},
>                  {}
> @@ -594,7 +606,7 @@ static int parse_argv(int argc, char *argv[]) {
>          assert(argc >= 1);
>          assert(argv);
>
> -        while ((c = getopt_long(argc, argv, "hptcmin:bd:", options, NULL)) >= 0)
> +        while ((c = getopt_long(argc, argv, "hptcmin:brd:", options, NULL)) >= 0)
>
>                  switch (c) {
>
> @@ -649,6 +661,10 @@ static int parse_argv(int argc, char *argv[]) {
>                          arg_batch = true;
>                          break;
>
> +                case 'r':
> +                        arg_raw = true;
> +                        break;
> +
>                  case 'p':
>                          arg_order = ORDER_PATH;
>                          break;
> --
> 2.0.0
>
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel


More information about the systemd-devel mailing list