• Leon Romanovsky's avatar
    IB/mlx5: Postpone remove_keys under knowledge of coming preemption · ab5cdc31
    Leon Romanovsky authored
    The remove_keys() logic is performed as garbage collection task. Such
    task is intended to be run when no other active processes are running.
    
    The need_resched() will return TRUE if there are user tasks to be
    activated in near future.
    
    In such case, we don't execute remove_keys() and postpone
    the garbage collection work to try to run in next cycle,
    in order to free CPU resources to other tasks.
    
    The possible pseudo-code to trigger such scenario:
    1. Allocate a lot of MR to fill the cache above the limit.
    2. Wait a small amount of time "to calm" the system.
    3. Start CPU extensive operations on multi-node cluster.
    4. Expect performance degradation during MR cache shrink operation.
    Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
    Signed-off-by: default avatarEli Cohen <eli@mellanox.com>
    Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
    ab5cdc31
mr.c 35 KB