Lines Matching refs:and

21 is needed and the workqueue (wq) API is the most commonly used
27 queue is called workqueue and the thread is called worker.
38 worker thread per CPU and a single threaded (ST) wq had one worker
41 wq users over the years and with the number of CPU cores continuously
46 provided was unsatisfactory. The limitation was common to both ST and
53 The tension between the provided level of concurrency and resource
55 choosing to use ST wq for polling PIOs and accepting an unnecessary
70 * Automatically regulate worker pool and level of concurrency so that
82 item pointing to that function and queue that work item on a
91 subsystems and drivers queue work items on and the backend mechanism
92 which manages worker-pools and processes the queued work items.
94 There are two worker-pools, one for normal work items and the other
95 for high priority ones, for each possible CPU and some extra
99 Subsystems and drivers can create and queue work items through special
103 things like CPU locality, concurrency limits, priority and more. To
108 determined according to the queue parameters and workqueue attributes
109 and appended on the shared worklist of the worker-pool. For example,
117 Minimal to save resources and sufficient in that the system is used at
122 whenever an active worker wakes up or sleeps and keeps track of the
124 not expected to hog a CPU and consume many cycles. That means
139 apply_workqueue_attrs() and workqueue will automatically create
157 functions are deprecated and scheduled for removal. alloc_workqueue()
158 takes three arguments - @name, @flags and @max_active. @name is the
159 name of the wq and also used as the name of the rescuer thread if
163 forward progress guarantee, flush and work item attributes. @flags
164 and @max_active control how work items are assigned execution
165 resources, scheduled and executed.
180 expected and using bound wq may end up creating large number
190 suspend operations. Work items on the wq are drained and no
205 Note that normal and highpri worker-pools don't interact with
206 each other. Each maintain its separate pool of workers and
220 regulated by the concurrency management and runnable
238 and the default value used when 0 is specified is 256. For an unbound
239 wq, the limit is higher of 512 and 4 * num_possible_cpus(). These
250 combination of @max_active of 1 and WQ_UNBOUND is used to achieve this
252 worker-pools and only one work item can be active at any given time thus
263 again before finishing. w1 and w2 burn CPU for 5ms then sleep for
266 Ignoring all other tasks, works and processing overhead, and assuming
271 0 w0 starts and burns CPU
273 15 w0 wakes up and burns CPU
275 20 w1 starts and burns CPU
277 35 w1 wakes up and finishes
278 35 w2 starts and burns CPU
280 50 w2 wakes up and finishes
285 0 w0 starts and burns CPU
287 5 w1 starts and burns CPU
289 10 w2 starts and burns CPU
291 15 w0 wakes up and burns CPU
293 20 w1 wakes up and finishes
294 25 w2 wakes up and finishes
299 0 w0 starts and burns CPU
301 5 w1 starts and burns CPU
303 15 w0 wakes up and burns CPU
305 20 w1 wakes up and finishes
306 20 w2 starts and burns CPU
308 35 w2 wakes up and finishes
310 Now, let's assume w1 and w2 are queued to a different wq q1 which has
314 0 w0 starts and burns CPU
316 5 w1 and w2 start and burn CPU
319 15 w0 wakes up and burns CPU
321 20 w1 wakes up and finishes
322 25 w2 wakes up and finishes
340 (WQ_MEM_RECLAIM, flush and work item attributes. Work items which
341 are not involved in memory reclaim and don't need to be flushed as a
342 part of a group of work items, and don't require any special
344 execution characteristics between using a dedicated wq and a system
349 level of locality in wq operations and work item execution.
379 the output and the offender can be determined with the work item