[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] xen_evtchn_do_upcall
On Mon, 2012-10-22 at 02:51 +0100, David Xu wrote: > Hi, > > > Is anybody know the purpose of this method (xen_evtchn_do_upcall)? It is the callback used to inject event channels events (i.e. IRQs) into the guest. You would expect to see it at the base of any stack trace taken from interrupt context. > When I run a user level application involved in TCP receiving and the > SoftIRQ for eth0 on the same CPU core, everything is OK. But if I run > them on 2 different cores, there will be xen_evtchn_do_upcall() > existing (maybe when the local_bh_disable() or local_bh_enable() is > called) it would not be unusual to get an interrupt immediately after re-enabling interrupts. > in __inet_lookup_established() routine which costs longer time than > the first scenario. Is it due to the synchronization issue between > process context and softirq context? Thanks for any reply. > > > 1) | __inet_lookup_established() { > 1) | xen_evtchn_do_upcall() { > 1) 0.054 us | exit_idle(); > 1) | irq_enter() { > 1) | rcu_irq_enter() { > 1) 0.102 us | rcu_exit_nohz(); > 1) 0.431 us | } > 1) 0.064 us | idle_cpu(); > 1) 1.152 us | } > 1) | __xen_evtchn_do_upcall() { > 1) 0.119 us | irq_to_desc(); > 1) | handle_edge_irq() { > 1) 0.107 us | _raw_spin_lock(); > 1) | ack_dynirq() { > 1) | evtchn_from_irq() { > 1) | info_for_irq() { > 1) | irq_get_irq_data() { > 1) 0.052 us | irq_to_desc(); > 1) 0.418 us | } > 1) 0.782 us | } > 1) 1.135 us | } > 1) 0.049 us | irq_move_irq(); > 1) 1.800 us | } > 1) | handle_irq_event() { > 1) 0.161 us | _raw_spin_unlock(); > 1) | handle_irq_event_percpu() { > 1) | xennet_interrupt() { > 1) 0.125 us | _raw_spin_lock_irqsave(); > 1) | xennet_tx_buf_gc() { > 1) 0.079 us | gnttab_query_foreign_access(); > 1) 0.050 us | gnttab_end_foreign_access_ref(); > 1) 0.069 us | gnttab_release_grant_reference(); > 1) | dev_kfree_skb_irq() { > 1) 0.055 us | raise_softirq_irqoff(); > 1) 0.472 us | } > 1) 0.049 us | gnttab_query_foreign_access(); > 1) 0.058 us | gnttab_end_foreign_access_ref(); > 1) 0.058 us | gnttab_release_grant_reference(); > 1) | dev_kfree_skb_irq() { > 1) 0.050 us | raise_softirq_irqoff(); > 1) 0.456 us | } > 1) 3.714 us | } > 1) 0.102 us | _raw_spin_unlock_irqrestore(); > 1) 4.857 us | } > 1) 0.061 us | note_interrupt(); > 1) 5.571 us | } > 1) 0.054 us | _raw_spin_lock(); > 1) 6.707 us | } > 1) 0.083 us | _raw_spin_unlock(); > 1) + 10.083 us | } > 1) + 10.985 us | } > 1) | irq_exit() { > 1) | rcu_irq_exit() { > 1) 0.087 us | rcu_enter_nohz(); > 1) 0.429 us | } > 1) 0.049 us | idle_cpu(); > 1) 1.088 us | } > 1) + 14.551 us | } > 1) 0.191 us | } /* __inet_lookup_established */ _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |