tcg: Adjust CODE_GEN_AVG_BLOCK_SIZE
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 <aurelien@aurel32.net> Signed-off-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
		
							parent
							
								
									b125f9dc7b
								
							
						
					
					
						commit
						126d89e8cd
					
				| @ -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) \ | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Richard Henderson
						Richard Henderson