• Gargi Sharma's avatar
    pid: replace pid bitmap implementation with IDR API · 95846ecf
    Gargi Sharma authored
    Patch series "Replacing PID bitmap implementation with IDR API", v4.
    
    This series replaces kernel bitmap implementation of PID allocation with
    IDR API.  These patches are written to simplify the kernel by replacing
    custom code with calls to generic code.
    
    The following are the stats for pid and pid_namespace object files
    before and after the replacement.  There is a noteworthy change between
    the IDR and bitmap implementation.
    
    Before
       text       data        bss        dec        hex    filename
       8447       3894         64      12405       3075    kernel/pid.o
    After
       text       data        bss        dec        hex    filename
       3397        304          0       3701        e75    kernel/pid.o
    
    Before
       text       data        bss        dec        hex    filename
       5692       1842        192       7726       1e2e    kernel/pid_namespace.o
    After
       text       data        bss        dec        hex    filename
       2854        216         16       3086        c0e    kernel/pid_namespace.o
    
    The following are the stats for ps, pstree and calling readdir on /proc
    for 10,000 processes.
    
    ps:
            With IDR API    With bitmap
    real    0m1.479s        0m2.319s
    user    0m0.070s        0m0.060s
    sys     0m0.289s        0m0.516s
    
    pstree:
            With IDR API    With bitmap
    real    0m1.024s        0m1.794s
    user    0m0.348s        0m0.612s
    sys     0m0.184s        0m0.264s
    
    proc:
            With IDR API    With bitmap
    real    0m0.059s        0m0.074s
    user    0m0.000s        0m0.004s
    sys     0m0.016s        0m0.016s
    
    This patch (of 2):
    
    Replace the current bitmap implementation for Process ID allocation.
    Functions that are no longer required, for example, free_pidmap(),
    alloc_pidmap(), etc.  are removed.  The rest of the functions are
    modified to use the IDR API.  The change was made to make the PID
    allocation less complex by replacing custom code with calls to generic
    API.
    
    [gs051095@gmail.com: v6]
      Link: http://lkml.kernel.org/r/1507760379-21662-2-git-send-email-gs051095@gmail.com
    [avagin@openvz.org: restore the old behaviour of the ns_last_pid sysctl]
      Link: http://lkml.kernel.org/r/20171106183144.16368-1-avagin@openvz.org
    Link: http://lkml.kernel.org/r/1507583624-22146-2-git-send-email-gs051095@gmail.comSigned-off-by: default avatarGargi Sharma <gs051095@gmail.com>
    Reviewed-by: default avatarRik van Riel <riel@redhat.com>
    Acked-by: default avatarOleg Nesterov <oleg@redhat.com>
    Cc: Julia Lawall <julia.lawall@lip6.fr>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Pavel Tatashin <pasha.tatashin@oracle.com>
    Cc: Kirill Tkhai <ktkhai@virtuozzo.com>
    Cc: Eric W. Biederman <ebiederm@xmission.com>
    Cc: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    95846ecf
main.c 26.6 KB