Messages in this thread | | | Date | Wed, 10 Dec 2014 11:41:19 -0500 | From | Tejun Heo <> | Subject | [GIT PULL] workqueue changes for v3.19-rc1 |
| |
Hello,
Work items which may be involved in memory reclaim path may be executed by the rescuer under memory pressure. When a rescuer gets activated, it processes whatever are on the pending list and then goes back to sleep until the manager kicks it again which involves 100ms delay. This is problematic for self-requeueing work items or the ones running on ordered workqueues as there always is only one work item on the pending list when the rescuer kicks in. The execution of that work item produces more to execute but the rescuer won't see them until after the said 100ms has passed, so such workqueues would only execute one work item every 100ms under prolonged memory pressure, which BTW may be being prolonged due to the slow execution.
Neil wrote up a patch which fixes this issue by keeping the rescuer working as long as the target workqueue is busy but doesn't have enough workers.
Thanks.
The following changes since commit cac7f2429872d3733dc3f9915857b1691da2eb2f:
Linux 3.18-rc2 (2014-10-26 16:48:41 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git for-3.19
for you to fetch changes up to 008847f66c38712f2819cd956969519006ebc11d:
workqueue: allow rescuer thread to do more work. (2014-12-08 12:39:16 -0500)
---------------------------------------------------------------- NeilBrown (1): workqueue: allow rescuer thread to do more work.
Tejun Heo (2): workqueue: cosmetic update in rescuer_thread() workqueue: invert the order between pool->lock and wq_mayday_lock
kernel/workqueue.c | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-)
-- tejun
| |