public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Kernel Thread in Device Driver
@ 2004-12-03 10:10 Kiran Kumar Gaitonde
  2004-12-03 15:31 ` Peter W. Morreale
  0 siblings, 1 reply; 2+ messages in thread
From: Kiran Kumar Gaitonde @ 2004-12-03 10:10 UTC (permalink / raw)
  To: linux-kernel

Hi all.

I am working on a device driver with the device interrupts are actaully 
serviced in a kernel thread and not in the interrupt handler registered 
with the kernel. The interrupt handler justs wakes up the kthread when a 
interrupt occurs. This is done as we need to use semaphores while 
performing IO to sync the read and writes.
Now I have come across a situation where the kthread is consuming 70% of 
CPU time as it is in a loop to service the interrupts happening very 
very fast, and it is rearly saying schedule(). The performance of the 
application which uses this device to communicate, is not good as it is 
not getting CPU at the right time.

Can anybody tell me what may be the problem. Also any suggestions to 
overcome this issue?

Thanks in Advance,

Regards,
Kiran Gaitonde.


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Kernel Thread in Device Driver
  2004-12-03 10:10 Kernel Thread in Device Driver Kiran Kumar Gaitonde
@ 2004-12-03 15:31 ` Peter W. Morreale
  0 siblings, 0 replies; 2+ messages in thread
From: Peter W. Morreale @ 2004-12-03 15:31 UTC (permalink / raw)
  To: Kiran Kumar Gaitonde; +Cc: linux-kernel

You might try adding a "yield()" in the loop, perhaps modulo some number of
interrupts handled (assuming, of course, your interrupts are queued).

yield() will place the current task at the 'end' of the run list and 
schedule().  If another task is
eligible to execute, it will get the slice.  

-PWM



Kiran Kumar Gaitonde wrote:

> Hi all.
>
> I am working on a device driver with the device interrupts are 
> actaully serviced in a kernel thread and not in the interrupt handler 
> registered with the kernel. The interrupt handler justs wakes up the 
> kthread when a interrupt occurs. This is done as we need to use 
> semaphores while performing IO to sync the read and writes.
> Now I have come across a situation where the kthread is consuming 70% 
> of CPU time as it is in a loop to service the interrupts happening 
> very very fast, and it is rearly saying schedule(). The performance of 
> the application which uses this device to communicate, is not good as 
> it is not getting CPU at the right time.
>
> Can anybody tell me what may be the problem. Also any suggestions to 
> overcome this issue?
>
> Thanks in Advance,
>
> Regards,
> Kiran Gaitonde.
>
> -
> To unsubscribe from this list: send the line "unsubscribe 
> linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/


-- 
Peter W. Morreale                            email: morreale@radiantdata.com
Director of Engineering                      Niwot, Colorado, USA
Radiant Data Corporation                     voice: (303) 652-0870 x108 
-----------------------------------------------------------------------------
This transmission may contain information that is privileged, confidential
and/or exempt from disclosure under applicable law. If you are not the
intended recipient, you are hereby notified that any disclosure, copying,
distribution, or use of the information contained herein (including any
reliance thereon) is STRICTLY PROHIBITED. If you received this transmission
in error, please immediately contact the sender and destroy the material in
its entirety, whether in electronic or hard copy format. Thank you.




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-12-03 15:24 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-12-03 10:10 Kernel Thread in Device Driver Kiran Kumar Gaitonde
2004-12-03 15:31 ` Peter W. Morreale

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox