[PATCH v2 0/5] makedumpfile: --split: assign fair I/O workloads in appropriate time
HATAYAMA Daisuke
d.hatayama at jp.fujitsu.com
Mon Oct 27 23:24:59 PDT 2014
From: Atsushi Kumagai <kumagai-atsushi at mxc.nes.nec.co.jp>
Subject: RE: [PATCH v2 0/5] makedumpfile: --split: assign fair I/O workloads in appropriate time
Date: Mon, 27 Oct 2014 07:51:56 +0000
> Hello Zhou,
>
>>On 10/17/2014 11:50 AM, Atsushi Kumagai wrote:
>>> Hello,
>>>
>>> The code looks good to me, thanks Zhou.
>>> Now, I have a question on performance.
>>>
>>>> The issue is discussed at http://lists.infradead.org/pipermail/kexec/2014-March/011289.html
>>>>
>>>> This patch implements the idea of 2-pass algorhythm with smaller memory to manage splitblock table.
>>>> Exactly the algorhythm is still 3-pass,but the time of second pass is much shorter.
>>>> The tables below show the performence with different size of cyclic-buffer and splitblock.
>>>> The test is executed on the machine having 128G memory.
>>>>
>>>> the value is total time (including first pass and second pass).
>>>> the value in brackets is the time of second pass.
>>>
>>> Do you have any idea why the time of second pass is much larger when
>>> the splitblock-size is 2G ? I worry about the scalability.
>>>
>>Hello,
>>
>> Since the previous machine can't be used for some reasons,I test several times using latest code
>>in others, but that never happened. It seems that all things are right. Tests are executed in two machines(server,pc).
>>Tests are based on:
>
> Well...OK, I'll take that as an issue specific to that machine
> (or your mistakes as you said).
> Now I have another question.
>
> calculate_end_pfn_by_splitblock():
> ...
> /* deal with incomplete splitblock */
> if (pfn_needed_by_per_dumpfile < 0) {
> --*current_splitblock;
> splitblock_inner -= splitblock->entry_size;
> end_pfn = CURRENT_SPLITBLOCK_PFN_NUM;
> *current_splitblock_pfns = (-1) * pfn_needed_by_per_dumpfile;
> pfn_needed_by_per_dumpfile += read_value_from_splitblock_table(splitblock_inner);
> end_pfn = calculate_end_pfn_in_cycle(CURRENT_SPLITBLOCK_PFN_NUM,
> CURRENT_SPLITBLOCK_PFN_NUM + splitblock->page_per_splitblock,
> end_pfn,pfn_needed_by_per_dumpfile);
> }
>
> This block causes the re-scanning for the cycle corresponding to the
> current_splitblock, so the larger cyc-buf, the longer the time takes.
> If cyc-buf is 4096 (this means the number of cycle is 1), the whole page
> scanning will be done in the second pass. Actually, the performance when
> cyc-buf=4096 was so bad.
>
> Is this process necessary ? I think splitting splitblocks is overkill
> because I understood that splblk-size is the granularity of the
> fairness I/O, tuning splblk-size is a trade off between fairness and
> memory usage.
> However, there is no advantage to reducing splblk-size in the current
> implementation, it just consumes large amounts of memory.
> If we remove the process, we can avoid the whole page scanning in
> the second pass and reducing splblk-size will be meaningful as I
> expected.
>
Yes, I don't think this rescan works with this splitblock method,
too. The idea of this splitblock method is to reduce the number of
filitering processing from 3-times to 2-times at the expence of at
most splitblock-size difference of each dump file. Doing rescan here
doesn't fit to the idea.
--
Thanks.
HATAYAMA, Daisuke
More information about the kexec
mailing list