Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Sep 2021 12:05:19 -0600
From:      Alan Somers <asomers@freebsd.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        src-committers <src-committers@freebsd.org>,  "<dev-commits-src-all@freebsd.org>" <dev-commits-src-all@freebsd.org>, dev-commits-src-main@freebsd.org
Subject:   Re: git: 1ecbc1d8e9d3 - main - cxgbe tom: Don't queue AIO requests on listen sockets.
Message-ID:  <CAOtMX2jjB8T6780HarbCR6rsSkUf%2BQUN55JCGu8h8-=oJTx7zA@mail.gmail.com>
In-Reply-To: <0cec1c04-0b42-6297-37c5-43d1dcb0f8d5@FreeBSD.org>
References:  <202109142046.18EKkfEN043871@gitrepo.freebsd.org> <CAOtMX2iGyPvZvhLFhp9tf2aX=NUnoPLezE5RELxhqJqKGRf2Jw@mail.gmail.com> <fa92e982-4311-fa90-d37f-f8d78042c482@FreeBSD.org> <CAOtMX2hJZ3svh9V6b57LX0xxXeNa1m_zWkYCr2vejNvb0y4AyA@mail.gmail.com> <0cec1c04-0b42-6297-37c5-43d1dcb0f8d5@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Sep 15, 2021 at 11:32 AM John Baldwin <jhb@freebsd.org> wrote:

> On 9/15/21 8:47 AM, Alan Somers wrote:
> > On Wed, Sep 15, 2021 at 9:21 AM John Baldwin <jhb@freebsd.org> wrote:
> >
> >> On 9/14/21 1:53 PM, Alan Somers wrote:
> >>> On Tue, Sep 14, 2021 at 2:46 PM John Baldwin <jhb@freebsd.org> wrote:
> >>>
> >>>> The branch main has been updated by jhb:
> >>>>
> >>>> URL:
> >>>>
> >>
> https://cgit.FreeBSD.org/src/commit/?id=1ecbc1d8e9d3fbcd8e68fc68f0a32944a12ddb1e
> >>>>
> >>>> commit 1ecbc1d8e9d3fbcd8e68fc68f0a32944a12ddb1e
> >>>> Author:     John Baldwin <jhb@FreeBSD.org>
> >>>> AuthorDate: 2021-09-14 20:46:14 +0000
> >>>> Commit:     John Baldwin <jhb@FreeBSD.org>
> >>>> CommitDate: 2021-09-14 20:46:14 +0000
> >>>>
> >>>>       cxgbe tom: Don't queue AIO requests on listen sockets.
> >>>>
> >>>>       This is similar to the fixes in 141fe2dceeae.  One difference is
> >> that
> >>>>       TOE sockets do not change states (listen vs non-listen) once
> >> created,
> >>>>       so no lock is needed for SOLISTENING().
> >>>>
> >>>>       Sponsored by:   Chelsio Communications
> >>>>
> >>>
> >>> I've always wondered: what's the point to using AIO with sockets?
> Can't
> >>> everything socket-related be done better with non-blocking read/write
> and
> >>> kqueue?
> >>
> >> Zero-copy operation with TOE is why TOE uses AIO.  Zero-copy of user
> >> buffers
> >> can't really work with the non-AIO APIs because the user buffer is free
> to
> >> be reused immediately after write(2) (and on the read side you don't
> know
> >> the buffer in advance to allow the NIC to write directly into the use
> >> buffer).
> >>
> >> In theory we could support zero-copy using mb_ext_pgs for aio_write()
> for
> >> the non-TOE case similar to what sendfile() does.
> >>
> >> --
> >> John Baldwin
> >>
> >
> > Interesting.  Do you know of any common applications that include this
> > optimization?  I've been working on the AIO ecosystem for Rust.  It would
> > be good to ensure that this use case works, especially if zero-copy ever
> > works for non-TOE.
>
> I do not, and I rely on patches I merged upstream to netperf (-a and -A
> flags)
> to test it.  I believe there might be some proprietary bits in some FreeBSD
> downstreams that might make use of this.
>
> --
> John Baldwin
>

Do you mean these -a and -A flags, or am I looking in the wrong place?
       -a sizespec
              Alter the send and receive buffer alignments on the local
              system.  This defaults to 8 bytes.

       -A sizespec
              As -a, but for the remote system.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOtMX2jjB8T6780HarbCR6rsSkUf%2BQUN55JCGu8h8-=oJTx7zA>