From: Arthur Marsh <arthur.marsh@internode.on.net>
To: Clemens Ladisch <cladisch@googlemail.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>,
alsa-user@lists.sourceforge.net, linux-kernel@vger.kernel.org
Subject: Re: [Alsa-user] new source of MIDI playback slow-down identified - 5a03b051ed87e72b959f32a86054e1142ac4cf55 thp: use compaction in kswapd for GFP_ATOMIC order > 0
Date: Tue, 22 Feb 2011 18:16:48 +1030 [thread overview]
Message-ID: <4D6369E8.7080708@internode.on.net> (raw)
In-Reply-To: <4D6367B3.9050306@googlemail.com>
[-- Attachment #1: Type: text/plain, Size: 1646 bytes --]
Clemens Ladisch wrote, on 22/02/11 18:07:
> Arthur Marsh wrote:
>> I'm experiencing MIDI playback slow-downs when I'm observing kswapd0
>> active (a few percent of cpu in top output) in recent kernels.
>>
>> I git-bisected the problem down to:
>>
>> commit 5a03b051ed87e72b959f32a86054e1142ac4cf55
>> Author: Andrea Arcangeli<aarcange@redhat.com>
>> Date: Thu Jan 13 15:47:11 2011 -0800
>>
>> thp: use compaction in kswapd for GFP_ATOMIC order> 0
>>
>> This takes advantage of memory compaction to properly generate pages of
>> order> 0 if regular page reclaim fails and priority level becomes more
>> severe and we don't reach the proper watermarks.
>>
>> Signed-off-by: Andrea Arcangeli<aarcange@redhat.com>
>> Signed-off-by: Andrew Morton<akpm@linux-foundation.org>
>> Signed-off-by: Linus Torvalds<torvalds@linux-foundation.org>
>>
>> I ran git-bisect over the weekend, building and installing ALSA 1.0.24
>> with each kernel. After identifying the above commit, I rebuilt the 2.6
>> head with that commit reverted and verified that the problem was no
>> longer present.
>
> Apparently, huge page compaction disables interrupts for much too long.
>
>> MIDI playback was via aplaymidi -p 17:0 to a Soundblaster Audigy 2 ZS
>> (SB0350) wavetable.
>
> The ALSA sequencer uses either the system timer or an HR timer at 1 kHz
> to deliver MIDI commands (notes); the wavetable driver requires its own
> interrupts in regular 5.3 ms intervals.
>
>
> Regards,
> Clemens
>
Hi, Andrea Arcangeli's "z1" patch (attached) solved the problem for me,
even with significant swap activity.
Regards,
Arthur.
[-- Attachment #2: z1 --]
[-- Type: text/plain, Size: 1412 bytes --]
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 17497d0..5718bca 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2385,7 +2385,6 @@ loop_again:
* cause too much scanning of the lower zones.
*/
for (i = 0; i <= end_zone; i++) {
- int compaction;
struct zone *zone = pgdat->node_zones + i;
int nr_slab;
@@ -2408,7 +2407,7 @@ loop_again:
* zone has way too many pages free already.
*/
if (!zone_watermark_ok_safe(zone, order,
- 8*high_wmark_pages(zone), end_zone, 0))
+ high_wmark_pages(zone), end_zone, 0))
shrink_zone(priority, zone, &sc);
reclaim_state->reclaimed_slab = 0;
nr_slab = shrink_slab(sc.nr_scanned, GFP_KERNEL,
@@ -2416,24 +2415,23 @@ loop_again:
sc.nr_reclaimed += reclaim_state->reclaimed_slab;
total_scanned += sc.nr_scanned;
- compaction = 0;
+#if 0
if (order &&
zone_watermark_ok(zone, 0,
high_wmark_pages(zone),
end_zone, 0) &&
!zone_watermark_ok(zone, order,
high_wmark_pages(zone),
- end_zone, 0)) {
+ end_zone, 0))
compact_zone_order(zone,
order,
sc.gfp_mask, false,
COMPACT_MODE_KSWAPD);
- compaction = 1;
- }
+#endif
if (zone->all_unreclaimable)
continue;
- if (!compaction && nr_slab == 0 &&
+ if (nr_slab == 0 &&
!zone_reclaimable(zone))
zone->all_unreclaimable = 1;
/*
next prev parent reply other threads:[~2011-02-22 7:46 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <g0ia38-jj6.ln1@ppp121-45-136-118.lns11.adl6.internode.on.net>
2011-02-22 7:37 ` [Alsa-user] new source of MIDI playback slow-down identified - 5a03b051ed87e72b959f32a86054e1142ac4cf55 thp: use compaction in kswapd for GFP_ATOMIC order > 0 Clemens Ladisch
2011-02-22 7:46 ` Arthur Marsh [this message]
2011-02-22 13:40 ` Andrea Arcangeli
2011-02-22 16:15 ` Andrea Arcangeli
2011-02-22 16:59 ` Mel Gorman
2011-02-22 17:08 ` Andrea Arcangeli
2011-02-22 17:37 ` Mel Gorman
2011-02-22 17:47 ` Arthur Marsh
2011-02-22 19:43 ` Andrea Arcangeli
2011-02-23 9:15 ` Mel Gorman
2011-02-23 11:41 ` Arthur Marsh
2011-02-23 13:50 ` Clemens Ladisch
2011-02-23 17:01 ` Mel Gorman
2011-02-23 17:40 ` Andrea Arcangeli
2011-02-23 16:24 ` Andrea Arcangeli
2011-02-23 16:36 ` Andrea Arcangeli
2011-02-23 16:40 ` Andrea Arcangeli
2011-02-23 16:47 ` Andrea Arcangeli
2011-02-23 16:55 ` Andrea Arcangeli
2011-02-23 20:07 ` Arthur Marsh
2011-02-23 21:25 ` Andrea Arcangeli
2011-02-23 21:55 ` Arthur Marsh
2011-02-23 23:59 ` Andrea Arcangeli
2011-02-24 1:40 ` Arthur Marsh
2011-02-24 1:54 ` Andrea Arcangeli
2011-02-26 6:43 ` Andrea Arcangeli
2011-02-27 8:48 ` Arthur Marsh
2011-02-23 17:10 ` Mel Gorman
2011-02-23 17:27 ` Andrea Arcangeli
2011-02-23 17:44 ` Mel Gorman
2011-02-23 18:14 ` Andrea Arcangeli
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=4D6369E8.7080708@internode.on.net \
--to=arthur.marsh@internode.on.net \
--cc=aarcange@redhat.com \
--cc=alsa-user@lists.sourceforge.net \
--cc=cladisch@googlemail.com \
--cc=linux-kernel@vger.kernel.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