From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40970) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZxIrS-0007ME-6R for qemu-devel@nongnu.org; Fri, 13 Nov 2015 13:14:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZxIrO-00066a-3p for qemu-devel@nongnu.org; Fri, 13 Nov 2015 13:14:10 -0500 Received: from mx2.suse.de ([195.135.220.15]:44650) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZxIrN-00064W-Px for qemu-devel@nongnu.org; Fri, 13 Nov 2015 13:14:06 -0500 References: <1444739866-14798-1-git-send-email-berrange@redhat.com> <1444739866-14798-7-git-send-email-berrange@redhat.com> From: =?UTF-8?Q?Andreas_F=c3=a4rber?= Message-ID: <5646286B.2030307@suse.de> Date: Fri, 13 Nov 2015 19:14:03 +0100 MIME-Version: 1.0 In-Reply-To: <1444739866-14798-7-git-send-email-berrange@redhat.com> Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v4 6/7] qom: replace object property list with GHashTable List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Daniel P. Berrange" , qemu-devel@nongnu.org, Pavel Fedin Cc: Paolo Bonzini , Markus Armbruster , Christian Borntraeger , Peter Maydell Am 13.10.2015 um 14:37 schrieb Daniel P. Berrange: > From: Pavel Fedin >=20 > ARM GICv3 systems with large number of CPUs create lots of IRQ pins. Si= nce > every pin is represented as a property, number of these properties beco= mes > very large. Every property add first makes sure there's no duplicates. > Traversing the list becomes very slow, therefore qemu initialization ta= kes > significant time (several seconds for e. g. 16 CPUs). >=20 > This patch replaces list with GHashTable, making lookup very fast. The = only > drawback is that object_child_foreach() and object_child_foreach_recurs= ive() > cannot modify their objects during traversal, since GHashTableIter does= not > have modify-safe version. However, the code seems not to modify objects= via > these functions. >=20 > Signed-off-by: Daniel P. Berrange > Signed-off-by: Pavel Fedin (note these seemed misordered) I have queued things up to 6/7 on qom-next: https://github.com/afaerber/qemu-cpu/commits/qom-next This patch didn't apply and I had to hand-apply one hunk (which I double-checked, but you never know). Unfortunately I run into this test failure: TEST: tests/device-introspect-test... (pid=3D4094) /s390x/device/introspect/list: OK /s390x/device/introspect/none: OK /s390x/device/introspect/abstract: OK /s390x/device/introspect/concrete: (process:4102): GLib-CRITICAL **: g_hash_table_iter_next: assertion 'ri->version =3D=3D ri->hash_table->version' failed (process:4102): GLib-CRITICAL **: g_hash_table_iter_next: assertion 'ri->version =3D=3D ri->hash_table->version' failed (process:4102): GLib-CRITICAL **: iter_remove_or_steal: assertion 'ri->version =3D=3D ri->hash_table->version' failed ** ERROR:/home/andreas/QEMU/qemu/qom/object.c:867:object_unref: assertion failed: (obj->ref > 0) Broken pipe FAIL GTester: last random seed: R02S4fa2068506971129a7ebe2323dbe03b7 (pid=3D4104) FAIL: tests/device-introspect-test TEST: tests/qom-test... (pid=3D4105) /s390x/qom/s390-ccw-virtio-2.5: OK /s390x/qom/s390-ccw-virtio-2.4: OK /s390x/qom/none: OK /s390x/qom/s390-virtio: WARNING The s390-virtio machine (non-ccw) is deprecated. It will be removed in 2.6. Please use s390-ccw-virtio OK PASS: tests/qom-test Are you sure you tested all targets? Any hunch where this might stem from? The below patch reveals that the ref count is 0. Might be just a symptom of the actual problem though. diff --git a/qom/object.c b/qom/object.c index 0ac3bc1..9aa6159 100644 --- a/qom/object.c +++ b/qom/object.c @@ -864,7 +864,7 @@ void object_unref(Object *obj) if (!obj) { return; } - g_assert(obj->ref > 0); + g_assert_cmpint(obj->ref, >, 0); /* parent always holds a reference to its children */ if (atomic_fetch_dec(&obj->ref) =3D=3D 1) { Regards, Andreas --=20 SUSE Linux GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Felix Imend=F6rffer, Jane Smithard, Graham Norton; HRB 21284 (AG N=FC= rnberg)