瀏覽代碼

[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…
取消
儲存