From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60691) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aRd54-0006gI-Vt for qemu-devel@nongnu.org; Fri, 05 Feb 2016 04:53:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aRd51-000656-Oe for qemu-devel@nongnu.org; Fri, 05 Feb 2016 04:53:34 -0500 Received: from mx1.redhat.com ([209.132.183.28]:55652) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aRd51-00064y-H1 for qemu-devel@nongnu.org; Fri, 05 Feb 2016 04:53:31 -0500 From: Markus Armbruster 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> Date: Fri, 05 Feb 2016 10:53:28 +0100 In-Reply-To: <56B32647.6090602@virtuozzo.com> (Vladimir Sementsov-Ogievskiy's message of "Thu, 4 Feb 2016 13:21:59 +0300") Message-ID: <87vb63fppj.fsf@blackfin.pond.sub.org> MIME-Version: 1.0 Content-Type: text/plain 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: Vladimir Sementsov-Ogievskiy Cc: Xiao Guangrong , "Michael S. Tsirkin" , qemu-devel@nongnu.org, Stefan Hajnoczi , Igor Mammedov , "Denis V. Lunev" 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). [...]