From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:55343) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uan3h-0001u2-8K for qemu-devel@nongnu.org; Fri, 10 May 2013 09:08:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Uan3c-00012H-Hr for qemu-devel@nongnu.org; Fri, 10 May 2013 09:08:25 -0400 Received: from mx1.redhat.com ([209.132.183.28]:16955) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uan3c-00010O-1P for qemu-devel@nongnu.org; Fri, 10 May 2013 09:08:20 -0400 Message-ID: <518CF130.2030402@redhat.com> Date: Fri, 10 May 2013 15:08:00 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1368188203-3407-1-git-send-email-pbonzini@redhat.com> <874nebdm4r.fsf@codemonkey.ws> In-Reply-To: <874nebdm4r.fsf@codemonkey.ws> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH for-1.5 0/9] Disable expensive QOM cast debugging for official releases List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: mst@redhat.com, qemu-devel@nongnu.org, Aurelien Jarno , Andreas Faerber Il 10/05/2013 15:01, Anthony Liguori ha scritto: > Paolo Bonzini writes: > >> Cast debugging can have a substantial cost (20% or more, measured by >> Aurelien on qemu-system-ppc64). > > [Needs citation] Sure: http://permalink.gmane.org/gmane.comp.emulators.qemu/210830 49,73% perf-10672.map [.] 0x7f7853ab4e0f 13,23% qemu-system-ppc64 [.] cpu_ppc_exec 13,16% libglib-2.0.so.0.3200.4 [.] g_hash_table_lookup 8,18% libglib-2.0.so.0.3200.4 [.] g_str_hash 2,47% qemu-system-ppc64 [.] object_class_dynamic_cast 1,97% qemu-system-ppc64 [.] type_is_ancestor 1,05% libglib-2.0.so.0.3200.4 [.] g_str_equal That's ~27%. >> Instead of adding special-cased "fast >> casts" in the hot paths, we can just disable it in releases. At the >> same time, add tracing facilities that simplify the analysys of those >> problems that cast debugging would reveal. > > I'd prefer not to disable but instead focus on improving performance. For 1.5? This is a regression in 1.5 due to more and more usage of foo_env_on_cpu. Paolo > I suspect any performance overhead is resolving the type string to > typeimpl. One work around is to have a dynamic cast that takes a > typeimpl and then use a function that returns a static similar to how > glib works. > > If you've got a reproducible case where the overhead is high, it should > be easy to check. > > Regards, > > Anthony Liguori > >> >> At least patches 1-7 are for 1.5. >> >> Paolo Bonzini (9): >> qom: improve documentation of cast functions >> qom: allow casting of a NULL class >> qom: add a fast path to object_class_dynamic_cast >> qom: pass file/line/function to asserting casts >> qom: trace asserting casts >> qom: allow turning cast debugging off >> build: disable QOM cast debugging for official releases >> qom: simplify object_class_dynamic_cast, part 1 >> qom: simplify object_class_dynamic_cast, part 2 >> >> configure | 20 ++++++++------ >> include/qom/object.h | 40 ++++++++++++++++++++++----- >> qom/object.c | 77 ++++++++++++++++++++++++++++++++++------------------ >> trace-events | 3 ++ >> 4 files changed, 99 insertions(+), 41 deletions(-) >> >> -- >> 1.8.1.4 >