mirror of https://github.com/ipxe/ipxe.git
[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>pull/19/head
parent
6f410a16d9
commit
abf875a2e5
|
@ -496,6 +496,7 @@ void intel_refill_rx ( struct intel_nic *intel ) {
|
|||
profile_start ( &intel_vm_refill_profiler );
|
||||
writel ( rx_tail, intel->regs + intel->rx.reg + INTEL_xDT );
|
||||
profile_stop ( &intel_vm_refill_profiler );
|
||||
profile_exclude ( &intel_vm_refill_profiler );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -634,6 +635,7 @@ int intel_transmit ( struct net_device *netdev, struct io_buffer *iobuf ) {
|
|||
profile_start ( &intel_vm_tx_profiler );
|
||||
writel ( tx_tail, intel->regs + intel->tx.reg + INTEL_xDT );
|
||||
profile_stop ( &intel_vm_tx_profiler );
|
||||
profile_exclude ( &intel_vm_tx_profiler );
|
||||
|
||||
DBGC2 ( intel, "INTEL %p TX %d is [%llx,%llx)\n", intel, tx_idx,
|
||||
( ( unsigned long long ) address ),
|
||||
|
@ -728,6 +730,7 @@ static void intel_poll ( struct net_device *netdev ) {
|
|||
profile_start ( &intel_vm_poll_profiler );
|
||||
icr = readl ( intel->regs + INTEL_ICR );
|
||||
profile_stop ( &intel_vm_poll_profiler );
|
||||
profile_exclude ( &intel_vm_poll_profiler );
|
||||
if ( ! icr )
|
||||
return;
|
||||
|
||||
|
|
Loading…
Reference in New Issue