[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20180111211005.c6gb5ktuc4gupibl@kafai-mbp.dhcp.thefacebook.com>
Date: Thu, 11 Jan 2018 13:10:05 -0800
From: Martin KaFai Lau <kafai@...com>
To: John Fastabend <john.fastabend@...il.com>
CC: <borkmann@...earbox.net>, <ast@...nel.org>,
<netdev@...r.kernel.org>
Subject: Re: [bpf-next PATCH v2 5/7] bpf: sockmap sample add base test
without any BPF for comparison
On Wed, Jan 10, 2018 at 10:40:11AM -0800, John Fastabend wrote:
> Add a base test that does not use BPF hooks to test baseline case.
>
> Signed-off-by: John Fastabend <john.fastabend@...il.com>
> ---
> samples/sockmap/sockmap_user.c | 26 +++++++++++++++++++++-----
> 1 file changed, 21 insertions(+), 5 deletions(-)
>
> diff --git a/samples/sockmap/sockmap_user.c b/samples/sockmap/sockmap_user.c
> index 812fc7e..eb19d14 100644
> --- a/samples/sockmap/sockmap_user.c
> +++ b/samples/sockmap/sockmap_user.c
> @@ -285,18 +285,24 @@ static int msg_loop(int fd, int iov_count, int iov_length, int cnt,
>
> static float giga = 1000000000;
>
> -static int sendmsg_test(int iov_count, int iov_buf, int cnt, int verbose)
> +static int sendmsg_test(int iov_count, int iov_buf, int cnt,
> + int verbose, bool base)
> {
> - int txpid, rxpid, err = 0;
> + float sent_Bps = 0, recvd_Bps = 0;
> + int rx_fd, txpid, rxpid, err = 0;
> struct msg_stats s = {0};
> int status;
> - float sent_Bps = 0, recvd_Bps = 0;
>
> errno = 0;
>
> + if (base)
> + rx_fd = p1;
> + else
> + rx_fd = p2;
> +
> rxpid = fork();
> if (rxpid == 0) {
> - err = msg_loop(p2, iov_count, iov_buf, cnt, &s, false);
> + err = msg_loop(rx_fd, iov_count, iov_buf, cnt, &s, false);
I am likely missing something. After receiving from p1, should the
base-line case also send to c2 which then will be received by p2?
> if (err)
> fprintf(stderr,
> "msg_loop_rx: iov_count %i iov_buf %i cnt %i err %i\n",
> @@ -425,6 +431,7 @@ static int forever_ping_pong(int rate, int verbose)
> enum {
> PING_PONG,
> SENDMSG,
> + BASE,
> };
>
> int main(int argc, char **argv)
> @@ -463,6 +470,8 @@ int main(int argc, char **argv)
> test = PING_PONG;
> } else if (memcmp(optarg, "sendmsg", 7) == 0) {
> test = SENDMSG;
> + } else if (memcmp(optarg, "base", 4) == 0) {
> + test = BASE;
> } else {
> usage(argv);
> return -1;
> @@ -488,6 +497,10 @@ int main(int argc, char **argv)
> /* catch SIGINT */
> signal(SIGINT, running_handler);
>
> + /* If base test skip BPF setup */
> + if (test == BASE)
> + goto run;
> +
> if (load_bpf_file(filename)) {
> fprintf(stderr, "load_bpf_file: (%s) %s\n",
> filename, strerror(errno));
> @@ -519,6 +532,7 @@ int main(int argc, char **argv)
> return err;
> }
>
> +run:
> err = sockmap_init_sockets();
> if (err) {
> fprintf(stderr, "ERROR: test socket failed: %d\n", err);
> @@ -528,7 +542,9 @@ int main(int argc, char **argv)
> if (test == PING_PONG)
> err = forever_ping_pong(rate, verbose);
> else if (test == SENDMSG)
> - err = sendmsg_test(iov_count, length, rate, verbose);
> + err = sendmsg_test(iov_count, length, rate, verbose, false);
> + else if (test == BASE)
> + err = sendmsg_test(iov_count, length, rate, verbose, true);
> else
> fprintf(stderr, "unknown test\n");
> out:
>
Powered by blists - more mailing lists