Re: Sleeping in Work_queue threads

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

 



borasahin@xxxxxxxxxxx wrote:
I understand that there is a default worker thread ("event") to which
most of the drivers submit work (for bottom half processing).

Now since this thread is catering to all of the drivers; if a driver's
code sleeps, then aren't the rest of the drivers penalised?

Yes...

I mean the rest of the drivers want to do their work but the thread is
now sleeping since one of the driver has issued a sleeping call?

Wouldn't a seperate worker thread for each driver be a better design?

I think the worker thread is there to make driver writer's job easier. Say you need a bottom half but it is not sleep for a long time. Using a centralised worker thread is the most convenient one. But as you say if you need to sleep longer then you start to disrupt other driver's worker jobs. It's time to create a seperate worker thread. Another point of view -> you categorize worker threads: shorter sleep times and longer sleep times. You dont need to create a worker thread for each of the work jobs. Instead you use one for shorter sleep times and one for each of longer sleep times. So you use system resources more efficiently. I think most of worker thread jobs is fit into shorter sleep times category.


so hypothetically, if there were such a set of worker threads,
how would I pick the right thread ?
or rather, how do I measure/characterize the sleep-time ?
(worst case, average, etc)

does the Latency Tracer  (see: http://lwn.net/Articles/97811/ )
make this possible/easy ?

and while we're on the topic, whats the average length of the event work-queue ?
and the enque/deque rate ?
would 1 long queue, and 1 short cover 99%

--
Bora SAHIN

--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/




--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           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