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
next prev parent 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).