All of lore.kernel.org
 help / color / mirror / Atom feed
From: Milosz Tanski <milosz@adfin.com>
To: Jeremy Allison <jra@samba.org>
Cc: Jan Kara <jack@suse.cz>,
	lsf-pc@lists.linux-foundation.org,
	"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
	linux-mm@kvack.org, Christoph Hellwig <hch@infradead.org>,
	Volker Lendecke <Volker.Lendecke@sernet.de>,
	Jens Axboe <axboe@kernel.dk>
Subject: Re: [Lsf-pc] [LSF/MM TOPIC] async buffered diskio read for userspace apps
Date: Sun, 18 Jan 2015 22:49:36 -0500	[thread overview]
Message-ID: <CANP1eJEF33gndXeBJ0duP2_Bvuv-z6k7OLyuai7vjVdVKRYUWw@mail.gmail.com> (raw)
In-Reply-To: <20150116165506.GA10856@samba2>

On Fri, Jan 16, 2015 at 11:55 AM, Jeremy Allison <jra@samba.org> wrote:
> On Fri, Jan 16, 2015 at 10:44:12AM -0500, Milosz Tanski wrote:
>> On Thu, Jan 15, 2015 at 5:31 PM, Jan Kara <jack@suse.cz> wrote:
>> > On Thu 15-01-15 12:43:23, Milosz Tanski wrote:
>> >> I would like to talk about enhancing the user interfaces for doing
>> >> async buffered disk IO for userspace applications. There's a whole
>> >> class of distributed web applications (most new applications today)
>> >> that would benefit from such an API. Most of them today rely on
>> >> cobbling one together in user space using a threadpool.
>> >>
>> >> The current in kernel AIO interfaces that only support DIRECTIO, they
>> >> were generally designed by and for big database vendors. The consensus
>> >> is that the current AIO interfaces usually lead to decreased
>> >> performance for those app.
>> >>
>> >> I've been developing a new read syscall that allows non-blocking
>> >> diskio read (provided that data is in the page cache). It's analogous
>> >> to what exists today in the network world with recvmsg with MSG_NOWAIT
>> >> flag. The work has been previously described by LWN here:
>> >> https://lwn.net/Articles/612483/
>> >>
>> >> Previous attempts (over the last 12+ years) at non-blocking buffered
>> >> diskio has stalled due to their complexity. I would like to talk about
>> >> the problem, my solution, and get feedback on the course of action.
>> >>
>> >> Over the years I've been building the low level guys of various "web
>> >> applications". That usually involves async network based applications
>> >> (epoll based servers) and the biggest pain point for the last 8+ years
>> >> has been async disk IO.
>> >   Maybe this topic will be sorted out before LSF/MM. I know Andrew had some
>> > objections about doc and was suggesting a solution using fincore() (which
>> > Christoph refuted as being racy). Also there was a pending question
>> > regarding whether the async read in this form will be used by applications.
>> > But if it doesn't get sorted out a short session on the pending issues
>> > would be probably useful.
>> >
>> >                                                                 Honza
>> > --
>> > Jan Kara <jack@suse.cz>
>> > SUSE Labs, CR
>>
>> I've spent the better part of yesterday wrapping up the first cut of
>> samba support to FIO so we can test a modified samba file server with
>> these changes in a few scenarios. Right now it's only sync but I hope
>> to have async in the future. I hope that by the time the summit rolls
>> around I'll have data to share from samba and maybe some other common
>> apps (node.js / twisted).
>
> Don't forget to share the code changes :-). We @ Samba would
> love to see them to keep track !

I have the first version of the FIO cifs support via samba in my fork
of FIO here: https://github.com/mtanski/fio/tree/samba

Right now it only supports sync mode of FIO (eg. can't submit multiple
outstanding requests) but I'm looking into how to make it work with
smb2 read/write calls with the async flag.

Additionally, I'm sure I'm doing some things not quite right in terms
of smbcli usage as it was a decent amount of trial and error to get it
to connect (esp. the setup before smbcli_full_connection). Finally, it
looks like the more complex api I'm using (as opposed to smbclient,
because I want the async calls) doesn't quite fully export all calls I
need via headers / public dyn libs so it's a bit of a hack to get it
to build: https://github.com/mtanski/fio/commit/7fd35359259b409ed023b924cb2758e9efb9950c#diff-1

