All of lore.kernel.org
 help / color / mirror / Atom feed
From: Fred Klassen <fklassen@appneta.com>
To: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
Cc: "David S. Miller" <davem@davemloft.net>,
	Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>,
	Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>,
	Shuah Khan <shuah@kernel.org>,
	Network Development <netdev@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-kselftest@vger.kernel.org,
	Willem de Bruijn <willemb@google.com>
Subject: Re: [PATCH net 4/4] net/udpgso_bench_tx: audit error queue
Date: Mon, 27 May 2019 22:19:51 -0700	[thread overview]
Message-ID: <903DEC70-845B-4C4B-911D-2F203C191C27@appneta.com> (raw)
In-Reply-To: <CAF=yD-+6CRyqL6Fq5y2zpw5nnDitYC7G1c2JAVHZTjyw68DYJg@mail.gmail.com>



> On May 27, 2019, at 6:15 PM, Willem de Bruijn <willemdebruijn.kernel@gmail.com> wrote:
>> I wanted to discuss whether or not to attach a buffer to the
>> recvmsg(fd, &msg, MSG_ERRQUEUE). Without it, I have
>> MSG_TRUNC errors in my msg_flags. Either I have to add
>> a buffer, or ignore that error flag.
> 
> Either sounds reasonable. It is an expected and well understood
> message if underprovisioning the receive data buffer.
> 

I’ll stick with setting up buffers. It will fail if there are any bugs 
introduced in buffer copy routines.

> 
> The netdev list is archived and available through various websites,
> like lore.kernel.org/netdev . As well as the patches with comments at
> patchwork.ozlabs.org/project/netdev/list
> 

Much better. Sure beats hunting down lost emails.


>> I have been wondering about xmit_more
>> myself. I don’t think it changes anything for software timestamps,
>> but it may with hardware timestamps.
> 
> It arguably makes the software timestamp too early if taken on the
> first segment, as the NIC is only informed of all the new descriptors
> when the last segment is written and the doorbell is rung.
> 

Totally makes sense. Possibly this can be improved software TX
timestamps by delaying until just before ring buffer is advanced.
It would have to be updated in each driver. I may have a look at
this once I am complete this patch. Hopefully that one will be a bit
smoother. 

>>> Can you elaborate on this suspected memory leak?
>> 
>> A user program cannot free a zerocopy buffer until it is reported as free.
>> If zerocopy events are not reported, that could be a memory leak.
>> 
>> I may have a fix. I have added a -P option when I am running an audit.
>> It doesn’t appear to affect performance, and since implementing it I have
>> received all error messages expected for both timestamp and zerocopy.
>> 
>> I am still testing.
> 
> I see, a userspace leak from lack of completion notification.
> 
> If the issue is a few missing notifications at the end of the run,
> then perhaps cfg_waittime_ms is too short.
> 

I’ll get back to you when I have tested this more thoroughly. Early results
suggest that adding the -P poll() option has fixed it without any appreciable
performance hit. I’ll share raw results with you, and we can make a final
decision together.

>> Should the test have failed at this point? I did return an error(), but
>> the script kept running.
> 
> This should normally be cause for test failure, I think yes. Though
> it's fine to send the code for review and possibly even merge, so that
> I can take a look.
> 

Sounds like udpgso_bench.sh needs a ’set -e’ to ensure it stops on
first error.


WARNING: multiple messages have this Message-ID (diff)
From: fklassen at appneta.com (Fred Klassen)
Subject: [PATCH net 4/4] net/udpgso_bench_tx: audit error queue
Date: Mon, 27 May 2019 22:19:51 -0700	[thread overview]
Message-ID: <903DEC70-845B-4C4B-911D-2F203C191C27@appneta.com> (raw)
In-Reply-To: <CAF=yD-+6CRyqL6Fq5y2zpw5nnDitYC7G1c2JAVHZTjyw68DYJg@mail.gmail.com>



