On 9/27/07, Bruce Rowen <browen@xxxxxxxxxxxx> wrote: > While working on an embedded Linux project I came across a strange > problem. > > My platform is a 500MHz Geode based PC-104 running the preemption > options of the 2.6.13 kernel. The platform is diskless (no swap) with > 256MB. The system timer is set to 1 KHz. > > I have an application that uses a number of tasklets which respond to > a 100Hz interrupt. Normally these tasklets finish in about 600uSec or > so. > > I recently upped the memory to 1GB and now the tasklets will miss the > 100Hz interrupt on occasion. The only change has been the added > memory (problem goes away when I put the 256MB back in). > > Here is the strange part: > > According to my internal counter and the jiffies counter. The > 'dropped' tasklets occur on _exactly_ 10 minute boundaries (600,000 > jiffies). Never one less or one more, always 600k. > I tried running my tasklets with tasklet_hi_schedule() which should > put them above timers and ethernet but observe no changes. Whatever > is delaying my tasklets is blocking about 8 milliseconds of cpu every > Please elaborate on "dropped tasklets"? Do u mean that the scheduler did not execute it at the interval you specified? If so, then I think this (full kernel preemptibility) is not guaranteed by Linux kernel. A lot of complex scenario (which I cannot cite or imagine) may happen between having 256M vs 1G ram, which result in kernel preemption not as successful as in the 256M version. You may try out the -rt (realtime) branch of the kernel. But if you mean that the tasks just disappeared without the tasklet itself exiting, then I think that will be a bug in the kernel. Sorry, cannot help much, may be others can comment? -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