profiler: Reenable built-in profiler
2ed1ebcf6 "timer: replace time() with QEMU_CLOCK_HOST" broke compile when configured with --enable-profiler. Turned out the profiler has been broken for a while. This does s/qemu_time/tcg_time/ as the profiler only works in a TCG mode. This also fixes the compile error. This changes profile_getclock() to return nanoseconds rather than CPU ticks as the "profile" HMP command prints seconds and there is no platform-independent way to get ticks-per-second rate. Since TCG is quite slow and get_clock() returns nanoseconds (fine enough), this should not affect precision much. This removes unused qemu_time_start and tlb_flush_time. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Message-Id: <1426478258-29961-1-git-send-email-aik@ozlabs.ru> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
		
							parent
							
								
									b680c5ba54
								
							
						
					
					
						commit
						89d5cbddee
					
				
							
								
								
									
										2
									
								
								cpus.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								cpus.c
									
									
									
									
									
								
							| @ -1353,7 +1353,7 @@ static int tcg_cpu_exec(CPUArchState *env) | ||||
|     } | ||||
|     ret = cpu_exec(env); | ||||
| #ifdef CONFIG_PROFILER | ||||
|     qemu_time += profile_getclock() - ti; | ||||
|     tcg_time += profile_getclock() - ti; | ||||
| #endif | ||||
|     if (use_icount) { | ||||
|         /* Fold pending instructions back into the
 | ||||
|  | ||||
| @ -999,11 +999,10 @@ static inline int64_t cpu_get_real_ticks (void) | ||||
| #ifdef CONFIG_PROFILER | ||||
| static inline int64_t profile_getclock(void) | ||||
| { | ||||
|     return cpu_get_real_ticks(); | ||||
|     return get_clock(); | ||||
| } | ||||
| 
 | ||||
| extern int64_t qemu_time, qemu_time_start; | ||||
| extern int64_t tlb_flush_time; | ||||
| extern int64_t tcg_time; | ||||
| extern int64_t dev_time; | ||||
| #endif | ||||
| 
 | ||||
|  | ||||
| @ -1975,7 +1975,7 @@ static void hmp_info_numa(Monitor *mon, const QDict *qdict) | ||||
| 
 | ||||
| #ifdef CONFIG_PROFILER | ||||
| 
 | ||||
| int64_t qemu_time; | ||||
| int64_t tcg_time; | ||||
| int64_t dev_time; | ||||
| 
 | ||||
| static void hmp_info_profile(Monitor *mon, const QDict *qdict) | ||||
| @ -1983,8 +1983,8 @@ static void hmp_info_profile(Monitor *mon, const QDict *qdict) | ||||
|     monitor_printf(mon, "async time  %" PRId64 " (%0.3f)\n", | ||||
|                    dev_time, dev_time / (double)get_ticks_per_sec()); | ||||
|     monitor_printf(mon, "qemu time   %" PRId64 " (%0.3f)\n", | ||||
|                    qemu_time, qemu_time / (double)get_ticks_per_sec()); | ||||
|     qemu_time = 0; | ||||
|                    tcg_time, tcg_time / (double)get_ticks_per_sec()); | ||||
|     tcg_time = 0; | ||||
|     dev_time = 0; | ||||
| } | ||||
| #else | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Alexey Kardashevskiy
						Alexey Kardashevskiy