> On May 27, 2019, at 6:15 PM, Willem de Bruijn <willemdebruijn.kernel at gmail.com> wrote:
>> I wanted to discuss whether or not to attach a buffer to the
>> recvmsg(fd, &msg, MSG_ERRQUEUE). Without it, I have
>> MSG_TRUNC errors in my msg_flags. Either I have to add
>> a buffer, or ignore that error flag.
> 
> Either sounds reasonable. It is an expected and well understood
> message if underprovisioning the receive data buffer.
> 

I’ll stick with setting up buffers. It will fail if there are any bugs 
introduced in buffer copy routines.

> 
> The netdev list is archived and available through various websites,
> like lore.kernel.org/netdev . As well as the patches with comments at
> patchwork.ozlabs.org/project/netdev/list
> 

Much better. Sure beats hunting down lost emails.


>> I have been wondering about xmit_more
>> myself. I don’t think it changes anything for software timestamps,
>> but it may with hardware timestamps.
> 
> It arguably makes the software timestamp too early if taken on the
> first segment, as the NIC is only informed of all the new descriptors
> when the last segment is written and the doorbell is rung.
> 

Totally makes sense. Possibly this can be improved software TX
timestamps by delaying until just before ring buffer is advanced.
It would have to be updated in each driver. I may have a look at
this once I am complete this patch. Hopefully that one will be a bit
smoother. 

>>> Can you elaborate on this suspected memory leak?
>> 
>> A user program cannot free a zerocopy buffer until it is reported as free.
>> If zerocopy events are not reported, that could be a memory leak.
>> 
>> I may have a fix. I have added a -P option when I am running an audit.
>> It doesn’t appear to affect performance, and since implementing it I have
>> received all error messages expected for both timestamp and zerocopy.
>> 
>> I am still testing.
> 
> I see, a userspace leak from lack of completion notification.
> 
> If the issue is a few missing notifications at the end of the run,
> then perhaps cfg_waittime_ms is too short.
> 

I’ll get back to you when I have tested this more thoroughly. Early results
suggest that adding the -P poll() option has fixed it without any appreciable
performance hit. I’ll share raw results with you, and we can make a final
decision together.

>> Should the test have failed at this point? I did return an error(), but
>> the script kept running.
> 
> This should normally be cause for test failure, I think yes. Though
> it's fine to send the code for review and possibly even merge, so that
> I can take a look.
> 

Sounds like udpgso_bench.sh needs a ’set -e’ to ensure it stops on
first error.

WARNING: multiple messages have this Message-ID (diff)
From: fklassen@appneta.com (Fred Klassen)
Subject: [PATCH net 4/4] net/udpgso_bench_tx: audit error queue
Date: Mon, 27 May 2019 22:19:51 -0700	[thread overview]
Message-ID: <903DEC70-845B-4C4B-911D-2F203C191C27@appneta.com> (raw)
Message-ID: <20190528051951.K6vsp4oGohVQuyjM829yKgrRGStoQXMiFFTU4-1Sm_o@z> (raw)
In-Reply-To: <CAF=yD-+6CRyqL6Fq5y2zpw5nnDitYC7G1c2JAVHZTjyw68DYJg@mail.gmail.com>



> On May 27, 2019,@6:15 PM, Willem de Bruijn <willemdebruijn.kernel@gmail.com> wrote:
>> I wanted to discuss whether or not to attach a buffer to the
>> recvmsg(fd, &msg, MSG_ERRQUEUE). Without it, I have
>> MSG_TRUNC errors in my msg_flags. Either I have to add
>> a buffer, or ignore that error flag.
> 
> Either sounds reasonable. It is an expected and well understood
> message if underprovisioning the receive data buffer.
> 

I’ll stick with setting up buffers. It will fail if there are any bugs 
introduced in buffer copy routines.

> 
> The netdev list is archived and available through various websites,
> like lore.kernel.org/netdev . As well as the patches with comments at
> patchwork.ozlabs.org/project/netdev/list
> 

Much better. Sure beats hunting down lost emails.


