linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Anand Avati <avati-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Miklos Szeredi <miklos-sUDqSbJrdHQHWmgEVkV9KA@public.gmane.org>
Cc: fuse-devel
	<fuse-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
	Srinivas Eeda
	<srinivas.eeda-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>,
	Nikolaus Rath <nikolaus-BTH8mxji4b0@public.gmane.org>,
	Linux-Fsdevel
	<linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	hanwenn-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
Subject: Re: FUSE: fixes to improve scalability on NUMA systems
Date: Wed, 08 May 2013 02:11:05 -0700	[thread overview]
Message-ID: <518A16A9.7080208@redhat.com> (raw)
In-Reply-To: <CAJfpegvi=Npv1Da2gqDb50xWzO4GHusbrwZMn5tUp8hQ89AJjQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

On Wed May  1 02:53:14 2013, Miklos Szeredi wrote:
> [CC-s added]
>
> On Tue, Apr 30, 2013 at 8:28 PM, Srinivas Eeda <srinivas.eeda-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org> wrote:
>
>> The reason I targeted NUMA is because NUMA machine is where I am seeing
>> significant performance issues. Even on a NUMA system if I bind all user
>> threads to a particular NUMA node, there is no notable performance issue.
>> The test I ran was to start multiple(from 4 to 128) "dd if=/dev/zero
>> of=/dbfsfilesxx bs=1M count=4000"  on a system which has 8 NUMA nodes where
>> each node has 20 cores. So total cpu's were 160.
>>>
>>> http://thread.gmane.org/gmane.comp.file-systems.fuse.devel/11832/
>>>
>>
>> That was a good discussion. The problem discussed here is much more fine
>> grained than mine. Fix I emailed, proposes to bind requests to within a NUMA
>> node vs the above discussion that proposes to bind requests to within cpu.
>> Based on your agreement with Anand Avati I think you prefer to bind requests
>> to cpu.
>
> Yes, that's one direction worth exploring.
>
>> http://article.gmane.org/gmane.comp.file-systems.fuse.devel/11909
>>
>> Patch I proposed can easily be modified to do that. With my current system
>> in mind, currently my patch will split each queue to 8 (on 8 node numa).
>> With the change each queue will be split to 160. Currently my libfuse fix
>> will start 8 threads and bind one to each NUMA node, now it will have to
>> start 160 and bind them to cpus. If you prefer to see some numbers I can
>> modify the patch and run some tests.
>
> Okay.  Though, as I said, I'd first like to see just some small part
> changed e.g. just per-CPU queues, with the background accounting left
> alone.  Yeah, that will probably not improve async read performance as
> well as you like since per-CPU queues are fundamentally about
> synchronous requests.
>
>> Chances of processes migrating to different NUMA node is minimum. So I
>> didn't modify fuse header to carry a queue id. In the worst case where the
>> worker thread gets migrated to different NUMA node my fix will scan all
>> split queues till it find the request. But if we split the queues to per
>> cpu, there is a high chance that processes migrate to different cpu's. So I
>> think it will benefit that I add cpuid to the fuse in/out headers.
>
> Yes, but lets start simple.  Just do per-CPU queues and see what it
> does in different workloads.  Obviously it will regress in some cases,
> that's fine.  We can then see if the direction is good and the
> regressions can be fixed or if it's a completely wrong approach.
>

There is certainly scope for improving in general CPU affinity (as 
shown in the referred thread). It would be sad to let it pass by and 
have only NUMA affinity. As already mentioned, it shouldn't be too hard 
to change your patch for per-CPU behavior.

What is the userspace strategy? To have per CPU (or NUMA node) thread 
pinned with affinity? Do you plan to address starvation (maybe not just 
yet)?

Thanks!
Avati

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may

      parent reply	other threads:[~2013-05-08  9:11 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-30  6:17 FUSE: fixes to improve scalability on NUMA systems Srinivas Eeda
2013-04-30  6:17 ` [PATCH 1/3] fuse: add numa mount option Srinivas Eeda
2013-04-30  6:17 ` [PATCH 2/3] fuse: add fuse numa node struct Srinivas Eeda
2013-04-30  6:17 ` [PATCH 3/3] fuse: split fuse queues to help numa systems Srinivas Eeda
2013-04-30 16:29 ` [fuse-devel] FUSE: fixes to improve scalability on NUMA systems Miklos Szeredi
2013-04-30 18:28   ` Srinivas Eeda
2013-05-01  9:53     ` Miklos Szeredi
     [not found]       ` <CAJfpegvi=Npv1Da2gqDb50xWzO4GHusbrwZMn5tUp8hQ89AJjQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-05-08  9:11         ` Anand Avati [this message]

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=518A16A9.7080208@redhat.com \
    --to=avati-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
    --cc=fuse-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    --cc=hanwenn-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=miklos-sUDqSbJrdHQHWmgEVkV9KA@public.gmane.org \
    --cc=nikolaus-BTH8mxji4b0@public.gmane.org \
    --cc=srinivas.eeda-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.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 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).