From: Greg KH <gregkh@suse.de> To: linux-kernel@vger.kernel.org, stable@kernel.org Cc: stable-review@kernel.org, torvalds@linux-foundation.org, akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk, Cliff Wickman <cpw@sgi.com>, kexec@lists.infradead.org, Ingo Molnar <mingo@elte.hu> Subject: [16/66] mm, x86: Saving vmcore with non-lazy freeing of vmas Date: Fri, 19 Nov 2010 14:00:47 -0800 [thread overview] Message-ID: <20101119220123.488019055@clark.site> (raw) In-Reply-To: <20101119220309.GA15562@kroah.com> 2.6.36-stable review patch. If anyone has any objections, please let us know. ------------------ From: Cliff Wickman <cpw@sgi.com> commit 3ee48b6af49cf534ca2f481ecc484b156a41451d upstream. During the reading of /proc/vmcore the kernel is doing ioremap()/iounmap() repeatedly. And the buildup of un-flushed vm_area_struct's is causing a great deal of overhead. (rb_next() is chewing up most of that time). This solution is to provide function set_iounmap_nonlazy(). It causes a subsequent call to iounmap() to immediately purge the vma area (with try_purge_vmap_area_lazy()). With this patch we have seen the time for writing a 250MB compressed dump drop from 71 seconds to 44 seconds. Signed-off-by: Cliff Wickman <cpw@sgi.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: kexec@lists.infradead.org LKML-Reference: <E1OwHZ4-0005WK-Tw@eag09.americas.sgi.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- arch/x86/include/asm/io.h | 1 + arch/x86/kernel/crash_dump_64.c | 1 + mm/vmalloc.c | 9 +++++++++ 3 files changed, 11 insertions(+) --- a/arch/x86/include/asm/io.h +++ b/arch/x86/include/asm/io.h @@ -206,6 +206,7 @@ static inline void __iomem *ioremap(reso extern void iounmap(volatile void __iomem *addr); +extern void set_iounmap_nonlazy(void); #ifdef __KERNEL__ --- a/arch/x86/kernel/crash_dump_64.c +++ b/arch/x86/kernel/crash_dump_64.c @@ -46,6 +46,7 @@ ssize_t copy_oldmem_page(unsigned long p } else memcpy(buf, vaddr + offset, csize); + set_iounmap_nonlazy(); iounmap(vaddr); return csize; } --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -517,6 +517,15 @@ static atomic_t vmap_lazy_nr = ATOMIC_IN static void purge_fragmented_blocks_allcpus(void); /* + * called before a call to iounmap() if the caller wants vm_area_struct's + * immediately freed. + */ +void set_iounmap_nonlazy(void) +{ + atomic_set(&vmap_lazy_nr, lazy_max_pages()+1); +} + +/* * Purges all lazily-freed vmap areas. * * If sync is 0 then don't purge if there is already a purge in progress.
WARNING: multiple messages have this Message-ID (diff)
From: Greg KH <gregkh@suse.de> To: linux-kernel@vger.kernel.org, stable@kernel.org Cc: Ingo Molnar <mingo@elte.hu>, kexec@lists.infradead.org, Cliff Wickman <cpw@sgi.com>, akpm@linux-foundation.org, torvalds@linux-foundation.org, stable-review@kernel.org, alan@lxorguk.ukuu.org.uk Subject: [16/66] mm, x86: Saving vmcore with non-lazy freeing of vmas Date: Fri, 19 Nov 2010 14:00:47 -0800 [thread overview] Message-ID: <20101119220123.488019055@clark.site> (raw) In-Reply-To: <20101119220309.GA15562@kroah.com> 2.6.36-stable review patch. If anyone has any objections, please let us know. ------------------ From: Cliff Wickman <cpw@sgi.com> commit 3ee48b6af49cf534ca2f481ecc484b156a41451d upstream. During the reading of /proc/vmcore the kernel is doing ioremap()/iounmap() repeatedly. And the buildup of un-flushed vm_area_struct's is causing a great deal of overhead. (rb_next() is chewing up most of that time). This solution is to provide function set_iounmap_nonlazy(). It causes a subsequent call to iounmap() to immediately purge the vma area (with try_purge_vmap_area_lazy()). With this patch we have seen the time for writing a 250MB compressed dump drop from 71 seconds to 44 seconds. Signed-off-by: Cliff Wickman <cpw@sgi.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: kexec@lists.infradead.org LKML-Reference: <E1OwHZ4-0005WK-Tw@eag09.americas.sgi.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- arch/x86/include/asm/io.h | 1 + arch/x86/kernel/crash_dump_64.c | 1 + mm/vmalloc.c | 9 +++++++++ 3 files changed, 11 insertions(+) --- a/arch/x86/include/asm/io.h +++ b/arch/x86/include/asm/io.h @@ -206,6 +206,7 @@ static inline void __iomem *ioremap(reso extern void iounmap(volatile void __iomem *addr); +extern void set_iounmap_nonlazy(void); #ifdef __KERNEL__ --- a/arch/x86/kernel/crash_dump_64.c +++ b/arch/x86/kernel/crash_dump_64.c @@ -46,6 +46,7 @@ ssize_t copy_oldmem_page(unsigned long p } else memcpy(buf, vaddr + offset, csize); + set_iounmap_nonlazy(); iounmap(vaddr); return csize; } --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -517,6 +517,15 @@ static atomic_t vmap_lazy_nr = ATOMIC_IN static void purge_fragmented_blocks_allcpus(void); /* + * called before a call to iounmap() if the caller wants vm_area_struct's + * immediately freed. + */ +void set_iounmap_nonlazy(void) +{ + atomic_set(&vmap_lazy_nr, lazy_max_pages()+1); +} + +/* * Purges all lazily-freed vmap areas. * * If sync is 0 then don't purge if there is already a purge in progress. _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2010-11-19 22:17 UTC|newest] Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top 2010-11-19 22:03 [00/66] 2.6.36.1-stable review Greg KH 2010-11-19 22:00 ` [01/66] staging: usbip: Notify usb core of port status changes Greg KH 2010-11-19 22:00 ` [02/66] staging: usbip: Process event flags without delay Greg KH 2010-11-19 22:00 ` [03/66] Staging: phison: fix problem caused by libata change Greg KH 2010-11-19 22:00 ` [04/66] perf_events: Fix bogus AMD64 generic TLB events Greg KH 2010-11-19 22:00 ` [05/66] perf_events: Fix bogus context time tracking Greg KH 2010-11-19 22:00 ` [06/66] powerpc/perf: Fix sampling enable for PPC970 Greg KH 2010-11-19 22:00 ` [07/66] pcmcia: synclink_cs: fix information leak to userland Greg KH 2010-11-19 22:00 ` [08/66] sched: Drop all load weight manipulation for RT tasks Greg KH 2010-11-19 22:00 ` [09/66] sched: Fix string comparison in /proc/sched_features Greg KH 2010-11-19 22:00 ` [10/66] bluetooth: Fix missing NULL check Greg KH 2010-11-19 22:00 ` [11/66] Bluetooth: fix oops in l2cap_connect_req Greg KH 2010-11-19 22:00 ` [12/66] futex: Fix errors in nested key ref-counting Greg KH 2010-11-19 22:00 ` [13/66] cifs: fix broken oplock handling Greg KH 2010-11-19 22:00 ` [14/66] libahci: fix result_tf handling after an ATA PIO data-in command Greg KH 2010-11-19 22:00 ` [15/66] intel_idle: do not use the LAPIC timer for ATOM C2 Greg KH 2010-11-19 22:00 ` Greg KH [this message] 2010-11-19 22:00 ` [16/66] mm, x86: Saving vmcore with non-lazy freeing of vmas Greg KH 2010-11-19 22:00 ` [17/66] x86, cpu: Fix renamed, not-yet-shipping AMD CPUID feature bit Greg KH 2010-11-19 22:00 ` [18/66] x86, mrst: A function in a header file needs to be marked "inline" Greg KH 2010-11-19 22:00 ` [19/66] x86, kexec: Make sure to stop all CPUs before exiting the kernel Greg KH 2010-11-19 22:00 ` [20/66] x86, olpc: Dont retry EC commands forever Greg KH 2010-11-19 22:00 ` [21/66] x86, mtrr: Assume SYS_CFG[Tom2ForceMemTypeWB] exists on all future AMD CPUs Greg KH 2010-11-19 22:00 ` [22/66] x86, intr-remap: Set redirection hint in the IRTE Greg KH 2010-11-19 22:00 ` [23/66] x86, kdump: Change copy_oldmem_page() to use cached addressing Greg KH 2010-11-19 22:00 ` Greg KH 2010-11-19 22:00 ` [24/66] x86, vm86: Fix preemption bug for int1 debug and int3 breakpoint handlers Greg KH 2010-11-19 22:00 ` [25/66] KVM: X86: Report SVM bit to userspace only when supported Greg KH 2010-11-19 22:00 ` [26/66] KVM: SVM: Restore correct registers after sel_cr0 intercept emulation Greg KH 2010-11-19 22:00 ` [27/66] USB: mct_u232: fix broken close Greg KH 2010-11-19 22:00 ` [28/66] pipe: fix failure to return error code on ->confirm() Greg KH 2010-11-19 22:01 ` [29/66] p54usb: fix off-by-one on !CONFIG_PM Greg KH 2010-11-19 22:01 ` [30/66] p54usb: add five more USBIDs Greg KH 2010-11-19 22:01 ` [31/66] drivers/net/wireless/p54/eeprom.c: Return -ENOMEM on memory allocation failure Greg KH 2010-11-19 22:01 ` [32/66] usb gadget: composite: prevent OOPS for non-standard control request Greg KH 2010-11-19 22:01 ` [33/66] USB: gadget: g_ffs: fixed vendor and product ID Greg KH 2010-11-19 22:01 ` [34/66] USB: gadget: g_multi: " Greg KH 2010-11-19 22:01 ` [35/66] USB: ftdi_sio: Add PID for accesio products Greg KH 2010-11-19 22:01 ` [36/66] USB: ftdi_sio: revert "USB: ftdi_sio: fix DTR/RTS line modes" Greg KH 2010-11-19 22:01 ` [37/66] USB: add PID for FTDI based OpenDCC hardware Greg KH 2010-11-19 22:01 ` [38/66] USB: ftdi_sio: new VID/PIDs for various Papouch devices Greg KH 2010-11-19 22:01 ` [39/66] USB: ftdi_sio: add device ids for ScienceScope Greg KH 2010-11-19 22:01 ` [40/66] USB: MUSB: fix kernel WARNING/oops when unloading module in OTG mode Greg KH 2010-11-19 22:01 ` [41/66] usb: musb: blackfin: call usb_nop_xceiv_unregister() in musb_platform_exit() Greg KH 2010-11-19 22:01 ` [42/66] usb: musb: blackfin: call gpio_free() on error path in musb_platform_init() Greg KH 2010-11-19 22:01 ` [43/66] USB: Change acm_iad_descriptor bFunctionProtocol to USB_CDC_ACM_PROTO_AT_V25TER Greg KH 2010-11-19 22:01 ` [44/66] USB: option: Add more ZTE modem USB ids Greg KH 2010-11-19 22:01 ` [45/66] USB: cp210x: Add Renesas RX-Stick device ID Greg KH 2010-11-19 22:01 ` [46/66] USB: cp210x: Add WAGO 750-923 Service Cable " Greg KH 2010-11-19 22:01 ` [47/66] USB: atmel_usba_udc: force vbus_pin at -EINVAL when gpio_request failled Greg KH 2010-11-19 22:01 ` [48/66] USB: disable endpoints after unbinding interfaces, not before Greg KH 2010-11-19 22:01 ` [49/66] USB: visor: fix initialisation of UX50/TH55 devices Greg KH 2010-11-19 22:01 ` [50/66] USB: opticon: Fix long-standing bugs in opticon driver Greg KH 2010-11-19 22:01 ` [51/66] usb: r8a66597-hcd: Change mistake of the outsw function Greg KH 2010-11-19 22:01 ` [52/66] USB: accept some invalid ep0-maxpacket values Greg KH 2010-11-19 22:01 ` [53/66] OHCI: work around for nVidia shutdown problem Greg KH 2010-11-19 22:01 ` [54/66] asus-laptop: fix gps rfkill Greg KH 2010-11-19 22:01 ` [55/66] [SCSI] sd name space exhaustion causes system hang Greg KH 2010-11-19 22:01 ` [56/66] [SCSI] libsas: fix NCQ mixing with non-NCQ Greg KH 2010-11-19 22:01 ` [57/66] [SCSI] qla4xxx: fix build on PPC Greg KH 2010-11-19 22:01 ` [58/66] [SCSI] pmcraid: remove duplicate struct member Greg KH 2010-11-19 22:01 ` [59/66] [SCSI] gdth: integer overflow in ioctl Greg KH 2010-11-19 22:01 ` [60/66] [SCSI] Fix race when removing SCSI devices Greg KH 2010-11-19 22:01 ` [61/66] [SCSI] Fix regressions in scsi_internal_device_block Greg KH 2010-11-19 22:01 ` [62/66] Fixed Regression in NFS Direct I/O path Greg KH 2010-11-19 22:01 ` [63/66] secmark: do not return early if there was no error Greg KH 2010-11-19 22:01 ` [64/66] kgdb,arm: fix register dump Greg KH 2010-11-19 22:01 ` [65/66] ARM: cns3xxx: Fixup the missing second parameter to addruart macro to allow them to build Greg KH 2010-11-19 22:01 ` [66/66] sgi-xp: incoming XPC channel messages can come in after the channels partition structures have been torn down Greg KH 2010-11-19 22:18 ` [Stable-review] [00/66] 2.6.36.1-stable review Nikola Ciprich 2010-11-20 0:08 ` Greg KH 2010-11-22 8:33 ` Nikola Ciprich 2010-11-20 14:24 ` Andy Lutomirski 2010-11-20 15:52 ` Greg KH 2010-11-20 16:15 ` Andrew Lutomirski 2010-12-08 5:17 ` Ben Skeggs 2010-12-20 19:44 ` [stable] " Greg KH 2010-11-20 15:56 ` Thomas Meyer 2010-11-20 15:50 ` Greg KH 2010-12-07 20:18 ` [stable] " Greg KH
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=20101119220123.488019055@clark.site \ --to=gregkh@suse.de \ --cc=akpm@linux-foundation.org \ --cc=alan@lxorguk.ukuu.org.uk \ --cc=cpw@sgi.com \ --cc=kexec@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mingo@elte.hu \ --cc=stable-review@kernel.org \ --cc=stable@kernel.org \ --cc=torvalds@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: linkBe 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.