Message ID | 20231130194023.4102148-3-nphamcs@gmail.com |
---|---|
State | Accepted |
Commit | fdc4161ff6a5e96222e159c1f1b28d31a985130d |
Headers | show |
Series | workload-specific and memory pressure-driven zswap writeback | expand |
Hi Nhat, Very minor nitpick. This patch can fold with the later patch that uses it. That makes the review easier, no need to cross reference different patches. It will also make it harder to introduce API that nobody uses. Chris On Thu, Nov 30, 2023 at 11:40 AM Nhat Pham <nphamcs@gmail.com> wrote: > > This patch implements a helper function that try to get a reference to > an memcg's css, as well as checking if it is online. This new function > is almost exactly the same as the existing mem_cgroup_tryget(), except > for the onlineness check. In the !CONFIG_MEMCG case, it always returns > true, analogous to mem_cgroup_tryget(). This is useful for e.g to the > new zswap writeback scheme, where we need to select the next online > memcg as a candidate for the global limit reclaim. Very minor nitpick. This patch can fold with the later patch that uses it. That makes the review easier, no need to cross reference different patches. It will also make it harder to introduce API that nobody uses. Chris > > Signed-off-by: Nhat Pham <nphamcs@gmail.com> > --- > include/linux/memcontrol.h | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h > index 7bdcf3020d7a..2bd7d14ace78 100644 > --- a/include/linux/memcontrol.h > +++ b/include/linux/memcontrol.h > @@ -821,6 +821,11 @@ static inline bool mem_cgroup_tryget(struct mem_cgroup *memcg) > return !memcg || css_tryget(&memcg->css); > } > > +static inline bool mem_cgroup_tryget_online(struct mem_cgroup *memcg) > +{ > + return !memcg || css_tryget_online(&memcg->css); > +} > + > static inline void mem_cgroup_put(struct mem_cgroup *memcg) > { > if (memcg) > @@ -1349,6 +1354,11 @@ static inline bool mem_cgroup_tryget(struct mem_cgroup *memcg) > return true; > } > > +static inline bool mem_cgroup_tryget_online(struct mem_cgroup *memcg) > +{ > + return true; > +} > + > static inline void mem_cgroup_put(struct mem_cgroup *memcg) > { > } > -- > 2.34.1 >
On Mon, Dec 4, 2023 at 4:36 PM Chris Li <chrisl@kernel.org> wrote: > > Hi Nhat, > > Very minor nitpick. This patch can fold with the later patch that uses > it. That makes the review easier, no need to cross reference different > patches. It will also make it harder to introduce API that nobody > uses. > > Chris > > On Thu, Nov 30, 2023 at 11:40 AM Nhat Pham <nphamcs@gmail.com> wrote: > > > > This patch implements a helper function that try to get a reference to > > an memcg's css, as well as checking if it is online. This new function > > is almost exactly the same as the existing mem_cgroup_tryget(), except > > for the onlineness check. In the !CONFIG_MEMCG case, it always returns > > true, analogous to mem_cgroup_tryget(). This is useful for e.g to the > > new zswap writeback scheme, where we need to select the next online > > memcg as a candidate for the global limit reclaim. > > Very minor nitpick. This patch can fold with the later patch that uses > it. That makes the review easier, no need to cross reference different > patches. It will also make it harder to introduce API that nobody > uses. I don't have a strong preference one way or the other :) Probably not worth the churn tho. > > Chris > > > > > Signed-off-by: Nhat Pham <nphamcs@gmail.com> > > --- > > include/linux/memcontrol.h | 10 ++++++++++ > > 1 file changed, 10 insertions(+) > > > > diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h > > index 7bdcf3020d7a..2bd7d14ace78 100644 > > --- a/include/linux/memcontrol.h > > +++ b/include/linux/memcontrol.h > > @@ -821,6 +821,11 @@ static inline bool mem_cgroup_tryget(struct mem_cgroup *memcg) > > return !memcg || css_tryget(&memcg->css); > > } > > > > +static inline bool mem_cgroup_tryget_online(struct mem_cgroup *memcg) > > +{ > > + return !memcg || css_tryget_online(&memcg->css); > > +} > > + > > static inline void mem_cgroup_put(struct mem_cgroup *memcg) > > { > > if (memcg) > > @@ -1349,6 +1354,11 @@ static inline bool mem_cgroup_tryget(struct mem_cgroup *memcg) > > return true; > > } > > > > +static inline bool mem_cgroup_tryget_online(struct mem_cgroup *memcg) > > +{ > > + return true; > > +} > > + > > static inline void mem_cgroup_put(struct mem_cgroup *memcg) > > { > > } > > -- > > 2.34.1 > >
On Thu, Nov 30, 2023 at 11:40 AM Nhat Pham <nphamcs@gmail.com> wrote: > > This patch implements a helper function that try to get a reference to > an memcg's css, as well as checking if it is online. This new function > is almost exactly the same as the existing mem_cgroup_tryget(), except > for the onlineness check. In the !CONFIG_MEMCG case, it always returns > true, analogous to mem_cgroup_tryget(). This is useful for e.g to the > new zswap writeback scheme, where we need to select the next online > memcg as a candidate for the global limit reclaim. > > Signed-off-by: Nhat Pham <nphamcs@gmail.com> Reviewed-by: Yosry Ahmed <yosryahmed@google.com> > --- > include/linux/memcontrol.h | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h > index 7bdcf3020d7a..2bd7d14ace78 100644 > --- a/include/linux/memcontrol.h > +++ b/include/linux/memcontrol.h > @@ -821,6 +821,11 @@ static inline bool mem_cgroup_tryget(struct mem_cgroup *memcg) > return !memcg || css_tryget(&memcg->css); > } > > +static inline bool mem_cgroup_tryget_online(struct mem_cgroup *memcg) > +{ > + return !memcg || css_tryget_online(&memcg->css); > +} > + > static inline void mem_cgroup_put(struct mem_cgroup *memcg) > { > if (memcg) > @@ -1349,6 +1354,11 @@ static inline bool mem_cgroup_tryget(struct mem_cgroup *memcg) > return true; > } > > +static inline bool mem_cgroup_tryget_online(struct mem_cgroup *memcg) > +{ > + return true; > +} > + > static inline void mem_cgroup_put(struct mem_cgroup *memcg) > { > } > -- > 2.34.1
On Tue, Dec 5, 2023 at 10:03 AM Yosry Ahmed <yosryahmed@google.com> wrote: > > On Thu, Nov 30, 2023 at 11:40 AM Nhat Pham <nphamcs@gmail.com> wrote: > > > > This patch implements a helper function that try to get a reference to > > an memcg's css, as well as checking if it is online. This new function > > is almost exactly the same as the existing mem_cgroup_tryget(), except > > for the onlineness check. In the !CONFIG_MEMCG case, it always returns > > true, analogous to mem_cgroup_tryget(). This is useful for e.g to the > > new zswap writeback scheme, where we need to select the next online > > memcg as a candidate for the global limit reclaim. > > > > Signed-off-by: Nhat Pham <nphamcs@gmail.com> > > Reviewed-by: Yosry Ahmed <yosryahmed@google.com> Thanks for the review, Yosry :) Really appreciate the effort and your comments so far. > > > --- > > include/linux/memcontrol.h | 10 ++++++++++ > > 1 file changed, 10 insertions(+) > > > > diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h > > index 7bdcf3020d7a..2bd7d14ace78 100644 > > --- a/include/linux/memcontrol.h > > +++ b/include/linux/memcontrol.h > > @@ -821,6 +821,11 @@ static inline bool mem_cgroup_tryget(struct mem_cgroup *memcg) > > return !memcg || css_tryget(&memcg->css); > > } > > > > +static inline bool mem_cgroup_tryget_online(struct mem_cgroup *memcg) > > +{ > > + return !memcg || css_tryget_online(&memcg->css); > > +} > > + > > static inline void mem_cgroup_put(struct mem_cgroup *memcg) > > { > > if (memcg) > > @@ -1349,6 +1354,11 @@ static inline bool mem_cgroup_tryget(struct mem_cgroup *memcg) > > return true; > > } > > > > +static inline bool mem_cgroup_tryget_online(struct mem_cgroup *memcg) > > +{ > > + return true; > > +} > > + > > static inline void mem_cgroup_put(struct mem_cgroup *memcg) > > { > > } > > -- > > 2.34.1
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 7bdcf3020d7a..2bd7d14ace78 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -821,6 +821,11 @@ static inline bool mem_cgroup_tryget(struct mem_cgroup *memcg) return !memcg || css_tryget(&memcg->css); } +static inline bool mem_cgroup_tryget_online(struct mem_cgroup *memcg) +{ + return !memcg || css_tryget_online(&memcg->css); +} + static inline void mem_cgroup_put(struct mem_cgroup *memcg) { if (memcg) @@ -1349,6 +1354,11 @@ static inline bool mem_cgroup_tryget(struct mem_cgroup *memcg) return true; } +static inline bool mem_cgroup_tryget_online(struct mem_cgroup *memcg) +{ + return true; +} + static inline void mem_cgroup_put(struct mem_cgroup *memcg) { }
This patch implements a helper function that try to get a reference to an memcg's css, as well as checking if it is online. This new function is almost exactly the same as the existing mem_cgroup_tryget(), except for the onlineness check. In the !CONFIG_MEMCG case, it always returns true, analogous to mem_cgroup_tryget(). This is useful for e.g to the new zswap writeback scheme, where we need to select the next online memcg as a candidate for the global limit reclaim. Signed-off-by: Nhat Pham <nphamcs@gmail.com> --- include/linux/memcontrol.h | 10 ++++++++++ 1 file changed, 10 insertions(+)