소스 검색

[intel] Exclude time spent in hypervisor from profiling

When profiling, exclude any time spent inside the hypervisor
responding to our MMIO accesses.  This substantially reduces the
variance accumulated on many other profilers.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 10 년 전
부모
커밋
abf875a2e5
1개의 변경된 파일3개의 추가작업 그리고 0개의 파일을 삭제
  1. 3
    0
      src/drivers/net/intel.c

+ 3
- 0
src/drivers/net/intel.c 파일 보기

@@ -496,6 +496,7 @@ void intel_refill_rx ( struct intel_nic *intel ) {
496 496
 		profile_start ( &intel_vm_refill_profiler );
497 497
 		writel ( rx_tail, intel->regs + intel->rx.reg + INTEL_xDT );
498 498
 		profile_stop ( &intel_vm_refill_profiler );
499
+		profile_exclude ( &intel_vm_refill_profiler );
499 500
 	}
500 501
 }
501 502
 
@@ -634,6 +635,7 @@ int intel_transmit ( struct net_device *netdev, struct io_buffer *iobuf ) {
634 635
 	profile_start ( &intel_vm_tx_profiler );
635 636
 	writel ( tx_tail, intel->regs + intel->tx.reg + INTEL_xDT );
636 637
 	profile_stop ( &intel_vm_tx_profiler );
638
+	profile_exclude ( &intel_vm_tx_profiler );
637 639
 
638 640
 	DBGC2 ( intel, "INTEL %p TX %d is [%llx,%llx)\n", intel, tx_idx,
639 641
 		( ( unsigned long long ) address ),
@@ -728,6 +730,7 @@ static void intel_poll ( struct net_device *netdev ) {
728 730
 	profile_start ( &intel_vm_poll_profiler );
729 731
 	icr = readl ( intel->regs + INTEL_ICR );
730 732
 	profile_stop ( &intel_vm_poll_profiler );
733
+	profile_exclude ( &intel_vm_poll_profiler );
731 734
 	if ( ! icr )
732 735
 		return;
733 736
 

Loading…
취소
저장