>> I have been wondering about xmit_more
>> myself. I don’t think it changes anything for software timestamps,
>> but it may with hardware timestamps.
> 
> It arguably makes the software timestamp too early if taken on the
> first segment, as the NIC is only informed of all the new descriptors
> when the last segment is written and the doorbell is rung.
> 

Totally makes sense. Possibly this can be improved software TX
timestamps by delaying until just before ring buffer is advanced.
It would have to be updated in each driver. I may have a look at
this once I am complete this patch. Hopefully that one will be a bit
smoother. 

>>> Can you elaborate on this suspected memory leak?
>> 
>> A user program cannot free a zerocopy buffer until it is reported as free.
>> If zerocopy events are not reported, that could be a memory leak.
>> 
>> I may have a fix. I have added a -P option when I am running an audit.
>> It doesn’t appear to affect performance, and since implementing it I have
>> received all error messages expected for both timestamp and zerocopy.
>> 
>> I am still testing.
> 
> I see, a userspace leak from lack of completion notification.
> 
> If the issue is a few missing notifications at the end of the run,
> then perhaps cfg_waittime_ms is too short.
> 

I’ll get back to you when I have tested this more thoroughly. Early results
suggest that adding the -P poll() option has fixed it without any appreciable
performance hit. I’ll share raw results with you, and we can make a final
decision together.

>> Should the test have failed at this point? I did return an error(), but
>> the script kept running.
> 
> This should normally be cause for test failure, I think yes. Though
> it's fine to send the code for review and possibly even merge, so that
> I can take a look.
> 

