On Fri, Dec 18, 2020 at 05:16:56PM -0800, John Stultz wrote:
On Fri, Dec 18, 2020 at 6:36 AM Daniel Vetter daniel@ffwll.ch wrote:
On Thu, Dec 17, 2020 at 11:06:11PM +0000, John Stultz wrote:
Reuse/abuse the pagepool code from the network code to speed up allocation performance.
This is similar to the ION pagepool usage, but tries to utilize generic code instead of a custom implementation.
We also have one of these in ttm. I think we should have at most one of these for the gpu ecosystem overall, maybe as a helper that can be plugged into all the places.
Or I'm kinda missing something, which could be since I only glanced at yours for a bit. But it's also called page pool for buffer allocations, and I don't think there's that many ways to implement that really :-)
Yea, when I was looking around the ttm one didn't seem quite as generic as the networking one, which more easily fit in here.
Oops, I didn't look that closely and didn't realize you're reusing the one from net/core/.
The main benefit for the system heap is not so much the pool itself (the normal page allocator is pretty good), as it being able to defer the free and zero the pages in a background thread, so the pool is effectively filled with pre-zeroed pages.
But I'll take another look at the ttm implementation and see if it can be re-used or the shared code refactored and pulled out somehow.
I think moving the page_pool from net into lib and using it in ttm might also be an option. Lack of shrinker in the networking one might be a bit a problem.
Also I guess the real fun will start if you pre-flush pages (after zeroing) or use write-combined mode (which tends to be a real pain to allocate). So for those I think we likely need more than just reusing the one net/core has already. -Daniel