All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Török Edwin" <edwintorok@gmail.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Ingo Molnar <mingo@elte.hu>,
	rml@tech9.net, Linux Kernel <linux-kernel@vger.kernel.org>,
	"Thomas Gleixner mingo@redhat.com" <tglx@linutronix.de>,
	"H. Peter Anvin" <hpa@zytor.com>
Subject: Re: Quad core CPUs loaded at only 50% when running a CPU and mmap intensive multi-threaded task
Date: Mon, 25 Aug 2008 13:22:16 +0300	[thread overview]
Message-ID: <48B287D8.1000000@gmail.com> (raw)
In-Reply-To: <1219658527.8515.16.camel@twins>

On 2008-08-25 13:02, Peter Zijlstra wrote:
> On Mon, 2008-08-25 at 12:49 +0300, Török Edwin wrote:
>   
>> On 2008-08-25 12:23, Peter Zijlstra wrote:
>>     
>>> On Mon, 2008-08-25 at 10:04 +0300, edwin wrote:
>>>   
>>>       
>>>> Peter Zijlstra wrote:
>>>>     
>>>>         
>>>>> On Mon, 2008-08-25 at 00:01 +0300, Török Edwin wrote:
>>>>>   
>>>>>       
>>>>>           
>>>>>> Hi Ingo,
>>>>>>
>>>>>> When I run clamd (www.clamav.net), I can only get to load my CPU 50% 
>>>>>> (according to top), and disks at 30% (according to iostat -x 3), 
>>>>>> regardless how many threads I set (I tried 4, 8, 16, 32).
>>>>>>     
>>>>>>         
>>>>>>             
>>>>> Can you share your .config, and prehaps tell what kernel version did
>>>>> work for you?
>>>>>       
>>>>>           
>>>> Sorry, I forgot to include the .config, its at the end of this mail (the 
>>>> cfs debug info output included the .config though)
>>>>
>>>> Well, I just bought this new box, so there isn't a kernel version that I 
>>>> know that worked on this hardware (but I am trying to boot some older 
>>>> versions now).
>>>> However on my previous box (Athlon64, non-SMP) I have never seen such a 
>>>> problem (that the CPU is loaded only 50% with clamd) and I've been
>>>> running 2.6.26 and 2.6.27-rc4 there too.
>>>>
>>>> Details below, short summary here:
>>>> 2.6.24: WORKS, clamd 400% CPU, testprogram runs in 27.4 seconds, 67% CPU 
>>>> load; and 28.5 seconds w/o setting affinity
>>>> 2.6.25+: DOES NOT WORK, clamd 200%-300% CPU, testprogram runs in 38-40 
>>>> seconds, 48-48% CPU load, and 47-56 seconds w/o setting affinity
>>>>
>>>> Debian has 2.6.18, 2.6.22, 2.6.24, 2.6.25, 2.6.26.
>>>> 2.6.22 won't work with my lvm, so I can't boot that, so I tried 2.6.24:
>>>>
>>>> 2.6.24 doesn't have sched_debug enabled in the stock kernel 
>>>> unfortunately, but the output of cfs-debug-info.sh is available here, 
>>>> maybe it contains some useful info:
>>>> http://edwintorok.googlepages.com/testrun-1219645937.tar.gz
>>>>
>>>> Is this enough info for you to reproduce the problem, or do you want me 
>>>> to try and bisect?
>>>>     
>>>>         
>>> No, I think I know what's going on..
>>>
>>> mmap() and munmap() need to take the mmap_sem for writing (since they
>>> modify the memory map) and you let each thread (one for each cpu) take
>>> that process wide lock, twice, for a million times.
>>>   
>>>       
>> Are you referring to the mmap_sem lock, or my mutex lock around 
>> all_thread_time?
>>     
>
> mmap_sem, its process wide, and your test prog bangs on it like there's
> no tomorrow.
>   

Well, the real program (clamd) that this testprogram tries to simulate 
does an mmap for almost every file, and I have lots of small files.
6.5G, 114122 files, average size 57k.

I'll run latencytop again, last time it has showed 100ms - 500ms latency 
for clamd, and it was about mmap, I'll provide you with the exact output.

>>> Guess what happens ;-)
>>>       
>> So the problem is that doing mmap() doesn't scale well with multiple 
>> threads, because there is contention on mmap_sem?
>>     
>
> Indeed.
>
>   
>> Why did 2.6.24 seem to work better?
>>     
>
> Perhaps the scheduler overhead did increase, can you try:
>
> echo NO_HRTICK > /debug/sched_features
>
> (after mounting debugfs on /debug, or adjusting the path to where you do
> have it mounted)
>
> That might cause some overhead on very high context switch rates.

No difference, and turning off the other features from sched_features 
doesn't seem to help either.

Best regards,
--Edwin

  reply	other threads:[~2008-08-25 10:22 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <48B1CC15.2040006@gmail.com>
2008-08-25  5:51 ` Quad core CPUs loaded at only 50% when running a CPU and mmap intensive multi-threaded task Peter Zijlstra
2008-08-25  7:04   ` edwin
2008-08-25  9:23     ` Peter Zijlstra
2008-08-25  9:49       ` Török Edwin
2008-08-25 10:02         ` Peter Zijlstra
2008-08-25 10:22           ` Török Edwin [this message]
2008-08-25 10:36             ` Peter Zijlstra
2008-08-25 11:00               ` edwin
2008-08-25 11:30                 ` edwin
2008-08-25 11:41                 ` Peter Zijlstra
2008-08-25 13:48                   ` Theodore Tso
2008-08-26  8:12                     ` Andi Kleen
2008-09-08 19:10                       ` Török Edwin
2008-09-12 19:16                         ` mmap/munmap latency on multithreaded apps, because pagefaults hold mmap_sem during disk read Török Edwin
2008-09-12 19:16                           ` Török Edwin
2008-09-12 19:35                           ` Mike Waychison
2008-09-12 19:35                             ` Mike Waychison
2008-09-12 20:10                             ` Török Edwin
2008-09-12 20:10                               ` Török Edwin
2008-08-25 10:37             ` Quad core CPUs loaded at only 50% when running a CPU and mmap intensive multi-threaded task Peter Zijlstra

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=48B287D8.1000000@gmail.com \
    --to=edwintorok@gmail.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=peterz@infradead.org \
    --cc=rml@tech9.net \
    --cc=tglx@linutronix.de \
    /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.