lkml.org 
[lkml]   [2015]   [Jul]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.1 121/267] block: loop: avoiding too many pending per work I/O
    Date
    4.1-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Ming Lei <ming.lei@canonical.com>

    commit 4d4e41aef9429872ea3b105e83426941f7185ab6 upstream.

    If there are too many pending per work I/O, too many
    high priority work thread can be generated so that
    system performance can be effected.

    This patch limits the max_active parameter of workqueue as 16.

    This patch fixes Fedora 22 live booting performance
    regression when it is booted from squashfs over dm
    based on loop, and looks the following reasons are
    related with the problem:

    - not like other filesyststems(such as ext4), squashfs
    is a bit special, and I observed that increasing I/O jobs
    to access file in squashfs only improve I/O performance a
    little, but it can make big difference for ext4

    - nested loop: both squashfs.img and ext3fs.img are mounted
    as loop block, and ext3fs.img is inside the squashfs

    - during booting, lots of tasks may run concurrently

    Fixes: b5dd2f6047ca108001328aac0e8588edd15f1778
    Cc: Justin M. Forbes <jforbes@fedoraproject.org>
    Signed-off-by: Ming Lei <ming.lei@canonical.com>
    Acked-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/block/loop.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/drivers/block/loop.c
    +++ b/drivers/block/loop.c
    @@ -725,7 +725,7 @@ static int loop_set_fd(struct loop_devic
    goto out_putf;
    error = -ENOMEM;
    lo->wq = alloc_workqueue("kloopd%d",
    - WQ_MEM_RECLAIM | WQ_HIGHPRI | WQ_UNBOUND, 0,
    + WQ_MEM_RECLAIM | WQ_HIGHPRI | WQ_UNBOUND, 16,
    lo->lo_number);
    if (!lo->wq)
    goto out_putf;



    \
     
     \ /
      Last update: 2015-08-01 00:01    [W:2.176 / U:0.768 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site