Skip to content
  • SeongJae Park's avatar
    0b9b2414
    inet: frags: batch fqdir destroy works · 0b9b2414
    SeongJae Park authored
    On a few of our systems, I found frequent 'unshare(CLONE_NEWNET)' calls
    make the number of active slab objects including 'sock_inode_cache' type
    rapidly and continuously increase.  As a result, memory pressure occurs.
    
    In more detail, I made an artificial reproducer that resembles the
    workload that we found the problem and reproduce the problem faster.  It
    merely repeats 'unshare(CLONE_NEWNET)' 50,000 times in a loop.  It takes
    about 2 minutes.  On 40 CPU cores / 70GB DRAM machine, the available
    memory continuously reduced in a fast speed (about 120MB per second,
    15GB in total within the 2 minutes).  Note that the issue don't
    reproduce on every machine.  On my 6 CPU cores machine, the problem
    didn't reproduce.
    
    'cleanup_net()' and 'fqdir_work_fn()' are functions that deallocate the
    relevant memory objects.  They are asynchronously invoked by the work
    queues and internally use 'rcu_barrier()' to ensure safe destructions.
    'cleanup_net()' works in a batched maneer in a ...
    0b9b2414
    inet: frags: batch fqdir destroy works
    SeongJae Park authored
    On a few of our systems, I found frequent 'unshare(CLONE_NEWNET)' calls
    make the number of active slab objects including 'sock_inode_cache' type
    rapidly and continuously increase.  As a result, memory pressure occurs.
    
    In more detail, I made an artificial reproducer that resembles the
    workload that we found the problem and reproduce the problem faster.  It
    merely repeats 'unshare(CLONE_NEWNET)' 50,000 times in a loop.  It takes
    about 2 minutes.  On 40 CPU cores / 70GB DRAM machine, the available
    memory continuously reduced in a fast speed (about 120MB per second,
    15GB in total within the 2 minutes).  Note that the issue don't
    reproduce on every machine.  On my 6 CPU cores machine, the problem
    didn't reproduce.
    
    'cleanup_net()' and 'fqdir_work_fn()' are functions that deallocate the
    relevant memory objects.  They are asynchronously invoked by the work
    queues and internally use 'rcu_barrier()' to ensure safe destructions.
    'cleanup_net()' works in a batched maneer in a ...
Loading