• E
    sysctl: Replace root_list with links between sysctl_table_sets. · 0e47c99d
    Eric W. Biederman 提交于
    Piecing together directories by looking first in one directory
    tree, than in another directory tree and finally in a third
    directory tree makes it hard to verify that some directory
    entries are not multiply defined and makes it hard to create
    efficient implementations the sysctl filesystem.
    
    Replace the sysctl wide list of roots with autogenerated
    links from the core sysctl directory tree to the other
    sysctl directory trees.
    
    This simplifies sysctl directory reading and lookups as now
    only entries in a single sysctl directory tree need to be
    considered.
    
    Benchmark before:
        make-dummies 0 999 -> 0.44s
        rmmod dummy        -> 0.065s
        make-dummies 0 9999 -> 1m36s
        rmmod dummy         -> 0.4s
    
    Benchmark after:
        make-dummies 0 999 -> 0.63s
        rmmod dummy        -> 0.12s
        make-dummies 0 9999 -> 2m35s
        rmmod dummy         -> 18s
    
    The slowdown is caused by the lookups used in insert_headers
    and put_links to see if we need to add links or remove links.
    Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
    0e47c99d
sysctl.h 31.1 KB