- 24 Sep, 2013 2 commits
-
-
Isaku Yamahata authored
Later is_zero_page will be used for non TARGET_PAGE_SIZE range. And rename it to is_zero_range as it isn't page size any more. Signed-off-by:
Isaku Yamahata <yamahata@private.email.ne.jp> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-
Lei Li authored
qemu_file_rate_limit() never return negative value since the refactor by Commit 1964a397, this patch gets rid of the negative check for it, adjust bytes_transferred and return value correspondingly in ram_save_iterate(). Signed-off-by:
Lei Li <lilei@linux.vnet.ibm.com> Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-
- 03 Sep, 2013 1 commit
-
-
Andreas Färber authored
It was introduced to loop over CPUs from target-independent code, but since commit 182735ef target-independent CPUState is used. A loop can be considered more efficient than function calls in a loop, and CPU_FOREACH() hides implementation details just as well, so use that instead. Suggested-by:
Markus Armbruster <armbru@redhat.com> Acked-by:
Michael S. Tsirkin <mst@redhat.com> Signed-off-by:
Andreas Färber <afaerber@suse.de>
-
- 22 Aug, 2013 1 commit
-
-
Alex Bligh authored
This is an autogenerated patch using scripts/switch-timer-api. Switch the entire code base to using the new timer API. Note this patch may introduce some line length issues. Signed-off-by:
Alex Bligh <alex@alex.org.uk> Signed-off-by:
Stefan Hajnoczi <stefanha@redhat.com>
-
- 20 Aug, 2013 2 commits
-
-
Michael S. Tsirkin authored
Migration code assumes that each MR is a multiple of TARGET_PAGE_SIZE: MR size is divided by TARGET_PAGE_SIZE, so if it isn't migration never completes. But this isn't really required for regions set up with memory_region_init_ram, since that calls qemu_ram_alloc which aligns size up using TARGET_PAGE_ALIGN. Align MR size up to full target page sizes, this way migration completes even if we create a RAM MR which is not a full target page size. Signed-off-by:
Michael S. Tsirkin <mst@redhat.com> Reviewed-by:
Laszlo Ersek <lersek@redhat.com>
-
Seiji Aguchi authored
Convert stderr messages calling error_get_pretty() to error_report(). Timestamp is prepended by -msg timstamp option with it. Per Markus's comment below, A conversion from fprintf() to error_report() is always an improvement, regardless of error_get_pretty(). http://marc.info/?l=qemu-devel&m=137513283408601&w=2 But, it is not reasonable to convert them at one time because fprintf() is used everwhere in qemu. So, it should be done step by step with avoiding regression. Signed-off-by:
Seiji Aguchi <seiji.aguchi@hds.com> Reviewed-by:
Laszlo Ersek <lersek@redhat.com> Signed-off-by:
Luiz Capitulino <lcapitulino@redhat.com>
-
- 23 Jul, 2013 2 commits
-
-
Michael R. Hines authored
This takes advantages of the previous patches: 1. use the new QEMUFileOps hook 'save_page' 2. call out to the right accessor methods to invoke the iteration hooks defined in QEMUFileOps Reviewed-by:
Paolo Bonzini <pbonzini@redhat.com> Reviewed-by:
Chegu Vinod <chegu_vinod@hp.com> Tested-by:
Chegu Vinod <chegu_vinod@hp.com> Tested-by:
Michael R. Hines <mrhines@us.ibm.com> Signed-off-by:
Michael R. Hines <mrhines@us.ibm.com> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-
Michael R. Hines authored
This gives RDMA shared access to madvise() on the destination side when an entire chunk is found to be zero. Reviewed-by:
Juan Quintela <quintela@redhat.com> Reviewed-by:
Paolo Bonzini <pbonzini@redhat.com> Reviewed-by:
Chegu Vinod <chegu_vinod@hp.com> Tested-by:
Chegu Vinod <chegu_vinod@hp.com> Tested-by:
Michael R. Hines <mrhines@us.ibm.com> Signed-off-by:
Michael R. Hines <mrhines@us.ibm.com> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-
- 12 Jul, 2013 1 commit
-
-
Chegu Vinod authored
If a user chooses to turn on the auto-converge migration capability these changes detect the lack of convergence and throttle down the guest. i.e. force the VCPUs out of the guest for some duration and let the migration thread catchup and help converge. Verified the convergence using the following : - Java Warehouse workload running on a 20VCPU/256G guest(~80% busy) - OLTP like workload running on a 80VCPU/512G guest (~80% busy) Sample results with Java warehouse workload : (migrate speed set to 20Gb and migrate downtime set to 4seconds). (qemu) info migrate capabilities: xbzrle: off auto-converge: off <---- Migration status: active total time: 1487503 milliseconds expected downtime: 519 milliseconds transferred ram: 383749347 kbytes remaining ram: 2753372 kbytes total ram: 268444224 kbytes duplicate: 65461532 pages skipped: 64901568 pages normal: 95750218 pages normal bytes: 383000872 kbytes dirty pages rate: 67551 pages --- (qemu) info migrate capabilities: xbzrle: off auto-converge: on <---- Migration status: completed total time: 241161 milliseconds downtime: 6373 milliseconds transferred ram: 28235307 kbytes remaining ram: 0 kbytes total ram: 268444224 kbytes duplicate: 64946416 pages skipped: 64903523 pages normal: 7044971 pages normal bytes: 28179884 kbytes Signed-off-by:
Chegu Vinod <chegu_vinod@hp.com> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-
- 30 Jun, 2013 1 commit
-
-
Alexander Graf authored
We have stayed at 800x600x15 as default graphics mode for the last 9 years. If there ever was a reason to be there, surely nobody remembers it. However, recently non-Linux PPC guests started to show bad effects on 15 bit color mode. They do work just fine with 32 bits however. So let's switch to 32 bit color as the default graphic mode. Reported-by:
Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by:
Alexander Graf <agraf@suse.de>
-
- 28 Jun, 2013 1 commit
-
-
Stefan Weil authored
length is a ram_addr_t, so RAM_ADDR_FMT must be used instead of %ld. This fixes a recently introduced regression for w64 builds. Using RAM_ADDR_FMT also changes decimal output to sedecimal. This is good here because length and block->length should both use the same base in the error message. Signed-off-by:
Stefan Weil <sw@weilnetz.de> Message-id: 1372359606-2759-1-git-send-email-sw@weilnetz.de Signed-off-by:
Anthony Liguori <aliguori@us.ibm.com>
-
- 26 Jun, 2013 4 commits
-
-
Michael R. Hines authored
RDMA writes happen asynchronously, and thus the performance accounting also needs to be able to occur asynchronously. This allows anybody to call into savevm.c to update both f->pos as well as into arch_init.c to update the acct_info structure with up-to-date values when the RDMA transfer actually completes. Reviewed-by:
Juan Quintela <quintela@redhat.com> Tested-by:
Chegu Vinod <chegu_vinod@hp.com> Tested-by:
Michael R. Hines <mrhines@us.ibm.com> Signed-off-by:
Michael R. Hines <mrhines@us.ibm.com> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-
Peter Lieven authored
on incoming migration do not memset pages to zero if they already read as zero. this will allocate a new zero page and consume memory unnecessarily. even if we madvise a MADV_DONTNEED later this will only deallocate the memory asynchronously. Signed-off-by:
Peter Lieven <pl@kamp.de> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-
Peter Lieven authored
Not sending zero pages breaks migration if a page is zero at the source but not at the destination. This can e.g. happen if different BIOS versions are used at source and destination. It has also been reported that migration on pseries is completely broken with this patch. This effectively reverts commit f1c72795. Conflicts: arch_init.c Signed-off-by:
Peter Lieven <pl@kamp.de> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-
Alon Levy authored
Makes it easier to debug situations where the source and target have different ram blocks in a device and migration fails due to that, for instance a BAR size change on a PCI device. Signed-off-by:
Alon Levy <alevy@redhat.com> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-
- 14 Jun, 2013 4 commits
-
-
Paolo Bonzini authored
Just use the TARGET_NAME free string. Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com> Reviewed-by:
Eric Blake <eblake@redhat.com> Message-id: 1370349928-20419-6-git-send-email-pbonzini@redhat.com Signed-off-by:
Peter Maydell <peter.maydell@linaro.org>
-
Paolo Bonzini authored
Everything else needs to match the executable name, which is TARGET_NAME. Before: $ sh4eb-linux-user/qemu-sh4eb --help usage: qemu-sh4 [options] program [arguments...] Linux CPU emulator (compiled for sh4 emulation) After: $ sh4eb-linux-user/qemu-sh4eb --help usage: qemu-sh4eb [options] program [arguments...] Linux CPU emulator (compiled for sh4eb emulation) Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com> Message-id: 1370349928-20419-5-git-send-email-pbonzini@redhat.com Signed-off-by:
Peter Maydell <peter.maydell@linaro.org>
-
Markus Armbruster authored
Having size precede the associated pointer is odd. Swap them, and fix up the types. Signed-off-by:
Markus Armbruster <armbru@redhat.com> Reviewed-by:
Laszlo "ever the optimist" Ersek <lersek@redhat.com> Message-id: 1370610036-10577-5-git-send-email-armbru@redhat.com Signed-off-by:
Anthony Liguori <aliguori@us.ibm.com>
-
Markus Armbruster authored
Improves diagnistics from ad hoc messages like Invalid SMBIOS UUID string to qemu-system-x86_64: -smbios type=1,uuid=gaga: Invalid UUID Signed-off-by:
Markus Armbruster <armbru@redhat.com> Reviewed-by:
Laszlo "ever the optimist" Ersek <lersek@redhat.com> Message-id: 1370610036-10577-4-git-send-email-armbru@redhat.com Signed-off-by:
Anthony Liguori <aliguori@us.ibm.com>
-
- 24 May, 2013 1 commit
-
-
Paolo Bonzini authored
Since this is a MemoryListener operation, it only makes sense on an AddressSpace granularity. Suggested-by:
Peter Maydell <peter.maydell@linaro.org> Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com>
-
- 29 Apr, 2013 3 commits
-
-
Paolo Bonzini authored
Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com> Message-id: 1366303444-24620-8-git-send-email-pbonzini@redhat.com Signed-off-by:
Anthony Liguori <aliguori@us.ibm.com>
-
Paolo Bonzini authored
Several targets can have wavcapture/-soundhw support via PCI cards. HAS_AUDIO is a useless limitation, remove it. Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com> Message-id: 1366303444-24620-4-git-send-email-pbonzini@redhat.com Signed-off-by:
Anthony Liguori <aliguori@us.ibm.com>
-
Paolo Bonzini authored
Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com> Message-id: 1366303444-24620-3-git-send-email-pbonzini@redhat.com Signed-off-by:
Anthony Liguori <aliguori@us.ibm.com>
-
- 15 Apr, 2013 2 commits
-
-
Paolo Bonzini authored
Headers in include/exec/ are for the deepest innards of QEMU, they should almost never be included directly. Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com>
-
Michael S. Tsirkin authored
Functions defined in acpi/ should be declared in acpi.h Signed-off-by:
Michael S. Tsirkin <mst@redhat.com> Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com>
-
- 08 Apr, 2013 1 commit
-
-
Paolo Bonzini authored
Many of these should be cleaned up with proper qdev-/QOM-ification. Right now there are many catch-all headers in include/hw/ARCH depending on cpu.h, and this makes it necessary to compile these files per-target. However, fixing this does not belong in these patches. Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com>
-
- 04 Apr, 2013 3 commits
-
-
Laszlo Ersek authored
Signed-off-by:
Laszlo Ersek <lersek@redhat.com> Reviewed-by:
Anthony Liguori <aliguori@us.ibm.com> Message-id: 1363821803-3380-8-git-send-email-lersek@redhat.com Signed-off-by:
Anthony Liguori <aliguori@us.ibm.com>
-
Laszlo Ersek authored
As one consequence, strtok() -- which modifies its argument -- is replaced with g_strsplit(). Signed-off-by:
Laszlo Ersek <lersek@redhat.com> Reviewed-by:
Anthony Liguori <aliguori@us.ibm.com> Message-id: 1363821803-3380-6-git-send-email-lersek@redhat.com Signed-off-by:
Anthony Liguori <aliguori@us.ibm.com>
-
Laszlo Ersek authored
Signed-off-by:
Laszlo Ersek <lersek@redhat.com> Reviewed-by:
Anthony Liguori <aliguori@us.ibm.com> Message-id: 1363821803-3380-2-git-send-email-lersek@redhat.com Signed-off-by:
Anthony Liguori <aliguori@us.ibm.com>
-
- 26 Mar, 2013 7 commits
-
-
Orit Wasserman authored
This will remove an unneeded copy of guest memory pages. For the page header and device state we still copy the data to the static buffer the other option is to allocate the memory on demand which is more expensive. Signed-off-by:
Orit Wasserman <owasserm@redhat.com> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-
Peter Lieven authored
at the beginning of migration all pages are marked dirty and in the first round a bulk migration of all pages is performed. currently all these pages are copied to the page cache regardless of whether they are frequently updated or not. this doesn't make sense since most of these pages are never transferred again. this patch changes the XBZRLE transfer to only be used after the bulk stage has been completed. that means a page is added to the page cache the second time it is transferred and XBZRLE can benefit from the third time of transfer. since the page cache is likely smaller than the number of pages it's also likely that in the second round the page is missing in the cache due to collisions in the bulk phase. on the other hand a lot of unnecessary mallocs, memdups and frees are saved. the following results have been taken earlier while executing the test program from docs/xbzrle.txt. (+) with the patch and (-) without. (thanks to Eric Blake for reformatting and comments) + total time: 22185 milliseconds - total time: 22410 milliseconds Shaved 0.3 seconds, better than 1%! + downtime: 29 milliseconds - downtime: 21 milliseconds Not sure why downtime seemed worse, but probably not the end of the world. + transferred ram: 706034 kbytes - transferred ram: 721318 kbytes Fewer bytes sent - good. + remaining ram: 0 kbytes - remaining ram: 0 kbytes + total ram: 1057216 kbytes - total ram: 1057216 kbytes + duplicate: 108556 pages - duplicate: 105553 pages + normal: 175146 pages - normal: 179589 pages + normal bytes: 700584 kbytes - normal bytes: 718356 kbytes Fewer normal bytes... + cache size: 67108864 bytes - cache size: 67108864 bytes + xbzrle transferred: 3127 kbytes - xbzrle transferred: 630 kbytes ...and more compressed pages sent - good. + xbzrle pages: 117811 pages - xbzrle pages: 21527 pages + xbzrle cache miss: 18750 - xbzrle cache miss: 179589 And very good improvement on the cache miss rate. + xbzrle overflow : 0 - xbzrle overflow : 0 Signed-off-by:
Peter Lieven <pl@kamp.de> Reviewed-by:
Eric Blake <eblake@redhat.com> Reviewed-by:
Orit Wasserman <owasserm@redhat.com> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-
Peter Lieven authored
avoid searching for dirty pages just increment the page offset. all pages are dirty anyway. Signed-off-by:
Peter Lieven <pl@kamp.de> Reviewed-by:
Eric Blake <eblake@redhat.com> Reviewed-by:
Orit Wasserman <owasserm@redhat.com> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-
Peter Lieven authored
during bulk stage of ram migration if a page is a zero page do not send it at all. the memory at the destination reads as zero anyway. even if there is an madvise with QEMU_MADV_DONTNEED at the target upon receipt of a zero page I have observed that the target starts swapping if the memory is overcommitted. it seems that the pages are dropped asynchronously. this patch also updates QMP to return the number of skipped pages in MigrationStats. Signed-off-by:
Peter Lieven <pl@kamp.de> Reviewed-by:
Eric Blake <eblake@redhat.com> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-
Peter Lieven authored
the first round of ram transfer is special since all pages are dirty and thus all memory pages are transferred to the target. this patch adds a boolean variable to track this stage. Signed-off-by:
Peter Lieven <pl@kamp.de> Reviewed-by:
Eric Blake <eblake@redhat.com> Reviewed-by:
Orit Wasserman <owasserm@redhat.com> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-
Peter Lieven authored
virtually all dup pages are zero pages. remove the special is_dup_page() function and use the optimized buffer_find_nonzero_offset() function instead. here buffer_find_nonzero_offset() is used directly to avoid the unnecssary additional checks in buffer_is_zero(). raw performace gain checking 1 GByte zeroed memory over is_dup_page() is approx. 10-12% with SSE2 and 8-10% with unsigned long arithmedtic. Signed-off-by:
Peter Lieven <pl@kamp.de> Reviewed-by:
Orit Wasserman <owasserm@redhat.com> Reviewed-by:
Eric Blake <eblake@redhat.com> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-
Peter Lieven authored
vector optimizations will now be used at various places not just in is_dup_page() in arch_init.c Signed-off-by:
Peter Lieven <pl@kamp.de> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-
- 23 Mar, 2013 1 commit
-
-
Anthony Green authored
Signed-off-by:
Anthony Green <green@moxielogic.com> Signed-off-by:
Blue Swirl <blauwirbel@gmail.com>
-
- 11 Mar, 2013 3 commits
-
-
Peter Lieven authored
The page cache frees all data on finish, on resize and if there is collision on insert. So it should be the caches responsibility to dup the data that is stored in the cache. Signed-off-by:
Peter Lieven <pl@kamp.de> Signed-off-by:
Orit Wasserman <owasserm@redhat.com> Reviewed-by:
Peter Maydell <peter.maydell@linaro.org> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-
Paolo Bonzini authored
Only the migration_bitmap_sync() call needs the iothread lock. Reviewed-by:
Orit Wasserman <owasserm@redhat.com> Reviewed-by:
Juan Quintela <quintela@redhat.com> Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-
Paolo Bonzini authored
This makes it possible to do blocking writes directly to the socket, with no buffer in the middle. For RAM, only the migration_bitmap_sync() call needs the iothread lock. For block migration, it is needed by the block layer (including bdrv_drain_all and dirty bitmap access), but because some code is shared between iterate and complete, all of mig_save_device_dirty is run with the lock taken. In the savevm case, the iterate callback runs within the big lock. This is annoying because it complicates the rules. Luckily we do not need to do anything about it: the RAM iterate callback does not need the iothread lock, and block migration never runs during savevm. Reviewed-by:
Orit Wasserman <owasserm@redhat.com> Reviewed-by:
Juan Quintela <quintela@redhat.com> Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com> Signed-off-by:
Juan Quintela <quintela@redhat.com>
-