Lines Matching full:and
14 is needed and the workqueue (wq) API is the most commonly used
20 queue is called workqueue and the thread is called worker.
32 worker thread per CPU and a single threaded (ST) wq had one worker
35 wq users over the years and with the number of CPU cores continuously
40 provided was unsatisfactory. The limitation was common to both ST and
47 The tension between the provided level of concurrency and resource
49 choosing to use ST wq for polling PIOs and accepting an unnecessary
64 * Automatically regulate worker pool and level of concurrency so that
77 item pointing to that function and queue that work item on a
86 subsystems and drivers queue work items on and the backend mechanism
87 which manages worker-pools and processes the queued work items.
89 There are two worker-pools, one for normal work items and the other
90 for high priority ones, for each possible CPU and some extra
94 Subsystems and drivers can create and queue work items through special
98 things like CPU locality, concurrency limits, priority and more. To
103 determined according to the queue parameters and workqueue attributes
104 and appended on the shared worklist of the worker-pool. For example,
112 Minimal to save resources and sufficient in that the system is used at
117 whenever an active worker wakes up or sleeps and keeps track of the
119 not expected to hog a CPU and consume many cycles. That means
134 ``apply_workqueue_attrs()`` and workqueue will automatically create
153 ``create_*workqueue()`` functions are deprecated and scheduled for
155 ``@flags`` and ``@max_active``. ``@name`` is the name of the wq and
159 forward progress guarantee, flush and work item attributes. ``@flags``
160 and ``@max_active`` control how work items are assigned execution
161 resources, scheduled and executed.
177 expected and using bound wq may end up creating large number
186 suspend operations. Work items on the wq are drained and no
199 Note that normal and highpri worker-pools don't interact with
200 each other. Each maintains its separate pool of workers and
213 regulated by the concurrency management and runnable
233 512 and the default value used when 0 is specified is 256. For an
234 unbound wq, the limit is higher of 512 and 4 *
246 combination of ``@max_active`` of 1 and ``WQ_UNBOUND`` used to
248 unbound worker-pools and only one work item could be active at any given
264 again before finishing. w1 and w2 burn CPU for 5ms then sleep for
267 Ignoring all other tasks, works and processing overhead, and assuming
272 0 w0 starts and burns CPU
274 15 w0 wakes up and burns CPU
276 20 w1 starts and burns CPU
278 35 w1 wakes up and finishes
279 35 w2 starts and burns CPU
281 50 w2 wakes up and finishes
283 And with cmwq with ``@max_active`` >= 3, ::
286 0 w0 starts and burns CPU
288 5 w1 starts and burns CPU
290 10 w2 starts and burns CPU
292 15 w0 wakes up and burns CPU
294 20 w1 wakes up and finishes
295 25 w2 wakes up and finishes
300 0 w0 starts and burns CPU
302 5 w1 starts and burns CPU
304 15 w0 wakes up and burns CPU
306 20 w1 wakes up and finishes
307 20 w2 starts and burns CPU
309 35 w2 wakes up and finishes
311 Now, let's assume w1 and w2 are queued to a different wq q1 which has
315 0 w0 starts and burns CPU
317 5 w1 and w2 start and burn CPU
320 15 w0 wakes up and burns CPU
322 20 w1 wakes up and finishes
323 25 w2 wakes up and finishes
343 (``WQ_MEM_RECLAIM``, flush and work item attributes. Work items
344 which are not involved in memory reclaim and don't need to be
345 flushed as a part of a group of work items, and don't require any
348 and a system wq.
352 level of locality in wq operations and work item execution.
383 the output and the offender can be determined with the work item