[RFC PATCH v2 0/10] makedumpfile: cyclic processing to keep memory consumption.
HATAYAMA Daisuke
d.hatayama at jp.fujitsu.com
Tue Aug 14 07:55:32 EDT 2012
From: Vivek Goyal <vgoyal at redhat.com>
Subject: Re: [RFC PATCH v2 0/10] makedumpfile: cyclic processing to keep memory consumption.
Date: Fri, 10 Aug 2012 10:36:55 -0400
> On Fri, Aug 10, 2012 at 05:39:38PM +0900, HATAYAMA Daisuke wrote:
>
> [..]
>>
>> I finished benchmarking filtering time and demonstrate the result.
>> But I failed to collect amount of memory consumption by my mistake. If
>> they are necessary, I'll again try to collect them. But we have 9 days
>> vacation starting tommorow, so I'll do that after the vacation.
>>
>
> Thanks a lot for doing this benchmarking.
>
>> The machine spec I used is as follows:
>>
>> Memory: 2TB
>> CPU: Intel(R) Xeon(R) CPU E7- 8870 @ 2.40GHz
>> (8 sockets, 10 cores, 2 threads)
>>
>> In the first step, I chosed buffer size 10KB and it took about 3h 45m
>> 57s. So, next I changed the buffer size to 512KB and measured up to
>> 8MB.
>
> What is this buffer size? Is user supposed to specify it? Is it some fixed
> size buffer which makedumpfile can use to read in memory and once we cross
> the buffer size we need to let some data from buffer go?
>
The buffer size is just the size for a single bitmap. A single bitmap
has the given buffer size length. If passing 512kB as buffer size, two
512kB bitmaps, so 1MB in total, are allocated.
The next equation holds:
number_of_cycles == system_memory / ( bit_per_bytes * page_size * the_buf_size )
On this benchmarking,
system_memory := 2TB
bit_per_bytes := 8
page_size := 4KB
The buffer size was fixed in Kumagai-san's version, but in this
benchmarking I added --bufsize command-line option for flexibility.
>>
>> The result is as follows:
>>
>> | buffer size | time |
>> |-------------+------------|
>> | 8 MB | 48.32 sec |
>> | 4 MB | 55.76 sec |
>> | 2 MB | 69.91 sec |
>> | 1 MB | 98.25 sec |
>> | 512 KB | 154.42 sec |
>
> So, on a 2TB system, with 8MB buffer, we could filter and save vmcore in
> around 48 seconds? Or is it just filtering time.
>
Just filtering time. I first tried with writing memory but it took
very long time over a few hours. There are several test cases for
several buffer size, I needed to reduce the time required.
> 48 seconds for 2TB system, sounds pretty decent to me.
>
I think so too, because the time for writing data is by far larger
than this time.
> Are these results with existing free_list implementation or with your
> patches of walking through mem_map array?
>
>>
>> BTW, the existing free_list logic took about 48 sec for the same
>> vmcore as below.
>
> I guess above results were with your patches of walking mem_map array.
>
Yes, the above results are mem_map array case.
>>
>> STEP [Excluding free pages ] : 49.846321 seconds
>> STEP [Excluding unnecessary pages] : 6.339228 seconds
>> STEP [Excluding free pages ] : 48.595884 seconds
>> STEP [Excluding unnecessary pages] : 6.530479 seconds
>> STEP [Excluding free pages ] : 48.598879 seconds
>> STEP [Excluding unnecessary pages] : 6.527133 seconds
>> STEP [Excluding free pages ] : 48.602401 seconds
>> STEP [Excluding unnecessary pages] : 6.502681 seconds
>> STEP [Excluding free pages ] : 48.602010 seconds
>> STEP [Excluding unnecessary pages] : 6.469853 seconds
>> STEP [Excluding free pages ] : 48.601637 seconds
>> STEP [Excluding unnecessary pages] : 6.431381 seconds
>> STEP [Excluding free pages ] : 48.601195 seconds
>> STEP [Excluding unnecessary pages] : 6.416676 seconds
>> STEP [Excluding free pages ] : 48.602221 seconds
>> STEP [Excluding unnecessary pages] : 6.387611 seconds
>> STEP [Excluding free pages ] : 48.589972 seconds
>> STEP [Excluding unnecessary pages] : 0.816955 seconds
>
> So what does above represent. Each step is taking 48 seconds or total
> time taken to filter vmcore is 48 seconds? What's the buffer size used
> here.
>
The free_list logic always filteres a whole memory range even if the
range we need to filter is only a cerntain part, so it took about 48
seconds at each cycle.
> Does that mean that filtering time for both mem_map array approach and
> free_list approach are same?
>
No.
Thanks.
HATAYAMA, Daisuke
More information about the kexec
mailing list