[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20130309.133118.214580151.d.hatayama@jp.fujitsu.com>
Date: Sat, 09 Mar 2013 13:31:18 +0900 (JST)
From: HATAYAMA Daisuke <d.hatayama@...fujitsu.com>
To: jingbai.ma@...com
Cc: vgoyal@...hat.com, kexec@...ts.infradead.org,
linux-kernel@...r.kernel.org, lisa.mitchell@...com,
mingo@...hat.com, kumagai-atsushi@....nes.nec.co.jp,
ebiederm@...ssion.com, hpa@...or.com, yinghai@...nel.org
Subject: Re: [RFC PATCH 0/5] crash dump bitmap: scan memory pages in kernel
to speedup kernel dump process
From: Jingbai Ma <jingbai.ma@...com>
Subject: Re: [RFC PATCH 0/5] crash dump bitmap: scan memory pages in kernel to speedup kernel dump process
Date: Fri, 8 Mar 2013 18:06:31 +0800
> On 03/07/2013 11:21 PM, Vivek Goyal wrote:
>> On Thu, Mar 07, 2013 at 10:58:18PM +0800, Jingbai Ma wrote:
...
>> First of all 64MB per TB should not be a huge deal. And makedumpfile
>> also has this cyclic mode where you process a map, discard it and then
>> move on to next section. So memory usage remains constant at the
>> expense
>> of processing time.
>
> Yes, that's true. But in cyclic mode, makedumpfile will have to
> write/read bitmap from storage, it will also impact the performance.
> I have measured the penalty for cyclic mode is about 70%
> slowdown. Maybe could be faster after mmap implemented.
I guess the slowdown came from the issue that enough VMCOREINFO was
not provided from the kernel, and unnecessary filtering processing for
free pages is done multiple times.
For example, confirm how filtering is done in your environment like
this:
$ makedumpfile --message-level 16 # 16 is report message
makedumpfile: map_size = 4
sadump: does not have partition header
...
pfn_end : 880000
Can't select page_is_buddy handler; follow free lists instead of mem_map array.
STEP [Excluding free pages ] : 0.431724 seconds
STEP [Excluding unnecessary pages] : 1.052160 seconds
Here STEP [..] colum occurs the number of cycles in cyclic-mode. If
STEP [Excluding free pages ] column occurs multiple times in log, it
causes the slowdown on your environment. (free_list doesn't sort its
elements in pfn's order, so we have only to iterate a whole part of
free_list in each cycle...; it could amount to be close to a whole
memory size in worst case just after system boot)
To use mem_map array logic, VMCOREINFO nees to have the corresponding
information to refer to related data structures. The patch is
commit 8d67091ec6ae98ca67f77990ef9e9ec21337f077
Author: Atsushi Kumagai <kumagai-atsushi@....nes.nec.co.jp>
Date: Wed Feb 27 17:03:25 2013 -0800
kexec: add the values related to buddy system for filtering free pages.
and it has been merged in 3.9-rc1.
$ git describe 8d67091ec6ae98ca67f77990ef9e9ec21337f077
v3.8-9443-g8d67091
Or you can edit VMCOREINFO manually and specify it to makedumpfile as:
1. generate vmcoreinfo from vmlinux
makedumpfile -x vmlinux -g vmcoreinfo.txt
2. Add the following values in the generated vmcoreinfo.txt
- 3.1, 3.4, 3.8.x
NUMBER(PG_slab)=7
SIZE(pageflags)=4
OFFSET(page._mapcount)=24
OFFSET(page.private)=48
NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE)=-128
- 2.6.38
SIZE(pageflags)=4
OFFSET(page._mapcount)=12
OFFSET(page.private)=16
NUMBER(PG_slab)=7
NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE)=-2
- 2.6.32
NUMBER(PG_slab)=7
NUMBER(PG_buddy)=19
OFFSET(page._mapcount)=12
OFFSET(page.private)=16
SIZE(pageflags)=4
- 2.6.18
NUMBER(PG_slab)=7
NUMBER(PG_buddy)=19
OFFSET(page._mapcount)=12
OFFSET(page.private)=16
3. Specify the vmcoreinfo.txt to makedumpfile via -i option
makedumpfile -i vmcoreinfo.txt [-c|-l|-p] -d 31 /proc/vmcore dumpfile
Anyway, please help benchmark. I'll send CC to you too.
Thanks.
HATAYAMA, Daisuke
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists