On Tue, Nov 17, 2020 at 6:00 AM Uladzislau Rezki (Sony) <urezki@xxxxxxxxx> wrote: > > A current "lazy drain" model suffers from at least two issues. > > First one is related to the unsorted list of vmap areas, thus > in order to identify the [min:max] range of areas to be drained, > it requires a full list scan. What is a time consuming if the > list is too long. > > Second one and as a next step is about merging all fragments > with a free space. What is also a time consuming because it > has to iterate over entire list which holds outstanding lazy > areas. > > See below the "preemptirqsoff" tracer that illustrates a high > latency. It is ~24 676us. Our workloads like audio and video > are effected by such long latency: This seems like a real problem. But I found there's long latency avoidance mechanism in the loop in __purge_vmap_area_lazy() as follows, if (atomic_long_read(&vmap_lazy_nr) < resched_threshold) cond_resched_lock(&free_vmap_area_lock); If it works properly, the latency problem can be solved. Can you check whether this doesn't work for you? Best Reagrds, Huang, Ying <snip>