Message ID | 20241030083311.965933-1-gutierrez.asier@huawei-partners.com (mailing list archive) |
---|---|
Headers | show |
Series | Cgroup-based THP control | expand |
On Wed 30-10-24 16:33:08, gutierrez.asier@huawei-partners.com wrote: > From: Asier Gutierrez <gutierrez.asier@huawei-partners.com> > > Currently THP modes are set globally. It can be an overkill if only some > specific app/set of apps need to get benefits from THP usage. Moreover, various > apps might need different THP settings. Here we propose a cgroup-based THP > control mechanism. > > THP interface is added to memory cgroup subsystem. Existing global THP control > semantics is supported for backward compatibility. When THP modes are set > globally all the changes are propagated to memory cgroups. However, when a > particular cgroup changes its THP policy, the global THP policy in sysfs remains > the same. Do you have any specific examples where this would be benefitial? > New memcg files are exposed: memory.thp_enabled and memory.thp_defrag, which > have completely the same format as global THP enabled/defrag. > > Child cgroups inherit THP settings from parent cgroup upon creation. Particular > cgroup mode changes aren't propagated to child cgroups. So this breaks hierarchical property, doesn't it? In other words if a parent cgroup would like to enforce a certain policy to all descendants then this is not really possible.
On 10/30/2024 11:38 AM, Michal Hocko wrote: > On Wed 30-10-24 16:33:08, gutierrez.asier@huawei-partners.com wrote: >> From: Asier Gutierrez <gutierrez.asier@huawei-partners.com> >> >> Currently THP modes are set globally. It can be an overkill if only some >> specific app/set of apps need to get benefits from THP usage. Moreover, various >> apps might need different THP settings. Here we propose a cgroup-based THP >> control mechanism. >> >> THP interface is added to memory cgroup subsystem. Existing global THP control >> semantics is supported for backward compatibility. When THP modes are set >> globally all the changes are propagated to memory cgroups. However, when a >> particular cgroup changes its THP policy, the global THP policy in sysfs remains >> the same. > > Do you have any specific examples where this would be benefitial? Now we're mostly focused on database scenarios (MySQL, Redis). The main idea is to avoid using a global THP setting that can potentially waste overall resource and have per cgroup granularity. Besides THP are being beneficial for DB performance, we observe high THP "over-usage" by some unrelated apps/services, when "always" mode is enabled globally. With cgroup-THP, we're able to specify exact "THP-users", and plan to introduce an ability to limit the amount of THPs per-cgroup. We suppose it should be beneficial for some container-based workloads, when certain containers can have different THP-policies, but haven't looked into this case yet. >> New memcg files are exposed: memory.thp_enabled and memory.thp_defrag, which >> have completely the same format as global THP enabled/defrag. >> >> Child cgroups inherit THP settings from parent cgroup upon creation. Particular >> cgroup mode changes aren't propagated to child cgroups. > > So this breaks hierarchical property, doesn't it? In other words if a > parent cgroup would like to enforce a certain policy to all descendants > then this is not really possible. The first idea was to have some flexibility when changing THP policies. I will submit a new patch set which will enforce the cgroup hierarchy and change all the children recursively.
On Wed, Oct 30, 2024 at 04:33:08PM +0800, gutierrez.asier@huawei-partners.com wrote: > From: Asier Gutierrez <gutierrez.asier@huawei-partners.com> > > Currently THP modes are set globally. It can be an overkill if only some > specific app/set of apps need to get benefits from THP usage. Moreover, various > apps might need different THP settings. Here we propose a cgroup-based THP > control mechanism. Or maybe we should stop making the sysadmin's life so damned hard and figure out how to do without all of these settings?
On 30.10.24 14:14, Matthew Wilcox wrote: > On Wed, Oct 30, 2024 at 04:33:08PM +0800, gutierrez.asier@huawei-partners.com wrote: >> From: Asier Gutierrez <gutierrez.asier@huawei-partners.com> >> >> Currently THP modes are set globally. It can be an overkill if only some >> specific app/set of apps need to get benefits from THP usage. Moreover, various >> apps might need different THP settings. Here we propose a cgroup-based THP >> control mechanism. > > Or maybe we should stop making the sysadmin's life so damned hard and > figure out how to do without all of these settings? In particular if there is no proper problem description / use case.