On Fri, Feb 01, 2008 at 11:41:48PM +0530, veerasena reddy wrote: > I have a requirement where i need to execute a user process even when the > kernel is utilizing 100% of CPU time. > > Actual scenario is as below: > i have a device on my board. this device keeps generating regular (for every > 2secs) messages for a user process. the user process has to poll on the > device for any message is there to read and get the message from the device. > once the user process reads the message it will be removed in device and uses > for further/subsequent messages. > > I have a test case where i need to send so much traffic through my board such > that the kernel will be utilizing 100% CPU time to process this data. At this > time (when CPU is 100% utilized) the user space process is not getting > scheduled even after a long duration (say 10 minutes to 45 minutes). Mean > time the message buffer in the device is filled up and the device halts (aka > controlled crash; the device firmware has been designed like this) as there > is no more memory on the device. > > To avoid this scenario of device's message queue getting filled up because of > the user space process not reading them, could you please anyone suggest some > technique for getting my user space process scheduled even when there is very > heavy traffic as described above. > > In simple, i can put my requirement like this: > Is there any way i can get a user space process get scheduled in the > above condition (kernel occupying 100% of CPU due to heavy traffic)
The simple answer is that you made a design mistake. If the CPU can't keep up with the data then you picked the wrong cpu for the job. The more complex answer is that you probably really need a realtime system where you can set guarenties on the scheduler time for a given task, even at the expense of the kernel. On the system I work on we had to make sure the 4 ethernet ports didn't overload the CPU, and we actually have the ethernet driver check the system cpu percentage over a small interval and if it goes over a specified percentage, then the port will stop processing incoming packets for one jiffy, giving some time for user space tasks. It's a bit of an ugly hack, but it sure works well. -- Len Sorensen -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/