[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] xen_evtchn_do_upcall
Hi, Is anybody know the purpose of this method (xen_evtchn_do_upcall)? 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) 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 |