From: Qiao Nuohan <qiaonuohan@cn.fujitsu.com>
To: Stefan Hajnoczi <stefanha@gmail.com>
Cc: zhangxh@cn.fujitsu.com, qemu-devel@nongnu.org,
lcapitulino@redhat.com, anderson@redhat.com,
kumagai-atsushi@mxc.nes.nec.co.jp, afaerber@suse.de
Subject: Re: [Qemu-devel] [PATCH v4 0/9] Make 'dump-guest-memory' dump in kdump-compressed format
Date: Thu, 27 Jun 2013 15:11:09 +0800 [thread overview]
Message-ID: <51CBE58D.8080507@cn.fujitsu.com> (raw)
In-Reply-To: <20130620085719.GA15672@stefanha-thinkpad.redhat.com>
Sorry for replying late.
On 06/20/2013 04:57 PM, Stefan Hajnoczi wrote:
>
> Please link to the code that writes DISKDUMP kdump files on a physical
> machine. I only see the crash utility code to read the DISKDUMP code
> but I haven't found anything in the Linux kernel, the crash utility, or
> the kexec-utils code to actually write a DISKDUMP file.
I think you can refer to the following URL, and the kdump-compressed format is
described in the file called IMPLEMENTATION.
http://sourceforge.net/projects/makedumpfile/.
>
> I understand why you need temporary files, but my questions stand:
>
> Have you looked at using ELF more efficiently instead of duplicating
> kdump code into QEMU? kdump is not a great format for the problem
> you're trying to solve - you're not filling in the Linux-specific
> metadata and it's a pain to write due to its layout.
>
> Why can't you simply omit zero pages from the ELF?
>
> Why can't you compress the entire ELF file and add straightforward
> decompression to the crash utility?
>
As I have said, the main purpose of this work is *reducing* the *size* of dump
file to make delivering dump file more conveniently.
Compared with migration, "memory only" dump has a feature regression without
compression and excluding zero pages. So the regression makes me feel it is
necessary to make these patches.
You asked about using ELF more efficiently. For implementing *excluding zero*
pages, *PT_LOAD* can be made use of. p_memsz and p_filesz fields of PT_LOAD
entry are used to describe memory size and the size of corresponding data in
dump file respectively. Blocks only get zero pages in it will have *p_filesz*
set to 0.
However, such implementation faces a problem: the number of PT_LOAD may
*exceed* the range. As zero pages occur *arbitrarily*, the number of PT_LOAD,
at the worst case, may reach the number of the total physical page frames. For
example, 256MB have 2^16 page frames may exceed the range of e_phnum. Although
sh_info is extended to store PT_LOAD when e_phnum is not enough, sh_info that
has 2^32 range may also exceed if the guest machine has more-than-16TB physical
memory (it won't occur soon, but it will happen one day).
OTOH, the reason why I chose kdump-compressed format is ELF doesn't support
compression and filtering yet. To implement compression and filtering on ELF,
we need to consider specific ABI among qemu, crash utility and makedumpfile.
After that, another work needs to be done to port them in specific
distributions.
Compared kdump-compressed format with ELF, compression and filtering is
supported and we don't need to modify tools like crash and makedumpfile.
Considering these reasons, kdump-compressed format is better than ELF. It get
more merit.
According to your comments, I think your objection first comes from the
*temporary files*. What if temporary files won't be used? Flatten kdump-
compressed format is supported by crash and makedumpfile which offers a
mechanism to avoid seek in the case of sending data through *pipe*, then I
don't need to cache pages' data in temporary files.
And about the metadata(do you mean VMCOREINFO here?) you pointed out, it
contains debugging information related to kernel memory. The debugging
information is useful if present, because we can use it to filter more kinds of
memory. But now we only need to exclude zero pages and there's formal mechanism
between qemu and linux kernel, so without metadata can also satisfy our need.
Think over all of the above, I still chose kdump-compressed format. What's your
opinion about this?
--
Regards
Qiao Nuohan
next prev parent reply other threads:[~2013-06-27 7:11 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-28 2:50 [Qemu-devel] [PATCH v4 0/9] Make 'dump-guest-memory' dump in kdump-compressed format qiaonuohan
2013-05-28 2:50 ` [Qemu-devel] [PATCH v4 1/9] dump: Add API to manipulate dump_bitmap qiaonuohan
2013-06-19 11:42 ` Andreas Färber
2013-06-19 12:00 ` Andreas Färber
2013-05-28 2:50 ` [Qemu-devel] [PATCH v4 2/9] dump: Add API to manipulate cache_data qiaonuohan
2013-06-19 12:29 ` Andreas Färber
2013-06-21 11:00 ` Eric Blake
2013-05-28 2:50 ` [Qemu-devel] [PATCH v4 3/9] dump: Move struct definition into dump_memroy.h qiaonuohan
2013-06-19 13:08 ` Andreas Färber
2013-05-28 2:50 ` [Qemu-devel] [PATCH v4 4/9] dump: Add API to create header of vmcore qiaonuohan
2013-06-19 13:23 ` Andreas Färber
2013-05-28 2:50 ` [Qemu-devel] [PATCH v4 5/9] dump: Add API to create data of dump bitmap qiaonuohan
2013-05-28 2:50 ` [Qemu-devel] [PATCH v4 6/9] dump: Add API to create page qiaonuohan
2013-05-28 2:50 ` [Qemu-devel] [PATCH v4 7/9] dump: Add API to free memory used by creating header, bitmap and page qiaonuohan
2013-05-28 2:50 ` [Qemu-devel] [PATCH v4 8/9] dump: Add API to write header, bitmap and page into vmcore qiaonuohan
2013-05-28 2:50 ` [Qemu-devel] [PATCH v4 9/9] dump: Make kdump-compressed format available for 'dump-guest-memory' qiaonuohan
2013-06-19 13:10 ` Stefan Hajnoczi
2013-06-05 1:29 ` [Qemu-devel] [PATCH v4 0/9] Make 'dump-guest-memory' dump in kdump-compressed format Qiao Nuohan
2013-06-05 2:12 ` Luiz Capitulino
2013-06-05 2:15 ` Luiz Capitulino
2013-06-05 11:44 ` Amos Kong
2013-06-10 2:15 ` Qiao Nuohan
2013-06-10 12:54 ` Luiz Capitulino
2013-06-11 1:48 ` Qiao Nuohan
2013-06-13 18:12 ` Luiz Capitulino
2013-06-19 10:07 ` Qiao Nuohan
2013-06-19 13:49 ` Stefan Hajnoczi
2013-06-20 2:18 ` Qiao Nuohan
2013-06-20 8:57 ` Stefan Hajnoczi
2013-06-27 7:11 ` Qiao Nuohan [this message]
2013-06-27 8:54 ` Stefan Hajnoczi
2013-06-28 2:57 ` Qiao Nuohan
2013-07-01 11:45 ` Stefan Hajnoczi
2013-07-03 7:39 ` Qiao Nuohan
2013-07-04 8:26 ` Stefan Hajnoczi
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=51CBE58D.8080507@cn.fujitsu.com \
--to=qiaonuohan@cn.fujitsu.com \
--cc=afaerber@suse.de \
--cc=anderson@redhat.com \
--cc=kumagai-atsushi@mxc.nes.nec.co.jp \
--cc=lcapitulino@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@gmail.com \
--cc=zhangxh@cn.fujitsu.com \
/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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).