From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:42613) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UIjNX-0006wF-Cs for qemu-devel@nongnu.org; Thu, 21 Mar 2013 13:34:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UIjNQ-0006Q2-Vs for qemu-devel@nongnu.org; Thu, 21 Mar 2013 13:34:15 -0400 Received: from mx1.redhat.com ([209.132.183.28]:2465) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UIjNQ-0006Pg-N3 for qemu-devel@nongnu.org; Thu, 21 Mar 2013 13:34:08 -0400 Message-ID: <514B44D5.5020602@redhat.com> Date: Thu, 21 Mar 2013 19:35:17 +0200 From: Orit Wasserman MIME-Version: 1.0 References: <1363881940-27505-1-git-send-email-owasserm@redhat.com> <514B3F9A.107@redhat.com> In-Reply-To: <514B3F9A.107@redhat.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3 0/9] Migration: Remove copying of guest ram pages List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: mst@redhat.com, chegu_vinod@hp.com, qemu-devel@nongnu.org, quintela@redhat.com On 03/21/2013 07:12 PM, Paolo Bonzini wrote: > Il 21/03/2013 17:05, Orit Wasserman ha scritto: >> In migration all data is copied to a static buffer in QEMUFile, >> this hurts our network bandwidth and CPU usage especially with large guests. >> We switched to iovec for storing different buffers to send (even a byte field is >> considered as a buffer) and use writev to send the iovec. >> writev was chosen (as apposed to sendmsg) because it supprts non socket fds. >> >> Guest memory pages are not copied by calling a new function >> qemu_put_buffer_no_copy. >> The page header data and device state data are still copied into the static >> buffer. This data consists of a lot of bytes and integer fields and the static >> buffer is used to store it during batching. >> Another improvement is changing qemu_putbe64/32/16 to create a single >> buffer instead of several byte sized buffer. >> >> git repository: git://github.com/oritwas/qemu.git sendv_v2 >> >> Change from v2: >> Always send data for the iovec even if writev_buffer is not implemented. >> Coalesce adjacent iovecs to create one big buffer from small adjacent buffer. >> >> Changes from v1: >> Use iov_send for socket. >> Make writev_buffer optional and if it is not implemented use put_buffer > > I didn't review it too closely, so I don't feel like giving my > Reviewed-by. Still, I must say it is a very nice and simple solution. > Kudos! > > Just one question: patch 6 is not strictly needed anymore now that you > have coalescing, no? Should Juan leave it out? true, Juan had a small fix so I'm sending v4 I will remove it. > > Paolo >