From patchwork Sun Mar 11 16:26:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tomasz Torcz X-Patchwork-Id: 884263 X-Patchwork-Delegate: dsahern@gmail.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=nordea.com Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zzmr92RJfz9sQs for ; Mon, 12 Mar 2018 03:32:57 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932197AbeCKQcy (ORCPT ); Sun, 11 Mar 2018 12:32:54 -0400 Received: from 185-6-29-55-rev.logitus.pl ([185.6.29.55]:15652 "EHLO mother.pipebreaker.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932161AbeCKQcx (ORCPT ); Sun, 11 Mar 2018 12:32:53 -0400 Received: from localhost.localdomain (unknown [IPv6:2001:470:71:68d:121:e6ef:b38f:b2c6]) by mother.pipebreaker.pl (Postfix) with ESMTP id 7EDC11370B54; Sun, 11 Mar 2018 17:26:42 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 mother.pipebreaker.pl 7EDC11370B54 From: Tomasz Torcz To: netdev@vger.kernel.org Cc: Tomasz Torcz Subject: [PATCH] ss: introduce switch to print exact value of data rates Date: Sun, 11 Mar 2018 17:26:21 +0100 Message-Id: <20180311162621.26387-2-tomasz.torcz@nordea.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180311162621.26387-1-tomasz.torcz@nordea.com> References: <7b955a90-788d-07be-19ef-64fb481022ee@gmail.com> <20180311162621.26387-1-tomasz.torcz@nordea.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Introduce -X/--exact switch to disable human-friendly printing of datarates. With the switch, data is not presented as MBps/Kbps. Signed-off-by: Tomasz Torcz --- misc/ss.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/misc/ss.c b/misc/ss.c index e087bef7..61c917e4 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -95,6 +95,7 @@ int resolve_services = 1; int preferred_family = AF_UNSPEC; int show_options; int show_details; +int show_human_readable = 1; int show_users; int show_mem; int show_tcpinfo; @@ -2276,7 +2277,9 @@ static int proc_inet_split_line(char *line, char **loc, char **rem, char **data) static char *sprint_bw(char *buf, double bw) { - if (bw > 1000000.) + if (!show_human_readable) + sprintf(buf, "%.0f", bw); + else if (bw > 1000000.) sprintf(buf, "%.1fM", bw / 1000000.); else if (bw > 1000.) sprintf(buf, "%.1fK", bw / 1000.); @@ -4502,6 +4505,7 @@ static void _usage(FILE *dest) " -s, --summary show socket usage summary\n" " -b, --bpf show bpf filter socket information\n" " -E, --events continually display sockets as they are destroyed\n" +" -X, --exact show exact values, instead of human-readable\n" " -Z, --context display process SELinux security contexts\n" " -z, --contexts display process and socket SELinux security contexts\n" " -N, --net switch to the specified network namespace name\n" @@ -4634,6 +4638,7 @@ static const struct option long_opts[] = { { "net", 1, 0, 'N' }, { "kill", 0, 0, 'K' }, { "no-header", 0, 0, 'H' }, + { "exact", 0, 0, 'X' }, { 0 } }; @@ -4650,7 +4655,7 @@ int main(int argc, char *argv[]) int screen_width = 80; while ((ch = getopt_long(argc, argv, - "dhaletuwxnro460spbEf:miA:D:F:vVzZN:KHS", + "dhaletuwxXnro460spbEf:miA:D:F:vVzZN:KHS", long_opts, NULL)) != EOF) { switch (ch) { case 'n': @@ -4701,6 +4706,9 @@ int main(int argc, char *argv[]) case 'x': filter_af_set(¤t_filter, AF_UNIX); break; + case 'X': + show_human_readable = 0; + break; case OPT_VSOCK: filter_af_set(¤t_filter, AF_VSOCK); break;