Re: [RFC] mm: why vfree() do not free page table memory?

From: Xishi Qiu
Date: Wed Jan 17 2018 - 04:51:01 EST


On 2018/1/17 17:16, Vlastimil Babka wrote:

> On 12/29/2017 09:58 AM, Xishi Qiu wrote:
>> When calling vfree(), it calls unmap_vmap_area() to clear page table,
>> but do not free the memory of page table, why? just for performance?
>
> I guess it's expected that the free virtual range and associated page
> tables it might be reused later.
>

Hi Vlastimilï

If use vmalloc/vfree different size, then there will be some hols during
VMALLOC_START to VMALLOC_END, and this holes takes page table memory, right?

>> If a driver use vmalloc() and vfree() frequently, we will lost much
>> page table memory, maybe oom later.
>
> If it's reused, then not really.
>
> Did you notice an actual issue, or is this just theoretical concern.
>

Yes, we have this problem on our production line.
I find the page table memory takes 200-300M.

Thanks,
Xishi Qiu

>> Thanks,
>> Xishi Qiu
>>
>
>
> .
>