From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60355) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aRH3L-00031q-SG for qemu-devel@nongnu.org; Thu, 04 Feb 2016 05:22:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aRH3H-0007H3-Pm for qemu-devel@nongnu.org; Thu, 04 Feb 2016 05:22:19 -0500 Received: from mx2.parallels.com ([199.115.105.18]:54388) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aRH3H-0007Gt-Jf for qemu-devel@nongnu.org; Thu, 04 Feb 2016 05:22:15 -0500 Message-ID: <56B32647.6090602@virtuozzo.com> Date: Thu, 4 Feb 2016 13:21:59 +0300 From: Vladimir Sementsov-Ogievskiy MIME-Version: 1.0 References: <1453963872-13549-1-git-send-email-vsementsov@virtuozzo.com> <1453963872-13549-4-git-send-email-vsementsov@virtuozzo.com> <56B12A05.4060305@redhat.com> <87vb65n6le.fsf@blackfin.pond.sub.org> <56B23707.3030800@virtuozzo.com> <87mvrhf136.fsf@blackfin.pond.sub.org> In-Reply-To: <87mvrhf136.fsf@blackfin.pond.sub.org> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 3/3] balloon: don't use NVDIMM for ballooning List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster Cc: Xiao Guangrong , "Michael S. Tsirkin" , qemu-devel@nongnu.org, Stefan Hajnoczi , "Denis V. Lunev" , Igor Mammedov On 04.02.2016 09:20, Markus Armbruster wrote: > Vladimir Sementsov-Ogievskiy writes: > >> On 03.02.2016 18:42, Markus Armbruster wrote: >>> Eric Blake writes: >>> >>>> On 01/27/2016 11:51 PM, Vladimir Sementsov-Ogievskiy wrote: >>>>> NVDIMM for now is planned to use as a backing store for DAX filesystem >>>>> in the guest and thus this memory is excluded from guest memory >>>>> management and LRUs. >>>>> >>>>> In this case libvirt running QEMU along with configured balloon almost >>>>> immediately inflates balloon and effectively kill the guest as >>>>> qemu counts nvdimm as part of the ram. >>>>> >>>>> Counting dimm devices as part of the ram for ballooning was started from >>>>> commit 463756d03: >>>>> virtio-balloon: Fix balloon not working correctly when hotplug memory >>>>> >>>>> Signed-off-by: Vladimir Sementsov-Ogievskiy >>>>> Signed-off-by: Denis V. Lunev >>>>> CC: Stefan Hajnoczi >>>>> CC: Xiao Guangrong >>>>> CC: "Michael S. Tsirkin" >>>>> CC: Igor Mammedov >>>>> CC: Eric Blake >>>>> CC: Markus Armbruster >>>>> --- >>>>> @@ -308,7 +309,9 @@ static ram_addr_t get_current_ram_size(void) >>>>> if (value) { >>>>> switch (value->type) { >>>>> case MEMORY_DEVICE_INFO_KIND_DIMM: >>>>> - size += value->u.dimm->size; >>>>> + if (strcmp(value->u.dimm->type, TYPE_NVDIMM)) { >>>> If you fix 2/3 to use a QAPI enum, then this will be an integer compare >>>> instead of a strcmp(). >>> Another option is to add a flag to the subtypes of TYPE_PC_DIMM, set it >>> for the subtypes that should be counted here, and accumulate the sizes >>> of devices where the flag is set. Requires iterating directly over the >>> devices here (like qmp_pc_dimm_device_list() does under the hood) rather >>> than the MemoryDeviceInfoList returned by qmp_pc_dimm_device_list(), >> It was my first approach but it was rejected) >> >> As another option I can make a function iterating over the devices and >> return list of them, and then use it instead of >> qmp_pc_dimm_device_list.. Then, I'll have pointers to devices and can >> use object_dynamic_cast. > I fail to see how splitting a tree walk doing stuff into a tree walk > creating a list and a list walk doing stuff makes things better :) It will allow me not touch qapi) > > Anyway, you guys figure it out. The only part where I get involved is > QAPI design. -- Best regards, Vladimir