Matthew Wilcox
2018-Apr-20 21:02 UTC
[PATCH] kvmalloc: always use vmalloc if CONFIG_DEBUG_VM
On Fri, Apr 20, 2018 at 04:54:53PM -0400, Mikulas Patocka wrote:> On Fri, 20 Apr 2018, Michal Hocko wrote: > > No way. This is just wrong! First of all, you will explode most likely > > on many allocations of small sizes. Second, CONFIG_DEBUG_VM tends to be > > enabled quite often. > > You're an evil person who doesn't want to fix bugs.Steady on. There's no need for that. Michal isn't evil. Please apologise.> You refused to fix vmalloc(GFP_NOIO) misbehavior a year ago (did you make > some progress with it since that time?) and you refuse to fix kvmalloc > misuses.I understand you're frustrated, but this is not the way to get the problems fixed.> I tried this patch on text-only virtual machine and /proc/vmallocinfo > shows 614kB more memory. I tried it on a desktop machine with the chrome > browser open and /proc/vmallocinfo space is increased by 7MB. So no - this > won't exhaust memory and kill the machine.This is good data, thank you for providing it.> Arguing that this increases memory consumption is as bogus as arguing that > CONFIG_LOCKDEP increses memory consumption. No one is forcing you to > enable CONFIG_LOCKDEP and no one is forcing you to enable this kvmalloc > test too.I think there's a real problem which is that CONFIG_DEBUG_VM is too broad. It inserts code in a *lot* of places, some of which is quite expensive. We would do better to split it into more granular pieces ... although an explosion of configuration options isn't great either. Maybe just CONFIG_DEBUG_VM and CONFIG_DEBUG_VM_EXPENSIVE. Michal may be wrong, but he's not evil.
Mikulas Patocka
2018-Apr-20 21:21 UTC
[PATCH] kvmalloc: always use vmalloc if CONFIG_DEBUG_VM
On Fri, 20 Apr 2018, Matthew Wilcox wrote:> On Fri, Apr 20, 2018 at 04:54:53PM -0400, Mikulas Patocka wrote: > > On Fri, 20 Apr 2018, Michal Hocko wrote: > > > No way. This is just wrong! First of all, you will explode most likely > > > on many allocations of small sizes. Second, CONFIG_DEBUG_VM tends to be > > > enabled quite often. > > > > You're an evil person who doesn't want to fix bugs. > > Steady on. There's no need for that. Michal isn't evil. Please > apologise.I see this attitude from Michal again and again. He didn't want to fix vmalloc(GFP_NOIO), he didn't want to fix alloc_pages sleeping when __GFP_NORETRY is used. So what should I say? Fix them and you won't be evil :-) (he could also fix the oom killer, so that it is triggered when free_memory+cache+free_swap goes beyond a threshold and not when you loop too long in the allocator)> > You refused to fix vmalloc(GFP_NOIO) misbehavior a year ago (did you make > > some progress with it since that time?) and you refuse to fix kvmalloc > > misuses. > > I understand you're frustrated, but this is not the way to get the problems > fixed. > > > I tried this patch on text-only virtual machine and /proc/vmallocinfo > > shows 614kB more memory. I tried it on a desktop machine with the chrome > > browser open and /proc/vmallocinfo space is increased by 7MB. So no - this > > won't exhaust memory and kill the machine. > > This is good data, thank you for providing it. > > > Arguing that this increases memory consumption is as bogus as arguing that > > CONFIG_LOCKDEP increses memory consumption. No one is forcing you to > > enable CONFIG_LOCKDEP and no one is forcing you to enable this kvmalloc > > test too. > > I think there's a real problem which is that CONFIG_DEBUG_VM is too broad. > It inserts code in a *lot* of places, some of which is quite expensive. > We would do better to split it into more granular pieces ... although > an explosion of configuration options isn't great either. Maybe just > CONFIG_DEBUG_VM and CONFIG_DEBUG_VM_EXPENSIVE. > > Michal may be wrong, but he's not evil.I already said that we can change it from CONFIG_DEBUG_VM to CONFIG_DEBUG_SG - or to whatever other option you may want, just to make sure that it is enabled in distro debug kernels by default. Mikulas
Matthew Wilcox
2018-Apr-21 14:47 UTC
[PATCH] kvmalloc: always use vmalloc if CONFIG_DEBUG_VM
On Fri, Apr 20, 2018 at 05:21:26PM -0400, Mikulas Patocka wrote:> On Fri, 20 Apr 2018, Matthew Wilcox wrote: > > On Fri, Apr 20, 2018 at 04:54:53PM -0400, Mikulas Patocka wrote: > > > On Fri, 20 Apr 2018, Michal Hocko wrote: > > > > No way. This is just wrong! First of all, you will explode most likely > > > > on many allocations of small sizes. Second, CONFIG_DEBUG_VM tends to be > > > > enabled quite often. > > > > > > You're an evil person who doesn't want to fix bugs. > > > > Steady on. There's no need for that. Michal isn't evil. Please > > apologise. > > I see this attitude from Michal again and again.Fine; then *say that*. I also see Michal saying "No" a lot. Sometimes I agree with him, sometimes I don't. I think he genuinely wants the best code in the kernel, and saying "No" is part of it.> He didn't want to fix vmalloc(GFP_NOIO)I don't remember that conversation, so I don't know whether I agree with his reasoning or not. But we are supposed to be moving away from GFP_NOIO towards marking regions with memalloc_noio_save() / restore. If you do that, you won't need vmalloc(GFP_NOIO).> he didn't want to fix alloc_pages sleeping when __GFP_NORETRY is used.The GFP flags are a mess, still.> So what should I say? Fix them and > you won't be evil :-)No, you should reserve calling somebody evil for truly evil things.> (he could also fix the oom killer, so that it is triggered when > free_memory+cache+free_swap goes beyond a threshold and not when you loop > too long in the allocator)... that also doesn't make somebody evil.> I already said that we can change it from CONFIG_DEBUG_VM to > CONFIG_DEBUG_SG - or to whatever other option you may want, just to make > sure that it is enabled in distro debug kernels by default.Yes, and I think that's the right idea. So send a v2 and ignore the replies that are clearly relating to an earlier version of the patch. Not everybody reads every mail in the thread before responding to one they find interesting. Yes, ideally, one would, but sometimes one doesn't.
Apparently Analagous Threads
- [PATCH] kvmalloc: always use vmalloc if CONFIG_DEBUG_VM
- [PATCH] kvmalloc: always use vmalloc if CONFIG_DEBUG_VM
- [PATCH] kvmalloc: always use vmalloc if CONFIG_DEBUG_VM
- [PATCH] kvmalloc: always use vmalloc if CONFIG_DEBUG_VM
- [PATCH] kvmalloc: always use vmalloc if CONFIG_DEBUG_VM