On 11.07.2023 12:32, Pavel Tikhomirov wrote:
Complete memcg id refcount design:

- on cgroup online get css refcount and set memcg id refctount to 1
- on cgroup offline put memcg id refcount
- on swapout:
   - if cgroup memcg id refcount is 0 (not online), use parent cgroup
   - if cgroup memcg id refcount is >0, get it
   (previously in rh7 we got css refcount instead)
- on swapin put memcg id refcount
   (previously in rh7 we put css refcount instead)
- on charge move from one to another cgroup put memcg id refctount on
"from" cgroup and get it on "to" cgroup
(previously in rh7 we put css refcount on "from" and get on "to")
- on last memcg id refctount put also put css refcount

Charge move is a bit tricky as we can move swap -> non-swap, thus we get
"to" memcg id refcount in mem_cgroup_move_charge_pte_range, and put
"from" memcg id refcount later in __mem_cgroup_clear_mc.

The part about "swap -> non-swap" is wrong, rewrite of this paragraph:

Charge move is a bit tricky: we get "to" memcg id refcount in
mem_cgroup_move_charge_pte_range, and put "from" memcg id refcount later
in __mem_cgroup_clear_mc.


So, in the first patch of this series we remove leftover memcg id
refcount put on memcg free path, and in the second patch we remove
leftover "to" css refcount get in task move code for moved swap.

https://jira.vzint.dev/browse/PSBM-148818
Signed-off-by: Pavel Tikhomirov <ptikhomi...@virtuozzo.com>

Pavel Tikhomirov (2):
   mm/memcontrol: remove excess put of memory cgroup id refcount on css
     free
   mm/memcontrol: remove excess css_get on task migration with swap

  mm/memcontrol.c | 14 --------------
  1 file changed, 14 deletions(-)


--
Best regards, Tikhomirov Pavel
Senior Software Developer, Virtuozzo.
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to