linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Amir Vadai <amirv@mellanox.com>
To: Eliezer Tamir <eliezer.tamir@linux.intel.com>
Cc: David Miller <davem@davemloft.net>,
	<linux-kernel@vger.kernel.org>, <netdev@vger.kernel.org>,
	Jesse Brandeburg <jesse.brandeburg@intel.com>,
	Don Skidmore <donald.c.skidmore@intel.com>,
	<e1000-devel@lists.sourceforge.net>,
	Willem de Bruijn <willemb@google.com>,
	Eric Dumazet <erdnetdev@gmail.com>,
	Ben Hutchings <bhutchings@solarflare.com>,
	Andi Kleen <andi@firstfloor.org>, HPA <hpa@zytor.com>,
	Eilon Greenstien <eilong@broadcom.com>,
	Or Gerlitz <or.gerlitz@gmail.com>,
	Eliezer Tamir <eliezer@tamir.org.il>,
	Alex Rosenbaum <Alexr@mellanox.com>,
	Avner Ben Hanoch <avnerb@mellanox.com>,
	Or Kehati <ork@mellanox.com>
Subject: Re: [PATCH] sockperf: add SO_LL socketop support
Date: Wed, 12 Jun 2013 11:36:54 +0300	[thread overview]
Message-ID: <51B83326.4080201@mellanox.com> (raw)
In-Reply-To: <51B73395.7070706@linux.intel.com>

