liujian (CE) <liujia...@huawei.com> wrote: [ trimming cc list ]
> Now, I have not the real environment. > I use iperf generate fragment packets; > and I always change NIC rx irq's affinity cpu, to make sure frag_mem_limit > reach to thresh. > my test machine, CPU num is 384. Oh well, that explains it. > > > + if (frag_mem_limit(nf) > nf->low_thresh) { > > > inet_frag_schedule_worker(f); > > > + update_frag_mem_limit(nf, SKB_TRUESIZE(1500) * 16); > > > + } You need to reduce this to a lower value. Your cpu count * batch_value needs to be less than low_thresh to avoid problems. Wtih 384 cpus its close to 12 mbyte... Perhaps do this: update_frag_mem_limit(nf, 2 * 1024*1024 / NR_CPUS); However, I think its better to revert the percpu counter change and move back to a single atomic_t count.