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
229 512 and the default value used when 0 is specified is 256. For an
230 unbound wq, the limit is higher of 512 and 4 *
242 combination of ``@max_active`` of 1 and ``WQ_UNBOUND`` used to
244 unbound worker-pools and only one work item could be active at any given
260 again before finishing. w1 and w2 burn CPU for 5ms then sleep for
263 Ignoring all other tasks, works and processing overhead, and assuming
268 0 w0 starts and burns CPU
270 15 w0 wakes up and burns CPU
272 20 w1 starts and burns CPU
274 35 w1 wakes up and finishes
275 35 w2 starts and burns CPU
277 50 w2 wakes up and finishes
279 And with cmwq with ``@max_active`` >= 3, ::
282 0 w0 starts and burns CPU
284 5 w1 starts and burns CPU
286 10 w2 starts and burns CPU
288 15 w0 wakes up and burns CPU
290 20 w1 wakes up and finishes
291 25 w2 wakes up and finishes
296 0 w0 starts and burns CPU
298 5 w1 starts and burns CPU
300 15 w0 wakes up and burns CPU
302 20 w1 wakes up and finishes
303 20 w2 starts and burns CPU
305 35 w2 wakes up and finishes
307 Now, let's assume w1 and w2 are queued to a different wq q1 which has
311 0 w0 starts and burns CPU
313 5 w1 and w2 start and burn CPU
316 15 w0 wakes up and burns CPU
318 20 w1 wakes up and finishes
319 25 w2 wakes up and finishes
339 (``WQ_MEM_RECLAIM``, flush and work item attributes. Work items
340 which are not involved in memory reclaim and don't need to be
341 flushed as a part of a group of work items, and don't require any
344 and a system wq.
348 level of locality in wq operations and work item execution.
379 the output and the offender can be determined with the work item