But it works for my randread tests with zipf and the great part is
that it should provide a flexible way to test samba with many fake
clients and access patterns. So... progress.

-- 
Milosz Tanski
CTO
16 East 34th Street, 15th floor
New York, NY 10016

p: 646-253-9055
e: milosz@adfin.com

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2015-01-19  3:49 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-15 17:43 [LSF/MM TOPIC] async buffered diskio read for userspace apps Milosz Tanski
2015-01-15 18:30 ` Jeff Moyer
2015-01-15 18:30   ` Jeff Moyer
2015-01-16 15:40   ` Milosz Tanski
2015-01-15 22:31 ` [Lsf-pc] " Jan Kara
2015-01-16 15:44   ` Milosz Tanski
2015-01-16 16:55     ` Jeremy Allison
2015-01-16 16:55       ` Jeremy Allison
2015-01-19  3:49       ` Milosz Tanski [this message]
2015-01-19  7:12         ` Jeremy Allison
2015-01-19  7:12           ` Jeremy Allison
2015-01-19  7:34           ` James Bottomley
2015-01-19  7:34             ` James Bottomley
2015-01-19 14:18             ` Milosz Tanski
2015-01-19 15:31               ` Jens Axboe
2015-01-19 15:31                 ` Jens Axboe
2015-01-19 15:49                 ` James Bottomley
2015-01-19 15:49                   ` James Bottomley
2015-01-19 16:48                   ` Jeremy Allison
2015-01-19 16:48                     ` Jeremy Allison
2015-01-19 17:26                     ` James Bottomley
2015-01-19 17:26                       ` James Bottomley
2015-01-19 17:32                       ` Jeremy Allison
2015-01-19 17:36                       ` Richard Sharpe
2015-01-19 20:00                     ` Jens Axboe
2015-01-19 20:00                       ` Jens Axboe
2015-01-19 16:10                 ` Volker Lendecke
2015-01-19 16:10                   ` Volker Lendecke
2015-01-19 16:20                   ` Milosz Tanski
2015-01-19 16:20                     ` Milosz Tanski
2015-01-19 16:50                     ` Jeremy Allison
2015-01-19 16:50                       ` Jeremy Allison
2015-01-23 23:15                     ` Steve French
2015-01-23 23:15                       ` Steve French
2015-01-24  2:17                       ` Jens Axboe
2015-01-24  2:17                         ` Jens Axboe
2015-01-24  5:53                         ` Jeremy Allison
2015-01-24  5:53                           ` Jeremy Allison
2015-01-24 23:00                           ` Jens Axboe
2015-01-24 23:00                             ` Jens Axboe
2015-01-20 19:33                 ` Jens Axboe
2015-01-20 19:33                   ` Jens Axboe
2015-01-20 23:07                   ` Milosz Tanski
2015-01-20 23:07                     ` Milosz Tanski
2015-01-20 23:22                     ` Milosz Tanski
2015-01-20 23:26                       ` Jens Axboe
2015-01-20 23:26                         ` Jens Axboe
2015-01-20 23:30                         ` Jens Axboe
2015-01-20 23:30                           ` Jens Axboe
2015-01-20 23:53                           ` Milosz Tanski
2015-01-20 23:53                             ` Milosz Tanski
2015-01-21 21:17                             ` Jens Axboe
2015-01-23  0:03                               ` Milosz Tanski
2015-01-23  0:10                               ` Milosz Tanski
2015-01-19 17:04               ` Jeremy Allison
2015-01-19 17:04                 ` Jeremy Allison
2015-01-19 17:18                 ` Richard Sharpe
2015-01-19 17:20                   ` Jeremy Allison
2015-01-19 17:20                     ` Jeremy Allison

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=CANP1eJEF33gndXeBJ0duP2_Bvuv-z6k7OLyuai7vjVdVKRYUWw@mail.gmail.com \
    --to=milosz@adfin.com \
    --cc=Volker.Lendecke@sernet.de \
    --cc=axboe@kernel.dk \
    --cc=hch@infradead.org \
    --cc=jack@suse.cz \
    --cc=jra@samba.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lsf-pc@lists.linux-foundation.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.