Re: Time loss after calling netif_rx() in a kernel thread

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi...

On Tue, Jul 1, 2008 at 4:52 AM, Lukas Razik <razik@xxxxxxxxxxxxxxxxxxx> wrote:
> So, I have these questions:
> 1. Why does the yield() call in my kernel thread not force the proceeding of
> the softirqs?
AFAIK , jiffies is updated as a part of bottom halves too (softirqd
IIRC). Thus, further suspicion should be directed to "what's your
current active preemption mode"? I guess it could be voluntary
preemption. Try full preemption and see the difference.

Beyond that, i suggest to use rdtsc() to get better timing
granularity. Jiffies...limits you to 1ms precision....assuming you use
HZ=1000. Further if you use no_hz, there is a chance that jiffies
wouldn't be updated for relatively long ticks.

> 2. Is it normally 'safe' to call do_softirq() in a kernel thread?
>   What should I take into account?

I think normally you won't need to do that. do_softirq will be called
everytime the kernel is finished dealing with interrupts or executing
ksoftirqd. So maybe what you need is to "break off" any potential long
code path. By "breaking off", i mean do things like don't hold lock
too long, don't disable interrupt too long and so on.

hope I help you somehow here.

regards,

Mulyadi.

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux