On 04/07/2018 02:28 AM, Matthew Wilcox wrote: > On Fri, Apr 06, 2018 at 07:20:47AM +0000, Chandan Vn wrote: >> Hi, >> >> I would like to start contributing to linux-mm community. >> Could you please let me know the current work items which I can start >> working on. >> >> Please note that I have been working on linux-mm from past 4 years but >> mostly proprietary or not yet mainlined vendor codebase. > > We had a report of a problem a few weeks ago that I don't know if anybody > is looking at yet. Perhaps you'd like to try fixing it. Do you have any reference or link to the bug report some where ? > > The report says that, under some unidentified workload, calling vmalloc Why should allocating vmap_area should depend on user space workload. Was the workload some how causing severely fragmented vmalloc() space making it harder for future vmalloc() requests. I am wondering. > can take many hundreds of milliseconds, and the problem is in > alloc_vmap_area(). Hmm, I did experiment around with a test driver on a guest with 16GB memory. Never saw vmalloc() cost going beyond single digit milliseconds. How many number of independent vmap_area node we are looking at in the RB tree if we would like to hit hundreds of milliseconds in cost. > > So a good plan of work would be to devise a kernel module which can > produce a highly-fragmented vmap area, and demonstrate the problem. I tried linear fragmentation (releasing nodes after certain distance) and random fragmentation (releasing nodes after random distance) inside a contiguously allocated series of vmalloc space. > Once you've got a reliable reproducer, you can look at how to fix this > problem. We probably need a better data structure; either enhance > the existing rbtree of free areas, or change the data structure. > Starting node of the RB tree to search is determined with the help of vmap_area_cache (if its applicable) followed by search in the RB tree followed by search in the list. Wondering if in-order ascending search inside RB tree itself will give better performance instead ? Will keep looking into this.