From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51072) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZjlHf-0003D9-Dn for qemu-devel@nongnu.org; Wed, 07 Oct 2015 05:45:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZjlHe-0005Yp-JP for qemu-devel@nongnu.org; Wed, 07 Oct 2015 05:45:15 -0400 Received: from mail-pa0-x234.google.com ([2607:f8b0:400e:c03::234]:35986) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZjlHe-0005WM-E1 for qemu-devel@nongnu.org; Wed, 07 Oct 2015 05:45:14 -0400 Received: by pablk4 with SMTP id lk4so16742993pab.3 for ; Wed, 07 Oct 2015 02:45:14 -0700 (PDT) Sender: Richard Henderson From: Richard Henderson Date: Wed, 7 Oct 2015 20:43:51 +1100 Message-Id: <1444211031-11624-27-git-send-email-rth@twiddle.net> In-Reply-To: <1444211031-11624-1-git-send-email-rth@twiddle.net> References: <1444211031-11624-1-git-send-email-rth@twiddle.net> Subject: [Qemu-devel] [PULL 26/26] tcg: Adjust CODE_GEN_AVG_BLOCK_SIZE List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org At present, the "average" guestimate of TB size is way too small, leading to many unused entries in the pre-allocated TB array. For a guest with 1GB ram, we're currently allocating 256MB for the array. Survey arm, alpha, aarch64, ppc, sparc, i686, x86_64 guests running on x86_64 and ppc64 hosts and select a new average. The size of the array drops to 81MB with no more flushing than before. Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- include/exec/exec-all.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h index 71c9d85..a63fd60 100644 --- a/include/exec/exec-all.h +++ b/include/exec/exec-all.h @@ -161,13 +161,14 @@ static inline void tlb_flush_by_mmuidx(CPUState *cpu, ...) #define CODE_GEN_PHYS_HASH_BITS 15 #define CODE_GEN_PHYS_HASH_SIZE (1 << CODE_GEN_PHYS_HASH_BITS) -/* estimated block size for TB allocation */ -/* XXX: use a per code average code fragment size and modulate it - according to the host CPU */ +/* Estimated block size for TB allocation. */ +/* ??? The following is based on a 2015 survey of x86_64 host output. + Better would seem to be some sort of dynamically sized TB array, + adapting to the block sizes actually being produced. */ #if defined(CONFIG_SOFTMMU) -#define CODE_GEN_AVG_BLOCK_SIZE 128 +#define CODE_GEN_AVG_BLOCK_SIZE 400 #else -#define CODE_GEN_AVG_BLOCK_SIZE 64 +#define CODE_GEN_AVG_BLOCK_SIZE 150 #endif #if defined(__arm__) || defined(_ARCH_PPC) \ -- 2.4.3