mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 09:11:26 +03:00
3b830eb8a7ca828075ffbfec30041203d7108fd4
Account NvMap allocated memory into both RSS and CG tracking to make efficient OOM kill decisions during memory pressure. NvMap allocates memory via kernel APIs like alloc_pages, the kernel memory is not accounted on behalf of process who requests the allocation. Hence in case OOM, the OOM killer never kills the process who has allocated memory via NvMap even though this process might be holding most of the memory. Solve this issue using following approach: - Use __GFP_ACCOUNT and __GFP_NORETRY flag - __GFP_NORETRY will not let the current allocation flow to go into OOM path, so that it will never trigger OOM. - __GFP_ACCOUNT causes the allocation to be accounted to kmemcg. So any allocation done by NvMap will be definitely accounted to kmemcg and cgroups can be used to define memory limits. - Add RSS counting for the process which allocates by NvMap, so that OOM score for that process will get updated and OOM killer can pick this process based upon the OOM score. - Every process that has a reference to NvMap Handle would have the memory size accounted into its RSS. On releasing the reference to handle, the RSS would be reduced. Bug 5222690 Change-Id: I3fa9b76ec9fc8d7f805111cb96e11e2ab1db42ce Signed-off-by: Ketan Patil <ketanp@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3427871 (cherry picked from commit2ca91098aa) Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3453101 (cherry picked from commitcfe6242c8c) Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3454642 Reviewed-by: Amulya Yarlagadda <ayarlagadda@nvidia.com> Tested-by: Amulya Yarlagadda <ayarlagadda@nvidia.com> GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
Description
No description provided