• Michael Guralnik's avatar
    RDMA/mlx5: Cache all user cacheable mkeys on dereg MR flow · dd1b913f
    Michael Guralnik authored
    Currently, when dereging an MR, if the mkey doesn't belong to a cache
    entry, it will be destroyed.  As a result, the restart of applications
    with many non-cached mkeys is not efficient since all the mkeys are
    destroyed and then recreated.  This process takes a long time (for 100,000
    MRs, it is ~20 seconds for dereg and ~28 seconds for re-reg).
    
    To shorten the restart runtime, insert all cacheable mkeys to the cache.
    If there is no fitting entry to the mkey properties, create a temporary
    entry that fits it.
    
    After a predetermined timeout, the cache entries will shrink to the
    initial high limit.
    
    The mkeys will still be in the cache when consuming them again after an
    application restart. Therefore, the registration will be much faster
    (for 100,000 MRs, it is ~4 seconds for dereg and ~5 seconds for re-reg).
    
    The temporary cache entries created to store the non-cache mkeys are not
    exposed through sysfs like the default cache entries.
    
    Link: https://lore.kernel.org/r/20230125222807.6921-6-michaelgur@nvidia.comSigned-off-by: default avatarMichael Guralnik <michaelgur@nvidia.com>
    Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
    dd1b913f
mr.c 65 KB