Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1274052 > unrolled thread
| Started by | Vladimir Davydov <vdavydov@virtuozzo.com> |
|---|---|
| First post | 2015-11-20 13:50 +0100 |
| Last post | 2015-11-24 14:50 +0100 |
| Articles | 5 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH 09/14] net: tcp_memcontrol: simplify linkage between socket and page counter Vladimir Davydov <vdavydov@virtuozzo.com> - 2015-11-20 13:50 +0100
Re: [PATCH 09/14] net: tcp_memcontrol: simplify linkage between socket and page counter Johannes Weiner <hannes@cmpxchg.org> - 2015-11-20 20:00 +0100
Re: [PATCH 09/14] net: tcp_memcontrol: simplify linkage between socket and page counter Vladimir Davydov <vdavydov@virtuozzo.com> - 2015-11-23 10:40 +0100
Re: [PATCH 09/14] net: tcp_memcontrol: simplify linkage between socket and page counter Johannes Weiner <hannes@cmpxchg.org> - 2015-11-23 19:30 +0100
Re: [PATCH 09/14] net: tcp_memcontrol: simplify linkage between socket and page counter Vladimir Davydov <vdavydov@virtuozzo.com> - 2015-11-24 14:50 +0100
| From | Vladimir Davydov <vdavydov@virtuozzo.com> |
|---|---|
| Date | 2015-11-20 13:50 +0100 |
| Subject | Re: [PATCH 09/14] net: tcp_memcontrol: simplify linkage between socket and page counter |
| Message-ID | <qwTiy-7gN-39@gated-at.bofh.it> |
On Thu, Nov 12, 2015 at 06:41:28PM -0500, Johannes Weiner wrote: > There won't be any separate counters for socket memory consumed by > protocols other than TCP in the future. Remove the indirection and I really want to believe you're right. And with vmpressure propagation implemented properly you are likely to be right. However, we might still want to account other socket protos to memcg->memory in the unified hierarchy, e.g. UDP, or SCTP, or whatever else. Adding new consumers should be trivial, but it will break the legacy usecase, where only TCP sockets are supposed to be accounted. What about adding a check to sock_update_memcg() so that it would enable accounting only for TCP sockets in case legacy hierarchy is used? For the same reason, I think we'd better rename memcg->tcp_mem to something like memcg->sk_mem or we can even drop the cg_proto struct altogether embedding its fields directly to mem_cgroup struct. Also, I don't see any reason to have tcp_memcontrol.c file. It's tiny and with this patch it does not depend on tcp code any more. Let's move it to memcontrol.c? Other than that this patch looks OK to me. Thanks, Vladimir > link sockets directly to their owning memory cgroup. > > Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Johannes Weiner <hannes@cmpxchg.org> |
|---|---|
| Date | 2015-11-20 20:00 +0100 |
| Message-ID | <qwZ4C-2Bp-9@gated-at.bofh.it> |
| In reply to | #1274052 |
On Fri, Nov 20, 2015 at 03:42:16PM +0300, Vladimir Davydov wrote: > On Thu, Nov 12, 2015 at 06:41:28PM -0500, Johannes Weiner wrote: > > There won't be any separate counters for socket memory consumed by > > protocols other than TCP in the future. Remove the indirection and > > I really want to believe you're right. And with vmpressure propagation > implemented properly you are likely to be right. > > However, we might still want to account other socket protos to > memcg->memory in the unified hierarchy, e.g. UDP, or SCTP, or whatever > else. Adding new consumers should be trivial, but it will break the > legacy usecase, where only TCP sockets are supposed to be accounted. > What about adding a check to sock_update_memcg() so that it would enable > accounting only for TCP sockets in case legacy hierarchy is used? Yup, I was thinking the same thing. But we can cross that bridge when we come to it and are actually adding further packet types. > For the same reason, I think we'd better rename memcg->tcp_mem to > something like memcg->sk_mem or we can even drop the cg_proto struct > altogether embedding its fields directly to mem_cgroup struct. > > Also, I don't see any reason to have tcp_memcontrol.c file. It's tiny > and with this patch it does not depend on tcp code any more. Let's move > it to memcontrol.c? I actually had all this at first, but then wondered if it makes more sense to keep the legacy code in isolation. Don't you think it would be easier to keep track of what's v1 and what's v2 if we keep the legacy stuff physically separate as much as possible? In particular I found that 'tcp_mem.' marker really useful while working on the code. In the same vein, tcp_memcontrol.c doesn't really hurt anybody and I'd expect it to remain mostly unopened and unchanged in the future. But if we merge it into memcontrol.c, that code will likely be in the way and we'd have to make it explicit somehow that this is not actually part of the new memory controller anymore. What do you think? > Other than that this patch looks OK to me. Thank you! -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Vladimir Davydov <vdavydov@virtuozzo.com> |
|---|---|
| Date | 2015-11-23 10:40 +0100 |
| Message-ID | <qxVLl-8n9-33@gated-at.bofh.it> |
| In reply to | #1274350 |
On Fri, Nov 20, 2015 at 01:56:48PM -0500, Johannes Weiner wrote: > On Fri, Nov 20, 2015 at 03:42:16PM +0300, Vladimir Davydov wrote: > > On Thu, Nov 12, 2015 at 06:41:28PM -0500, Johannes Weiner wrote: > > > There won't be any separate counters for socket memory consumed by > > > protocols other than TCP in the future. Remove the indirection and > > > > I really want to believe you're right. And with vmpressure propagation > > implemented properly you are likely to be right. > > > > However, we might still want to account other socket protos to > > memcg->memory in the unified hierarchy, e.g. UDP, or SCTP, or whatever > > else. Adding new consumers should be trivial, but it will break the > > legacy usecase, where only TCP sockets are supposed to be accounted. > > What about adding a check to sock_update_memcg() so that it would enable > > accounting only for TCP sockets in case legacy hierarchy is used? > > Yup, I was thinking the same thing. But we can cross that bridge when > we come to it and are actually adding further packet types. Fair enough. > > > For the same reason, I think we'd better rename memcg->tcp_mem to > > something like memcg->sk_mem or we can even drop the cg_proto struct > > altogether embedding its fields directly to mem_cgroup struct. > > > > Also, I don't see any reason to have tcp_memcontrol.c file. It's tiny > > and with this patch it does not depend on tcp code any more. Let's move > > it to memcontrol.c? > > I actually had all this at first, but then wondered if it makes more > sense to keep the legacy code in isolation. Don't you think it would > be easier to keep track of what's v1 and what's v2 if we keep the > legacy stuff physically separate as much as possible? In particular I > found that 'tcp_mem.' marker really useful while working on the code. > > In the same vein, tcp_memcontrol.c doesn't really hurt anybody and I'd > expect it to remain mostly unopened and unchanged in the future. But > if we merge it into memcontrol.c, that code will likely be in the way > and we'd have to make it explicit somehow that this is not actually > part of the new memory controller anymore. > > What do you think? There isn't much code left in tcp_memcontrol.c, and not all of it is legacy. We still want to call tcp_init_cgroup and tcp_destroy_cgroup from memcontrol.c - in fact, it's the only call site, so I think we'd better keep these functions there. Apart from init/destroy, there is only stuff for handling legacy files, which is relatively small and isolated. We can just put it along with memsw and kmem legacy files in the end of memcontrol.c adding a comment that it's legacy. Personally, I'd find the code easier to follow then, because currently the logic behind the ACTIVE flag as well as memcg->tcp_mem init/use/destroy turns out to be scattered between two files in different subsystems for no apparent reason now, as it does not need tcp_prot any more. Besides, this would allow us to accurately reuse the ACTIVE flag in init/destroy for inc/dec static branch and probably in sock_update_memcg instead of sprinkling cgroup_subsys_on_dfl all over the place, which would make the code a bit cleaner IMO (in fact, that's why I proposed to drop ACTIVATED bit and replace cg_proto->flags with ->active bool). Regarding, tcp_mem marker, well, currently it's OK, because we don't account anything but TCP sockets, but when it changes (and I'm pretty sure it will), we'll have to rename it anyway. For now, I'm OK with leaving it as is though. Thanks, Vladimir -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Johannes Weiner <hannes@cmpxchg.org> |
|---|---|
| Date | 2015-11-23 19:30 +0100 |
| Message-ID | <qy42e-5wu-9@gated-at.bofh.it> |
| In reply to | #1275171 |
On Mon, Nov 23, 2015 at 12:36:46PM +0300, Vladimir Davydov wrote: > On Fri, Nov 20, 2015 at 01:56:48PM -0500, Johannes Weiner wrote: > > I actually had all this at first, but then wondered if it makes more > > sense to keep the legacy code in isolation. Don't you think it would > > be easier to keep track of what's v1 and what's v2 if we keep the > > legacy stuff physically separate as much as possible? In particular I > > found that 'tcp_mem.' marker really useful while working on the code. > > > > In the same vein, tcp_memcontrol.c doesn't really hurt anybody and I'd > > expect it to remain mostly unopened and unchanged in the future. But > > if we merge it into memcontrol.c, that code will likely be in the way > > and we'd have to make it explicit somehow that this is not actually > > part of the new memory controller anymore. > > > > What do you think? > > There isn't much code left in tcp_memcontrol.c, and not all of it is > legacy. We still want to call tcp_init_cgroup and tcp_destroy_cgroup > from memcontrol.c - in fact, it's the only call site, so I think we'd > better keep these functions there. Apart from init/destroy, there is > only stuff for handling legacy files, which is relatively small and > isolated. We can just put it along with memsw and kmem legacy files in > the end of memcontrol.c adding a comment that it's legacy. Personally, > I'd find the code easier to follow then, because currently the logic > behind the ACTIVE flag as well as memcg->tcp_mem init/use/destroy turns > out to be scattered between two files in different subsystems for no > apparent reason now, as it does not need tcp_prot any more. Besides, > this would allow us to accurately reuse the ACTIVE flag in init/destroy > for inc/dec static branch and probably in sock_update_memcg instead of > sprinkling cgroup_subsys_on_dfl all over the place, which would make the > code a bit cleaner IMO (in fact, that's why I proposed to drop ACTIVATED > bit and replace cg_proto->flags with ->active bool). As far as I can see, all of tcp_memcontrol.c is legacy, including the init and destroy functions. We only call them to set up the legacy tcp_mem state and do legacy jump-label maintenance. Delete it all and the unified hierarchy controller would still work. So I don't really see the benefits of consolidating it, and more risk of convoluting. That being said, if you care strongly about it and see opportunities to cut down code and make things more readable, please feel free to turn the flags -> bool patch into a followup series and I'll be happy to review it. Thanks! -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Vladimir Davydov <vdavydov@virtuozzo.com> |
|---|---|
| Date | 2015-11-24 14:50 +0100 |
| Message-ID | <qym8O-jw-27@gated-at.bofh.it> |
| In reply to | #1275704 |
On Mon, Nov 23, 2015 at 01:20:37PM -0500, Johannes Weiner wrote: > On Mon, Nov 23, 2015 at 12:36:46PM +0300, Vladimir Davydov wrote: > > On Fri, Nov 20, 2015 at 01:56:48PM -0500, Johannes Weiner wrote: > > > I actually had all this at first, but then wondered if it makes more > > > sense to keep the legacy code in isolation. Don't you think it would > > > be easier to keep track of what's v1 and what's v2 if we keep the > > > legacy stuff physically separate as much as possible? In particular I > > > found that 'tcp_mem.' marker really useful while working on the code. > > > > > > In the same vein, tcp_memcontrol.c doesn't really hurt anybody and I'd > > > expect it to remain mostly unopened and unchanged in the future. But > > > if we merge it into memcontrol.c, that code will likely be in the way > > > and we'd have to make it explicit somehow that this is not actually > > > part of the new memory controller anymore. > > > > > > What do you think? > > > > There isn't much code left in tcp_memcontrol.c, and not all of it is > > legacy. We still want to call tcp_init_cgroup and tcp_destroy_cgroup > > from memcontrol.c - in fact, it's the only call site, so I think we'd > > better keep these functions there. Apart from init/destroy, there is > > only stuff for handling legacy files, which is relatively small and > > isolated. We can just put it along with memsw and kmem legacy files in > > the end of memcontrol.c adding a comment that it's legacy. Personally, > > I'd find the code easier to follow then, because currently the logic > > behind the ACTIVE flag as well as memcg->tcp_mem init/use/destroy turns > > out to be scattered between two files in different subsystems for no > > apparent reason now, as it does not need tcp_prot any more. Besides, > > this would allow us to accurately reuse the ACTIVE flag in init/destroy > > for inc/dec static branch and probably in sock_update_memcg instead of > > sprinkling cgroup_subsys_on_dfl all over the place, which would make the > > code a bit cleaner IMO (in fact, that's why I proposed to drop ACTIVATED > > bit and replace cg_proto->flags with ->active bool). > > As far as I can see, all of tcp_memcontrol.c is legacy, including the > init and destroy functions. We only call them to set up the legacy > tcp_mem state and do legacy jump-label maintenance. Delete it all and > the unified hierarchy controller would still work. So I don't really > see the benefits of consolidating it, and more risk of convoluting. > > That being said, if you care strongly about it and see opportunities > to cut down code and make things more readable, please feel free to > turn the flags -> bool patch into a followup series and I'll be happy > to review it. OK, I'll look into that. Regarding this patch, I don't have any questions left, Reviewed-by: Vladimir Davydov <vdavydov@virtuozzo.com> Thanks, Vladimir -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web