On 11/06/2013 17:26, Eliezer Tamir wrote:
> Add lls socket option support to sockperf.
> Right now we always get the option before set to show the option is
> working properly. We should probably remove that in an official release.
> use --lls (value in usecs) to override global setting.
> ---
> 
>  src/Defs.h       |    3 +++
>  src/SockPerf.cpp |   54
> +++++++++++++++++++++++++++++++++++++++++++++++++++++-
>  2 files changed, 56 insertions(+), 1 deletions(-)
> 
> diff --git a/src/Defs.h b/src/Defs.h
> index e38e3a4..87b45a0 100644
> --- a/src/Defs.h
> +++ b/src/Defs.h
> @@ -161,6 +161,7 @@ enum {
>      OPT_OUTPUT_PRECISION,           //35
>      OPT_CLIENTPORT,                 //36
>      OPT_CLIENTIP,                   //37
> +    OPT_LLS,            //38
>  };
> 
>  #define MODULE_NAME            "sockperf"
> @@ -527,6 +528,8 @@ struct user_params_t {
>  //    bool stream_mode; - use b_stream instead
>      int mthread_server;
>      struct timeval* select_timeout;
> +    unsigned long lls_usecs;
> +    bool lls_is_set;
>      int sock_buff_size;
>      int threads_num;
>      char threads_affinity[MAX_ARGV_SIZE];
> diff --git a/src/SockPerf.cpp b/src/SockPerf.cpp
> index 41daf95..d76320f 100644
> --- a/src/SockPerf.cpp
> +++ b/src/SockPerf.cpp
> @@ -207,6 +207,10 @@ static const AOPT_DESC  common_opt_desc[] =
>          "Limit the lifetime of the message (default 2)."
>      },
>      {
> +        OPT_LLS, AOPT_ARG, aopt_set_literal( 0 ), aopt_set_string(
> "lls" ),
> +        "Turn on LLS via socket option (value = us to poll)."
> +    },
> +    {
>          OPT_BUFFER_SIZE, AOPT_ARG, aopt_set_literal( 0 ),
> aopt_set_string( "buffer-size" ),
>          "Set total socket receive/send buffer <size> in bytes (system
> defined by default)."
>      },
> @@ -292,7 +296,7 @@ static int proc_mode_help( int id, int argc, const
> char **argv )
>      int   i = 0;
> 
>      printf(MODULE_NAME " is a tool for testing network latency and
> throughput.\n");
> -    printf("version %s\n", STR(VERSION));
> +    printf("version %s-lls\n", STR(VERSION));
>      printf("\n");
>      printf("Usage: " MODULE_NAME " <subcommand> [options] [args]\n");
>      printf("Type: \'" MODULE_NAME " <subcommand> --help\' for help on a
> specific subcommand.\n");
> @@ -1789,6 +1793,26 @@ static int parse_common_opt( const AOPT_OBJECT
> *common_obj )
>              s_user_params.is_nonblocked_send = true;
>          }
> 
> +        if ( !rc && aopt_check(common_obj, OPT_LLS) ) {
> +            const char* optarg = aopt_value(common_obj, OPT_LLS);
> +            if (optarg) {
> +                errno = 0;
> +                int value = strtoul(optarg, NULL, 0);
> +                if (errno != 0 || value < 0) {
> +                    log_msg("'-%d' Invalid LLS value: %s", OPT_LLS,
> optarg);
> +                    rc = SOCKPERF_ERR_BAD_ARGUMENT;
> +                }
> +                else {
> +                    s_user_params.lls_usecs = value;
> +                    s_user_params.lls_is_set = true;
> +                }
> +            }
> +            else {
> +                log_msg("'-%d' Invalid value", OPT_LLS);
> +                rc = SOCKPERF_ERR_BAD_ARGUMENT;
> +            }
> +        }
> +
>          if ( !rc && aopt_check(common_obj, OPT_RECV_LOOPING) ) {
> 
>              const char* optarg = aopt_value(common_obj, OPT_RECV_LOOPING);
> @@ -2296,6 +2320,29 @@ int sock_set_reuseaddr(int fd)
>      return rc;
>  }
> 
> +#ifndef SO_LL
> +#define SO_LL 46
> +#endif
> +int sock_set_lls(int fd)
> +{
> +    int rc = SOCKPERF_ERR_NONE;
> +    unsigned long lls;
> +    int size = sizeof(lls);
> +
> +    if(getsockopt(fd, SOL_SOCKET, SO_LL, &lls, (socklen_t *)&size) < 0){
> +        log_err("getsockopt(SO_LL) failed");
> +        return SOCKPERF_ERR_SOCKET;
> +    } else
> +        log_msg("socket option SO_LL default was %lu, changing to %lu",
> lls, s_user_params.lls_usecs);
> +
> +    if (setsockopt(fd, SOL_SOCKET, SO_LL, &(s_user_params.lls_usecs),
> sizeof(s_user_params.lls_usecs)) < 0) {
> +        log_err("setsockopt(SO_LL) failed");
> +        rc = SOCKPERF_ERR_SOCKET;
> +    }
> +    return rc;
> +}
> +
> +
>  int sock_set_snd_rcv_bufs(int fd)
>  {
>      /*
> @@ -2460,6 +2507,11 @@ int prepare_socket(int fd, struct fds_data *p_data)
>      }
> 
>      if (!rc &&
> +            (s_user_params.lls_is_set == true))
> +    {
> +        rc = sock_set_lls(fd);
> +    }
> +    if (!rc &&
>              (s_user_params.sock_buff_size > 0))
>      {
>          rc = sock_set_snd_rcv_bufs(fd);
> 
> 
> 
> 
> 

Eliezer Hi,

Added sockperf maintainers to CC list.

To upload changes to sockperf code, please open a ticket on the sockperf
google code and then submit the patch
(https://code.google.com/p/sockperf/issues/).

You will need to wrap it in " #ifndef w-i-n-d-o-w-s" but sockperf
maintainers can help you do that on the sockperf pages.

You should look at the recently added TOS which is very similar
(https://code.google.com/p/sockperf/issues/detail?id=44).

Amir

  reply	other threads:[~2013-06-12  8:38 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-11 14:24 [PATCH net-next 0/2] net: low latency sockets follow ups Eliezer Tamir
2013-06-11 14:24 ` [PATCH net-next 1/2] net: remove NET_LL_RX_POLL config menue Eliezer Tamir
2013-06-12 22:12   ` David Miller
2013-06-13  2:01     ` Stephen Hemminger
2013-06-13  2:13       ` Eliezer Tamir
2013-06-13  8:00         ` Daniel Borkmann
2013-06-13 10:09           ` Eliezer Tamir
2013-06-11 14:24 ` [PATCH net-next 2/2] net:add socket option for low latency polling Eliezer Tamir
2013-06-11 14:45   ` Eric Dumazet
2013-06-11 15:37     ` Eliezer Tamir
2013-06-11 15:58       ` Eric Dumazet
2013-06-11 20:24   ` Ben Hutchings
2013-06-12  6:39     ` Eliezer Tamir
2013-06-11 14:26 ` [PATCH] sockperf: add SO_LL socketop support Eliezer Tamir
2013-06-12  8:36   ` Amir Vadai [this message]
2013-06-12  8:45     ` Eliezer Tamir
  -- strict thread matches above, loose matches on Subject: below --
2013-06-13 14:46 [PATCH v3 net-next 0/4] net: low latency sockets follow ups Eliezer Tamir
2013-06-13 14:49 ` [PATCH] sockperf: add SO_LL socketop support Eliezer Tamir
2013-06-13 15:03   ` Eliezer Tamir

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51B83326.4080201@mellanox.com \
    --to=amirv@mellanox.com \
    --cc=Alexr@mellanox.com \
    --cc=andi@firstfloor.org \
    --cc=avnerb@mellanox.com \
    --cc=bhutchings@solarflare.com \
    --cc=davem@davemloft.net \
    --cc=donald.c.skidmore@intel.com \
    --cc=e1000-devel@lists.sourceforge.net \
    --cc=eilong@broadcom.com \
    --cc=eliezer.tamir@linux.intel.com \
    --cc=eliezer@tamir.org.il \
    --cc=erdnetdev@gmail.com \
    --cc=hpa@zytor.com \
    --cc=jesse.brandeburg@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=or.gerlitz@gmail.com \
    --cc=ork@mellanox.com \
    --cc=willemb@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).