On 2024/11/12 2:51, Toke Høiland-Jørgensen wrote:
...
Is there any other suggestion/concern about how to fix the problem here?
From the previous discussion, it seems the main concern about tracking the
inflight pages is about how many inflight pages it is needed.
Yeah, my hardest objection was against putting a hard limit on the
number of outstanding pages.
If there is no other suggestion/concern , it seems the above concern might be
addressed by using pre-allocated memory to satisfy the mostly used case, and
use the dynamically allocated memory if/when necessary.
For this, my biggest concern would be performance.
In general, doing extra work in rarely used code paths (such as device
teardown) is much preferred to adding extra tracking in the fast path.
Which would be an argument for Alexander's suggestion of just scanning
the entire system page table to find pages to unmap. Don't know enough
about mm system internals to have an opinion on whether this is
feasible, though.
Yes, there seems to be many MM system internals, like the CONFIG_SPARSEMEM*
config, memory offline/online and other MM specific optimization that it
is hard to tell it is feasible.
It would be good if MM experts can clarify on this.
In any case, we'll need some numbers to really judge the overhead in
practice. So benchmarking would be the logical next step in any case :)
Using POC code show that using the dynamic memory allocation does not
seems to be adding much overhead than the pre-allocated memory allocation
in this patch, the overhead is about 10~20ns, which seems to be similar to
the overhead of added overhead in the patch.