• Jens Axboe's avatar
    block: add one-hit cache for disk partition lookup · a6f23657
    Jens Axboe authored
    disk_map_sector_rcu() returns a partition from a sector offset,
    which we use for IO statistics on a per-partition basis. The
    lookup itself is an O(N) list lookup, where N is the number of
    partitions. This actually hurts performance quite a bit, even
    on the lower end partitions. On higher numbered partitions,
    it can get pretty bad.
    
    Solve this by adding a one-hit cache for partition lookup.
    This makes the lookup O(1) for the case where we do most IO to
    one partition. Even for mixed partition workloads, amortized cost
    is pretty close to O(1) since the natural IO batching makes the
    one-hit cache last for lots of IOs.
    Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
    a6f23657
genhd.c 27.6 KB