Hey, This is my 3rd attempt to try and integrate ttm and memcg accounting.
I've tried to take on board the feedback given on the last series, and made some compromises to try and close in on the solution. Feedback: 1. memcg folks didn't really like the gpu specific stats due to a lack of global stats being exposed. 2. After consideration of the resource level memcg accounting, I tried to reason about swap evictions a bit and couldn't come up with a good way to make it work, so I moved back down to ttm. 3. Use a placement flag instead of ctx flag. This series starts by adding two per-node stats to the mm layers, to track memory allocated to the gpu in active use, and memory sitting in the reclaimable ttm pools. Then it adds the memcg stat for active gpu as before, (reclaimable is not accounted to a memcg at all). I didn't go back to use __GFP_ACCOUNT and manual stat tweaking, because kmem is definitely not the correct place to account this memory. This memory is never used by the kernel, it's used by userspace and the GPU in nearly all cases, so I think accounting it under kmem is very wrong. I'm hoping adding the global stats might alleviate any concerns. I had to move back to ttm_tt accounting instead of ttm_resource, as when a resource gets evicted to swap, the memory is freed and the memcg accounting should be updated correctly, as such I ended up going back to adding the accounting in ttm_tt population paths. Regards, Dave.