From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932070AbbLAPFV (ORCPT ); Tue, 1 Dec 2015 10:05:21 -0500 Received: from mga03.intel.com ([134.134.136.65]:9010 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756212AbbLAPFQ (ORCPT ); Tue, 1 Dec 2015 10:05:16 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,369,1444719600"; d="scan'208";a="862212822" Subject: Re: [RFC PATCH V2 0/3] IXGBE/VFIO: Add live migration support for SRIOV NIC To: Alexander Duyck References: <1448372298-28386-1-git-send-email-tianyu.lan@intel.com> <5654722D.4010409@gmail.com> <56552888.90108@intel.com> <56556F98.5060507@intel.com> <565BF285.4040507@intel.com> Cc: "Dong, Eddie" , "a.motakis@virtualopensystems.com" , Alex Williamson , "b.reynal@virtualopensystems.com" , Bjorn Helgaas , "Wyborny, Carolyn" , "Skidmore, Donald C" , "Jani, Nrupal" , Alexander Graf , "kvm@vger.kernel.org" , Paolo Bonzini , "qemu-devel@nongnu.org" , "Tantilov, Emil S" , Or Gerlitz , "Rustad, Mark D" , "Michael S. Tsirkin" , Eric Auger , intel-wired-lan , "Kirsher, Jeffrey T" , "Brandeburg, Jesse" , "Ronciak, John" , "linux-api@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "Williams, Mitch A" , Netdev , "Nelson, Shannon" , Wei Yang , "zajec5@gmail.com" From: "Lan, Tianyu" Message-ID: <565DB6FF.1050602@intel.com> Date: Tue, 1 Dec 2015 23:04:31 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 12/1/2015 12:07 AM, Alexander Duyck wrote: > They can only be corrected if the underlying assumptions are correct > and they aren't. Your solution would have never worked correctly. > The problem is you assume you can keep the device running when you are > migrating and you simply cannot. At some point you will always have > to stop the device in order to complete the migration, and you cannot > stop it before you have stopped your page tracking mechanism. So > unless the platform has an IOMMU that is somehow taking part in the > dirty page tracking you will not be able to stop the guest and then > the device, it will have to be the device and then the guest. > >> >Doing suspend and resume() may help to do migration easily but some >> >devices requires low service down time. Especially network and I got >> >that some cloud company promised less than 500ms network service downtime. > Honestly focusing on the downtime is getting the cart ahead of the > horse. First you need to be able to do this without corrupting system > memory and regardless of the state of the device. You haven't even > gotten to that state yet. Last I knew the device had to be up in > order for your migration to even work. I think the issue is that the content of rx package delivered to stack maybe changed during migration because the piece of memory won't be migrated to new machine. This may confuse applications or stack. Current dummy write solution can ensure the content of package won't change after doing dummy write while the content maybe not received data if migration happens before that point. We can recheck the content via checksum or crc in the protocol after dummy write to ensure the content is what VF received. I think stack has already done such checks and the package will be abandoned if failed to pass through the check. Another way is to tell all memory driver are using to Qemu and let Qemu to migrate these memory after stopping VCPU and the device. This seems safe but implementation maybe complex. From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54084) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a3mUz-0003ho-Kn for qemu-devel@nongnu.org; Tue, 01 Dec 2015 10:05:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a3mUv-0006fP-Gm for qemu-devel@nongnu.org; Tue, 01 Dec 2015 10:05:45 -0500 Received: from mga01.intel.com ([192.55.52.88]:16634) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a3mUv-0006fD-77 for qemu-devel@nongnu.org; Tue, 01 Dec 2015 10:05:41 -0500 References: <1448372298-28386-1-git-send-email-tianyu.lan@intel.com> <5654722D.4010409@gmail.com> <56552888.90108@intel.com> <56556F98.5060507@intel.com> <565BF285.4040507@intel.com> From: "Lan, Tianyu" Message-ID: <565DB6FF.1050602@intel.com> Date: Tue, 1 Dec 2015 23:04:31 +0800 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC PATCH V2 0/3] IXGBE/VFIO: Add live migration support for SRIOV NIC List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alexander Duyck Cc: Wei Yang , "Tantilov, Emil S" , "kvm@vger.kernel.org" , "Michael S. Tsirkin" , "qemu-devel@nongnu.org" , "Brandeburg, Jesse" , "Rustad, Mark D" , "Wyborny, Carolyn" , Eric Auger , "Skidmore, Donald C" , "zajec5@gmail.com" , Alexander Graf , intel-wired-lan , "Kirsher, Jeffrey T" , Or Gerlitz , "Williams, Mitch A" , "Jani, Nrupal" , Bjorn Helgaas , "a.motakis@virtualopensystems.com" , "b.reynal@virtualopensystems.com" , "linux-api@vger.kernel.org" , "Nelson, Shannon" , "Dong, Eddie" , Alex Williamson , "linux-kernel@vger.kernel.org" , "Ronciak, John" , Netdev , Paolo Bonzini On 12/1/2015 12:07 AM, Alexander Duyck wrote: > They can only be corrected if the underlying assumptions are correct > and they aren't. Your solution would have never worked correctly. > The problem is you assume you can keep the device running when you are > migrating and you simply cannot. At some point you will always have > to stop the device in order to complete the migration, and you cannot > stop it before you have stopped your page tracking mechanism. So > unless the platform has an IOMMU that is somehow taking part in the > dirty page tracking you will not be able to stop the guest and then > the device, it will have to be the device and then the guest. > >> >Doing suspend and resume() may help to do migration easily but some >> >devices requires low service down time. Especially network and I got >> >that some cloud company promised less than 500ms network service downtime. > Honestly focusing on the downtime is getting the cart ahead of the > horse. First you need to be able to do this without corrupting system > memory and regardless of the state of the device. You haven't even > gotten to that state yet. Last I knew the device had to be up in > order for your migration to even work. I think the issue is that the content of rx package delivered to stack maybe changed during migration because the piece of memory won't be migrated to new machine. This may confuse applications or stack. Current dummy write solution can ensure the content of package won't change after doing dummy write while the content maybe not received data if migration happens before that point. We can recheck the content via checksum or crc in the protocol after dummy write to ensure the content is what VF received. I think stack has already done such checks and the package will be abandoned if failed to pass through the check. Another way is to tell all memory driver are using to Qemu and let Qemu to migrate these memory after stopping VCPU and the device. This seems safe but implementation maybe complex. From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Lan, Tianyu" Subject: Re: [RFC PATCH V2 0/3] IXGBE/VFIO: Add live migration support for SRIOV NIC Date: Tue, 1 Dec 2015 23:04:31 +0800 Message-ID: <565DB6FF.1050602@intel.com> References: <1448372298-28386-1-git-send-email-tianyu.lan@intel.com> <5654722D.4010409@gmail.com> <56552888.90108@intel.com> <56556F98.5060507@intel.com> <565BF285.4040507@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Cc: "Dong, Eddie" , "a.motakis@virtualopensystems.com" , Alex Williamson , "b.reynal@virtualopensystems.com" , Bjorn Helgaas , "Wyborny, Carolyn" , "Skidmore, Donald C" , "Jani, Nrupal" , Alexander Graf , "kvm@vger.kernel.org" , Paolo Bonzini , "qemu-devel@nongnu.org" , "Tantilov, Emil S" , Or Gerlitz , "Rustad, Mark D" , "Michael S. Tsirkin" , Eric Auger , intel-wired-lan , "Kirsher, Jeffrey T" , "Brande To: Alexander Duyck Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org On 12/1/2015 12:07 AM, Alexander Duyck wrote: > They can only be corrected if the underlying assumptions are correct > and they aren't. Your solution would have never worked correctly. > The problem is you assume you can keep the device running when you are > migrating and you simply cannot. At some point you will always have > to stop the device in order to complete the migration, and you cannot > stop it before you have stopped your page tracking mechanism. So > unless the platform has an IOMMU that is somehow taking part in the > dirty page tracking you will not be able to stop the guest and then > the device, it will have to be the device and then the guest. > >> >Doing suspend and resume() may help to do migration easily but some >> >devices requires low service down time. Especially network and I got >> >that some cloud company promised less than 500ms network service downtime. > Honestly focusing on the downtime is getting the cart ahead of the > horse. First you need to be able to do this without corrupting system > memory and regardless of the state of the device. You haven't even > gotten to that state yet. Last I knew the device had to be up in > order for your migration to even work. I think the issue is that the content of rx package delivered to stack maybe changed during migration because the piece of memory won't be migrated to new machine. This may confuse applications or stack. Current dummy write solution can ensure the content of package won't change after doing dummy write while the content maybe not received data if migration happens before that point. We can recheck the content via checksum or crc in the protocol after dummy write to ensure the content is what VF received. I think stack has already done such checks and the package will be abandoned if failed to pass through the check. Another way is to tell all memory driver are using to Qemu and let Qemu to migrate these memory after stopping VCPU and the device. This seems safe but implementation maybe complex. From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lan, Tianyu Date: Tue, 1 Dec 2015 23:04:31 +0800 Subject: [Intel-wired-lan] [RFC PATCH V2 0/3] IXGBE/VFIO: Add live migration support for SRIOV NIC In-Reply-To: References: <1448372298-28386-1-git-send-email-tianyu.lan@intel.com> <5654722D.4010409@gmail.com> <56552888.90108@intel.com> <56556F98.5060507@intel.com> <565BF285.4040507@intel.com> Message-ID: <565DB6FF.1050602@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: intel-wired-lan@osuosl.org List-ID: On 12/1/2015 12:07 AM, Alexander Duyck wrote: > They can only be corrected if the underlying assumptions are correct > and they aren't. Your solution would have never worked correctly. > The problem is you assume you can keep the device running when you are > migrating and you simply cannot. At some point you will always have > to stop the device in order to complete the migration, and you cannot > stop it before you have stopped your page tracking mechanism. So > unless the platform has an IOMMU that is somehow taking part in the > dirty page tracking you will not be able to stop the guest and then > the device, it will have to be the device and then the guest. > >> >Doing suspend and resume() may help to do migration easily but some >> >devices requires low service down time. Especially network and I got >> >that some cloud company promised less than 500ms network service downtime. > Honestly focusing on the downtime is getting the cart ahead of the > horse. First you need to be able to do this without corrupting system > memory and regardless of the state of the device. You haven't even > gotten to that state yet. Last I knew the device had to be up in > order for your migration to even work. I think the issue is that the content of rx package delivered to stack maybe changed during migration because the piece of memory won't be migrated to new machine. This may confuse applications or stack. Current dummy write solution can ensure the content of package won't change after doing dummy write while the content maybe not received data if migration happens before that point. We can recheck the content via checksum or crc in the protocol after dummy write to ensure the content is what VF received. I think stack has already done such checks and the package will be abandoned if failed to pass through the check. Another way is to tell all memory driver are using to Qemu and let Qemu to migrate these memory after stopping VCPU and the device. This seems safe but implementation maybe complex.