Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754062AbZFHRZu (ORCPT ); Mon, 8 Jun 2009 13:25:50 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752408AbZFHRZl (ORCPT ); Mon, 8 Jun 2009 13:25:41 -0400 Received: from yw-out-2324.google.com ([74.125.46.31]:15751 "EHLO yw-out-2324.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752043AbZFHRZk convert rfc822-to-8bit (ORCPT ); Mon, 8 Jun 2009 13:25:40 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=PfF3tVC2r4oUFrtuD+9vzVO7E7Rv44S24+QRSvfFu1MATMxrOn7s66gmERxHi8EUTo CZyjfj+fkyamYl6JE9bM2++QOOpFO1CGGjfrUrLJub2j/OiwzxTdV08ELgwU1FXpKyBk 9kOG+O9RF/WJPlcrjWu0eAs69xOTdA7ThuuIU= MIME-Version: 1.0 In-Reply-To: <20090608073944.GA12431@localhost> References: <20090519032759.GA7608@localhost> <20090519133422.4ECC.A69D9226@jp.fujitsu.com> <20090519062503.GA9580@localhost> <87pre4nhqf.fsf@basil.nowhere.org> <20090608073944.GA12431@localhost> Date: Tue, 9 Jun 2009 01:18:26 +0800 Message-ID: Subject: Re: [PATCH 2/3] vmscan: make mapped executable pages the first class citizen From: Nai Xia To: Wu Fengguang Cc: Andi Kleen , KOSAKI Motohiro , Christoph Lameter , Andrew Morton , LKML , Elladan , Nick Piggin , Johannes Weiner , Peter Zijlstra , Rik van Riel , "tytso@mit.edu" , "linux-mm@kvack.org" , "minchan.kim@gmail.com" Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 8034 Lines: 185 On Mon, Jun 8, 2009 at 3:39 PM, Wu Fengguang wrote: > On Wed, May 20, 2009 at 07:20:24PM +0800, Andi Kleen wrote: >> One scenario that might be useful to test is what happens when some very large >> processes, all mapped and executable exceed memory and fight each other >> for the working set. Do you have regressions then compared to without >> the patches? > > I managed to carry out some stress tests for memory tight desktops. > The outcome is encouraging: clock time and major faults are reduced > by 50%, and pswpin numbers are reduced to ~1/3. > > Here is the test scenario. > - nfsroot gnome desktop with 512M physical memory > - run some programs, and switch between the existing windows after > ?starting each new program. I think this is a story of VM_EXEC pages fighting against other kind of pages, but as Andi said, did you test real regression case of VM_EXEC pages fighting against each other? " One scenario that might be useful to test is what happens when some very large processes, all mapped and executable exceed memory and fight each other for the working set. Do you have regressions then compared to without the patches? -Andi " My experices with Compcache(http://code.google.com/p/compcache/) show that it also has similar improvement in similar case on LTSP (http://code.google.com/p/compcache/wiki/Performance). But it does has a non-trivial performance loss even when doing kernel compilation. I am not a little surprised when Andrew said it "There must be some cost somewhere". So you have found the spots where your patch doing great, make double sure it will not do something bad in all places, and that will be perfect. :-) > > The progress timing (seconds) is: > > ?before ? ? ? after ? ?programs > ? ?0.02 ? ? ? ?0.02 ? ?N xeyes > ? ?0.75 ? ? ? ?0.76 ? ?N firefox > ? ?2.02 ? ? ? ?1.88 ? ?N nautilus > ? ?3.36 ? ? ? ?3.17 ? ?N nautilus --browser > ? ?5.26 ? ? ? ?4.89 ? ?N gthumb > ? ?7.12 ? ? ? ?6.47 ? ?N gedit > ? ?9.22 ? ? ? ?8.16 ? ?N xpdf /usr/share/doc/shared-mime-info/shared-mime-info-spec.pdf > ? 13.58 ? ? ? 12.55 ? ?N xterm > ? 15.87 ? ? ? 14.57 ? ?N mlterm > ? 18.63 ? ? ? 17.06 ? ?N gnome-terminal > ? 21.16 ? ? ? 18.90 ? ?N urxvt > ? 26.24 ? ? ? 23.48 ? ?N gnome-system-monitor > ? 28.72 ? ? ? 26.52 ? ?N gnome-help > ? 32.15 ? ? ? 29.65 ? ?N gnome-dictionary > ? 39.66 ? ? ? 36.12 ? ?N /usr/games/sol > ? 43.16 ? ? ? 39.27 ? ?N /usr/games/gnometris > ? 48.65 ? ? ? 42.56 ? ?N /usr/games/gnect > ? 53.31 ? ? ? 47.03 ? ?N /usr/games/gtali > ? 58.60 ? ? ? 52.05 ? ?N /usr/games/iagno > ? 65.77 ? ? ? 55.42 ? ?N /usr/games/gnotravex > ? 70.76 ? ? ? 61.47 ? ?N /usr/games/mahjongg > ? 76.15 ? ? ? 67.11 ? ?N /usr/games/gnome-sudoku > ? 86.32 ? ? ? 75.15 ? ?N /usr/games/glines > ? 92.21 ? ? ? 79.70 ? ?N /usr/games/glchess > ?103.79 ? ? ? 88.48 ? ?N /usr/games/gnomine > ?113.84 ? ? ? 96.51 ? ?N /usr/games/gnotski > ?124.40 ? ? ?102.19 ? ?N /usr/games/gnibbles > ?137.41 ? ? ?114.93 ? ?N /usr/games/gnobots2 > ?155.53 ? ? ?125.02 ? ?N /usr/games/blackjack > ?179.85 ? ? ?135.11 ? ?N /usr/games/same-gnome > ?224.49 ? ? ?154.50 ? ?N /usr/bin/gnome-window-properties > ?248.44 ? ? ?162.09 ? ?N /usr/bin/gnome-default-applications-properties > ?282.62 ? ? ?173.29 ? ?N /usr/bin/gnome-at-properties > ?323.72 ? ? ?188.21 ? ?N /usr/bin/gnome-typing-monitor > ?363.99 ? ? ?199.93 ? ?N /usr/bin/gnome-at-visual > ?394.21 ? ? ?206.95 ? ?N /usr/bin/gnome-sound-properties > ?435.14 ? ? ?224.49 ? ?N /usr/bin/gnome-at-mobility > ?463.05 ? ? ?234.11 ? ?N /usr/bin/gnome-keybinding-properties > ?503.75 ? ? ?248.59 ? ?N /usr/bin/gnome-about-me > ?554.00 ? ? ?276.27 ? ?N /usr/bin/gnome-display-properties > ?615.48 ? ? ?304.39 ? ?N /usr/bin/gnome-network-preferences > ?693.03 ? ? ?342.01 ? ?N /usr/bin/gnome-mouse-properties > ?759.90 ? ? ?388.58 ? ?N /usr/bin/gnome-appearance-properties > ?937.90 ? ? ?508.47 ? ?N /usr/bin/gnome-control-center > ?1109.75 ? ? ?587.57 ? ?N /usr/bin/gnome-keyboard-properties > ?1399.05 ? ? ?758.16 ? ?N : oocalc > ?1524.64 ? ? ?830.03 ? ?N : oodraw > ?1684.31 ? ? ?900.03 ? ?N : ooimpress > ?1874.04 ? ? ?993.91 ? ?N : oomath > ?2115.12 ? ? 1081.89 ? ?N : ooweb > ?2369.02 ? ? 1161.99 ? ?N : oowriter > > Note that the oo* commands are actually commented out. > > The vmstat numbers are (some relevant ones are marked with *): > > ? ? ? ? ? ? ? ? ? ? ? ? ? ?before ? ?after > ?nr_free_pages ? ? ? ? ? ? ?1293 ? ? ?3898 > ?nr_inactive_anon ? ? ? ? ? 59956 ? ? 53460 > ?nr_active_anon ? ? ? ? ? ? 26815 ? ? 30026 > ?nr_inactive_file ? ? ? ? ? 2657 ? ? ?3218 > ?nr_active_file ? ? ? ? ? ? 2019 ? ? ?2806 > ?nr_unevictable ? ? ? ? ? ? 4 ? ? ? ? 4 > ?nr_mlock ? ? ? ? ? ? ? ? ? 4 ? ? ? ? 4 > ?nr_anon_pages ? ? ? ? ? ? ?26706 ? ? 27859 > *nr_mapped ? ? ? ? ? ? ? ? ?3542 ? ? ?4469 > ?nr_file_pages ? ? ? ? ? ? ?72232 ? ? 67681 > ?nr_dirty ? ? ? ? ? ? ? ? ? 1 ? ? ? ? 0 > ?nr_writeback ? ? ? ? ? ? ? 123 ? ? ? 19 > ?nr_slab_reclaimable ? ? ? ?3375 ? ? ?3534 > ?nr_slab_unreclaimable ? ? ?11405 ? ? 10665 > ?nr_page_table_pages ? ? ? ?8106 ? ? ?7864 > ?nr_unstable ? ? ? ? ? ? ? ?0 ? ? ? ? 0 > ?nr_bounce ? ? ? ? ? ? ? ? ?0 ? ? ? ? 0 > *nr_vmscan_write ? ? ? ? ? ?394776 ? ?230839 > ?nr_writeback_temp ? ? ? ? ?0 ? ? ? ? 0 > ?numa_hit ? ? ? ? ? ? ? ? ? 6843353 ? 3318676 > ?numa_miss ? ? ? ? ? ? ? ? ?0 ? ? ? ? 0 > ?numa_foreign ? ? ? ? ? ? ? 0 ? ? ? ? 0 > ?numa_interleave ? ? ? ? ? ?1719 ? ? ?1719 > ?numa_local ? ? ? ? ? ? ? ? 6843353 ? 3318676 > ?numa_other ? ? ? ? ? ? ? ? 0 ? ? ? ? 0 > *pgpgin ? ? ? ? ? ? ? ? ? ? 5954683 ? 2057175 > *pgpgout ? ? ? ? ? ? ? ? ? ?1578276 ? 922744 > *pswpin ? ? ? ? ? ? ? ? ? ? 1486615 ? 512238 > *pswpout ? ? ? ? ? ? ? ? ? ?394568 ? ?230685 > ?pgalloc_dma ? ? ? ? ? ? ? ?277432 ? ?56602 > ?pgalloc_dma32 ? ? ? ? ? ? ?6769477 ? 3310348 > ?pgalloc_normal ? ? ? ? ? ? 0 ? ? ? ? 0 > ?pgalloc_movable ? ? ? ? ? ?0 ? ? ? ? 0 > ?pgfree ? ? ? ? ? ? ? ? ? ? 7048396 ? 3371118 > ?pgactivate ? ? ? ? ? ? ? ? 2036343 ? 1471492 > ?pgdeactivate ? ? ? ? ? ? ? 2189691 ? 1612829 > ?pgfault ? ? ? ? ? ? ? ? ? ?3702176 ? 3100702 > *pgmajfault ? ? ? ? ? ? ? ? 452116 ? ?201343 > ?pgrefill_dma ? ? ? ? ? ? ? 12185 ? ? 7127 > ?pgrefill_dma32 ? ? ? ? ? ? 334384 ? ?653703 > ?pgrefill_normal ? ? ? ? ? ?0 ? ? ? ? 0 > ?pgrefill_movable ? ? ? ? ? 0 ? ? ? ? 0 > ?pgsteal_dma ? ? ? ? ? ? ? ?74214 ? ? 22179 > ?pgsteal_dma32 ? ? ? ? ? ? ?3334164 ? 1638029 > ?pgsteal_normal ? ? ? ? ? ? 0 ? ? ? ? 0 > ?pgsteal_movable ? ? ? ? ? ?0 ? ? ? ? 0 > ?pgscan_kswapd_dma ? ? ? ? ?1081421 ? 1216199 > ?pgscan_kswapd_dma32 ? ? ? ?58979118 ?46002810 > ?pgscan_kswapd_normal ? ? ? 0 ? ? ? ? 0 > ?pgscan_kswapd_movable ? ? ?0 ? ? ? ? 0 > ?pgscan_direct_dma ? ? ? ? ?2015438 ? 1086109 > ?pgscan_direct_dma32 ? ? ? ?55787823 ?36101597 > ?pgscan_direct_normal ? ? ? 0 ? ? ? ? 0 > ?pgscan_direct_movable ? ? ?0 ? ? ? ? 0 > ?pginodesteal ? ? ? ? ? ? ? 3461 ? ? ?7281 > ?slabs_scanned ? ? ? ? ? ? ?564864 ? ?527616 > ?kswapd_steal ? ? ? ? ? ? ? 2889797 ? 1448082 > ?kswapd_inodesteal ? ? ? ? ?14827 ? ? 14835 > ?pageoutrun ? ? ? ? ? ? ? ? 43459 ? ? 21562 > ?allocstall ? ? ? ? ? ? ? ? 9653 ? ? ?4032 > ?pgrotated ? ? ? ? ? ? ? ? ?384216 ? ?228631 > ?htlb_buddy_alloc_success ? 0 ? ? ? ? 0 > ?htlb_buddy_alloc_fail ? ? ?0 ? ? ? ? 0 > ?unevictable_pgs_culled ? ? 0 ? ? ? ? 0 > ?unevictable_pgs_scanned ? ?0 ? ? ? ? 0 > ?unevictable_pgs_rescued ? ?0 ? ? ? ? 0 > ?unevictable_pgs_mlocked ? ?4 ? ? ? ? 4 > ?unevictable_pgs_munlocked ?0 ? ? ? ? 0 > ?unevictable_pgs_cleared ? ?0 ? ? ? ? 0 > ?unevictable_pgs_stranded ? 0 ? ? ? ? 0 > ?unevictable_pgs_mlockfreed 0 ? ? ? ? 0 > > -- > 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: email@kvack.org > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/