Sounds like udpgso_bench.sh needs a ’set -e’ to ensure it stops on
first error.

  reply	other threads:[~2019-05-28  5:19 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-23 21:06 [PATCH net 0/4] Allow TX timestamp with UDP GSO Fred Klassen
2019-05-23 21:06 ` Fred Klassen
2019-05-23 21:06 ` fklassen
2019-05-23 21:06 ` [PATCH net 1/4] net/udp_gso: " Fred Klassen
2019-05-23 21:06   ` Fred Klassen
2019-05-23 21:06   ` fklassen
2019-05-23 21:39   ` Willem de Bruijn
2019-05-23 21:39     ` Willem de Bruijn
2019-05-23 21:39     ` willemdebruijn.kernel
2019-05-24  1:38     ` Fred Klassen
2019-05-24  1:38       ` Fred Klassen
2019-05-24  1:38       ` fklassen
2019-05-24  4:53       ` Willem de Bruijn
2019-05-24  4:53         ` Willem de Bruijn
2019-05-24  4:53         ` willemdebruijn.kernel
2019-05-24 16:34         ` Fred Klassen
2019-05-24 16:34           ` Fred Klassen
2019-05-24 16:34           ` fklassen
2019-05-24 19:29           ` Willem de Bruijn
2019-05-24 19:29             ` Willem de Bruijn
2019-05-24 19:29             ` willemdebruijn.kernel
2019-05-24 22:01             ` Fred Klassen
2019-05-24 22:01               ` Fred Klassen
2019-05-24 22:01               ` fklassen
2019-05-25 15:20               ` Willem de Bruijn
2019-05-25 15:20                 ` Willem de Bruijn
2019-05-25 15:20                 ` willemdebruijn.kernel
2019-05-25 18:47                 ` Fred Klassen
2019-05-25 18:47                   ` Fred Klassen
2019-05-25 18:47                   ` fklassen
2019-05-27  1:30                   ` Willem de Bruijn
2019-05-27  1:30                     ` Willem de Bruijn
2019-05-27  1:30                     ` willemdebruijn.kernel
2019-05-27  2:09                     ` Willem de Bruijn
2019-05-27  2:09                       ` Willem de Bruijn
2019-05-27  2:09                       ` willemdebruijn.kernel
2019-05-25 20:46     ` Fred Klassen
2019-05-25 20:46       ` Fred Klassen
2019-05-25 20:46       ` fklassen
2019-05-23 21:59   ` Willem de Bruijn
2019-05-23 21:59     ` Willem de Bruijn
2019-05-23 21:59     ` willemdebruijn.kernel
2019-05-25 20:09     ` Fred Klassen
2019-05-25 20:09       ` Fred Klassen
2019-05-25 20:09       ` fklassen
2019-05-25 20:47     ` Fred Klassen
2019-05-25 20:47       ` Fred Klassen
2019-05-25 20:47       ` fklassen
2019-05-23 21:06 ` [PATCH net 2/4] net/udpgso_bench_tx: options to exercise TX CMSG Fred Klassen
2019-05-23 21:06   ` Fred Klassen
2019-05-23 21:06   ` fklassen
2019-05-23 21:45   ` Willem de Bruijn
2019-05-23 21:45     ` Willem de Bruijn
2019-05-23 21:45     ` willemdebruijn.kernel
2019-05-23 21:52   ` Willem de Bruijn
2019-05-23 21:52     ` Willem de Bruijn
2019-05-23 21:52     ` willemdebruijn.kernel
2019-05-24  2:10     ` Fred Klassen
2019-05-24  2:10       ` Fred Klassen
2019-05-24  2:10       ` fklassen
2019-05-23 21:06 ` [PATCH net 3/4] net/udpgso_bench_tx: fix sendmmsg on unconnected socket Fred Klassen
2019-05-23 21:06   ` Fred Klassen
2019-05-23 21:06   ` fklassen
2019-05-23 21:06 ` [PATCH net 4/4] net/udpgso_bench_tx: audit error queue Fred Klassen
2019-05-23 21:06   ` Fred Klassen
2019-05-23 21:06   ` fklassen
2019-05-23 21:56   ` Willem de Bruijn
2019-05-23 21:56     ` Willem de Bruijn
2019-05-23 21:56     ` willemdebruijn.kernel
2019-05-24  1:27     ` Fred Klassen
2019-05-24  1:27       ` Fred Klassen
2019-05-24  1:27       ` fklassen
2019-05-24  5:02       ` Willem de Bruijn
2019-05-24  5:02         ` Willem de Bruijn
2019-05-24  5:02         ` willemdebruijn.kernel
2019-05-27 21:30     ` Fred Klassen
2019-05-27 21:30       ` Fred Klassen
2019-05-27 21:30       ` fklassen
2019-05-27 21:46       ` Willem de Bruijn
2019-05-27 21:46         ` Willem de Bruijn
2019-05-27 21:46         ` willemdebruijn.kernel
2019-05-27 22:56         ` Fred Klassen
2019-05-27 22:56           ` Fred Klassen
2019-05-27 22:56           ` fklassen
2019-05-28  1:15           ` Willem de Bruijn
2019-05-28  1:15             ` Willem de Bruijn
2019-05-28  1:15             ` willemdebruijn.kernel
2019-05-28  5:19             ` Fred Klassen [this message]
2019-05-28  5:19               ` Fred Klassen
2019-05-28  5:19               ` fklassen
2019-05-28 15:08               ` Willem de Bruijn
2019-05-28 15:08                 ` Willem de Bruijn
2019-05-28 15:08                 ` willemdebruijn.kernel
2019-05-28 16:57                 ` Fred Klassen
2019-05-28 16:57                   ` Fred Klassen
2019-05-28 16:57                   ` fklassen
2019-05-28 17:07                   ` Willem de Bruijn
2019-05-28 17:07                     ` Willem de Bruijn
2019-05-28 17:07                     ` willemdebruijn.kernel
2019-05-28 17:11                     ` Willem de Bruijn
2019-05-28 17:11                       ` Willem de Bruijn
2019-05-28 17:11                       ` willemdebruijn.kernel

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=903DEC70-845B-4C4B-911D-2F203C191C27@appneta.com \
    --to=fklassen@appneta.com \
    --cc=davem@davemloft.net \
    --cc=kuznet@ms2.inr.ac.ru \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=shuah@kernel.org \
    --cc=willemb@google.com \
    --cc=willemdebruijn.kernel@gmail.com \
    --cc=yoshfuji@linux-ipv6.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.