is it possible to liimit the softirq re entrance times
vichy
vichy.kuo at gmail.com
Thu Aug 20 22:27:30 PDT 2015
hi Russel:
2015-08-21 4:05 GMT+08:00 Russell King - ARM Linux <linux at arm.linux.org.uk>:
> On Fri, Aug 21, 2015 at 01:09:23AM +0800, vichy wrote:
>> My question are:
>> 1. in __do_sofiq, there is a jiffies setting to make sure the whole
>> softirq will not took to long.
>> But in my case is there any many hard irq happen like below
>>
>> trace_softirq_entry(vec_nr); ------a
>> h->action(h);
>> trace_softirq_exit(vec_nr); ---------b
>>
>> from lttng, I see there 100 interrupt happen from entry to exit.
>
> Firstly, I don't trust the trace infrastructure all that much for
> performance measurements: it has a non-zero overhead (especially if
> you turn on stack tracing), and if you want to do these kinds of
> measurements, you first need to ascertain what that overhead is, so
> you can subtract the effect of having trace enabled from the
> observations. It's quite possible that a number of those 100
> interrupts are happening in the trace code recording the softirq
> entry and exit events.
>
> Secondly, you seem to be saying that 100 interrupts happen in
> h->action(). You don't specify the frequency of those interrupts.
> You also don't mention (which is more important) how long h->action()
> takes to run. You also don't say which softirq it is.
I pasted some part of trace I captured as below.
>
> From the sounds of it, whatever soft irq handler is running, it's the
> handler itself which is the cause of your problem, but not knowing any
> of the details in my second point above, it's impossible to tell.
I paste the log I got from trace
>You don't specify the frequency of those interrupts.
those are ramdomly happen because usb devices is receiving/sending data.
> You also don't mention (which is more important) how long h->action()
it is about 12.915016ms
> takes to run. You also don't say which softirq it is.
the sofirq vec =1, from the kernel define, it should be TIMER_SOFTIRQ
Isn't there any upward bound for softirq interruptted by HW irq?
Sincerely appreciate your kind explaination,
enum
{
HI_SOFTIRQ=0,
TIMER_SOFTIRQ,
NET_TX_SOFTIRQ,
NET_RX_SOFTIRQ,
BLOCK_SOFTIRQ,
BLOCK_IOPOLL_SOFTIRQ,
TASKLET_SOFTIRQ,
SCHED_SOFTIRQ,
HRTIMER_SOFTIRQ,
RCU_SOFTIRQ, /* Preferable RCU should always be the last softirq */
NR_SOFTIRQS
};
43:08.755 688 556 bla_0 0 softirq_entry
vec=1 3 20
43:08.755 895 172 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.755 993 380 bla_0 0 mm_page_alloc
page=0xeb124c00, order=3, gfp_flags=16928, migratetype=0 3
20
43:08.756 178 924 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.756 190 100 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.756 244 276 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.756 396 860 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.757 002 436 bla_0 0 irq_handler_entry
irq=29, name=twd 3 20
43:08.757 040 244 bla_0 0 irq_handler_exit
irq=29, ret=1 3 20
43:08.757 046 268 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.757 785 772 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.757 800 220 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.758 586 644 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.758 598 196 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.759 040 900 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.759 113 724 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.759 480 276 bla_0 0 mm_page_alloc
page=0xeb11ff00, order=3, gfp_flags=16928, migratetype=0 3
20
43:08.759 663 100 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.759 675 884 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.760 020 468 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.760 030 604 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.760 388 452 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.760 398 484 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.760 980 348 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.760 989 820 bla_0 0 irq_handler_entry
irq=29, name=twd 3 20
43:08.761 029 324 bla_0 0 irq_handler_exit
irq=29, ret=1 3 20
43:08.761 035 908 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.761 753 780 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.761 767 956 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.762 125 924 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.762 135 964 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.762 190 300 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.762 276 580 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.762 733 724 bla_0 0 mm_page_alloc
page=0xeb12be00, order=3, gfp_flags=16928, migratetype=0 3
20
43:08.762 943 404 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.762 963 852 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.763 678 020 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.763 689 796 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.764 390 884 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.764 402 372 bla_0 0 irq_handler_entry
irq=29, name=twd 3 20
43:08.765 204 812 bla_0 0 irq_handler_exit
irq=29, ret=1 3 20
43:08.765 216 436 bla_0 0 irq_handler_entry
irq=41, name=irq 3 20
43:08.765 242 924 bla_0 0 irq_handler_exit
irq=41, ret=1 3 20
43:08.765 264 092 bla_0 0 irq_handler_entry
irq=53, name=irq 3 20
43:08.765 269 276 bla_0 0 irq_handler_exit
irq=53, ret=1 3 20
43:08.765 274 644 bla_0 0 irq_handler_entry
irq=54, name=irq 3 20
43:08.765 290 572 bla_0 0 irq_handler_exit
irq=54, ret=1 3 20
43:08.765 298 316 bla_0 0 irq_handler_entry
irq=55, name=irq 3 20
43:08.765 423 564 bla_0 0 irq_handler_exit
irq=55, ret=1 3 20
43:08.765 433 724 bla_0 0 irq_handler_entry
irq=80, name=irq 3 20
43:08.765 450 188 bla_0 0 irq_handler_exit
irq=80, ret=1 3 20
43:08.765 456 628 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.765 711 252 bla_0 0 mm_page_alloc
page=0xeb123f40, order=1, gfp_flags=2118176, migratetype=0 3
20
43:08.766 252 228 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.766 266 716 bla_0 0 irq_handler_entry
irq=54, name=irq 3 20
43:08.766 282 220 bla_0 0 irq_handler_exit
irq=54, ret=1 3 20
43:08.766 288 460 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.766 550 108 bla_0 0 mm_page_alloc
page=0xeb12b600, order=3, gfp_flags=16928, migratetype=0 3
20
43:08.767 185 100 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.767 203 156 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.767 949 260 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.767 960 020 bla_0 0 irq_handler_entry
irq=87, name=ehci_hcd:usb3 3 20
43:08.768 395 340 bla_0 0 irq_handler_exit
irq=87, ret=1 3 20
43:08.768 496 332 bla_0 0 irq_handler_entry
irq=29, name=twd 3 20
43:08.768 537 452 bla_0 0 irq_handler_exit
irq=29, ret=1 3 20
43:08.768 603 572 bla_0 0 softirq_exit
vec=1 3 20
More information about the linux-arm-kernel
mailing list