From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56961) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aRf4X-0005P7-0g for qemu-devel@nongnu.org; Fri, 05 Feb 2016 07:01:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aRf4Q-0000aP-S0 for qemu-devel@nongnu.org; Fri, 05 Feb 2016 07:01:08 -0500 Received: from mx2.parallels.com ([199.115.105.18]:51990) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aRf4Q-0000aL-Lx for qemu-devel@nongnu.org; Fri, 05 Feb 2016 07:01:02 -0500 Message-ID: <56B48EED.70106@virtuozzo.com> Date: Fri, 5 Feb 2016 15:00:45 +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> <56B32647.6090602@virtuozzo.com> <87vb63fppj.fsf@blackfin.pond.sub.org> In-Reply-To: <87vb63fppj.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 , Igor Mammedov , "Denis V. Lunev" On 05.02.2016 12:53, Markus Armbruster wrote: > Vladimir Sementsov-Ogievskiy writes: > >> 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) > Sounds like your first approach was the right approach. > >>>> 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) > Whatever it takes to get this fix past the gaggle of maintainers (I can > relate to that). > > [...] Everything is in your hands). I'm not mind if someone take any of this series versions, tune it as he wants and merge. It is a bug fix, but the discussion looks like I'm trying to add a new feature) -- Best regards, Vladimir