LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* DOS by unprivileged user
@ 2018-04-19 19:13 Ferry Toth
2018-04-20 4:46 ` Mike Galbraith
` (2 more replies)
0 siblings, 3 replies; 14+ messages in thread
From: Ferry Toth @ 2018-04-19 19:13 UTC (permalink / raw)
To: linux-kernel
It appears any ordinary user can easily create a DOS on linux.
One sure way to reproduce this is to open gitk on the linux kernel repo
(SIC) on a machine with 8GB RAM 16 GB swap on a HDD with btrfs and quad core
+ hyperthreading. But I will be easy enough to get the same effect with more
RAM, other fs etc.
In this case gitk allocates more and more memory (until my system freezes
6.5GB of 7.5GB avaiable), the system starts swapping or writing to tmp files
(can't investigate as there is no time until it freezes) and the io wait
goes to 100% on all cores. At this point it is impossible to login from
remote and local keyboard and mouse are frozen. Hard reset is the only way
out at this point.
IMHO there is something wrong in how the kernel hands out resources, in this
case memory, CPU time and disk accesses. It should be easily measurable that
a single application is allocating all memory and consequently all CPU time
is spent in io wait. I'm pretty sure that if the kernel would stop or reduce
allocating CPU time to the hogging (user) process causing excessive io wait,
the machine would continue just fine. And probably a single process should
not even be allowed to allocate this amount of memory. Or at least should
not force other applications to get swapped out.
In effect gitk should have beeb forced to run slow or be killed off (which
doesn't happen because probably the kernel itself doesn't receive enough CPU
time).
As a positive side effect maybe someone would dig into gitk and make it less
memory hungry (qgit is half as hungry, still a lot).
--
Ferry Toth
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: DOS by unprivileged user
2018-04-19 19:13 DOS by unprivileged user Ferry Toth
@ 2018-04-20 4:46 ` Mike Galbraith
2018-04-20 8:39 ` Ferry Toth
2018-04-22 10:16 ` Pavel Machek
[not found] ` <4285098.DEWjdbWF2X@delfion>
2 siblings, 1 reply; 14+ messages in thread
From: Mike Galbraith @ 2018-04-20 4:46 UTC (permalink / raw)
To: Ferry Toth; +Cc: lkml
On Thu, 2018-04-19 at 21:13 +0200, Ferry Toth wrote:
> It appears any ordinary user can easily create a DOS on linux.
>
> One sure way to reproduce this is to open gitk on the linux kernel repo
> (SIC) on a machine with 8GB RAM 16 GB swap on a HDD with btrfs and quad core
> + hyperthreading. But I will be easy enough to get the same effect with more
> RAM, other fs etc.
>
> In this case gitk allocates more and more memory (until my system freezes
> 6.5GB of 7.5GB avaiable), the system starts swapping or writing to tmp files
> (can't investigate as there is no time until it freezes) and the io wait
> goes to 100% on all cores. At this point it is impossible to login from
> remote and local keyboard and mouse are frozen. Hard reset is the only way
> out at this point.
datapoint: my i4790/ext4 box running master.yesterday booted mem=8G
became highly unpleasant to use, but I retained control, and the all
cores going to 100% thing did not happen at any time.
I didn't try constraining on the gitk user, just turned it loose a few
times to see if it managed to render box effectively dead. It failed
to kill my box, but (expectedly) did make it suck rocks.
-Mike
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: DOS by unprivileged user
2018-04-20 4:46 ` Mike Galbraith
@ 2018-04-20 8:39 ` Ferry Toth
2018-04-20 12:37 ` Mike Galbraith
0 siblings, 1 reply; 14+ messages in thread
From: Ferry Toth @ 2018-04-20 8:39 UTC (permalink / raw)
To: Mike Galbraith; +Cc: lkml
Op vrijdag 20 april 2018 06:46:58 CEST schreef Mike Galbraith:
> On Thu, 2018-04-19 at 21:13 +0200, Ferry Toth wrote:
> > It appears any ordinary user can easily create a DOS on linux.
> >
> > One sure way to reproduce this is to open gitk on the linux kernel repo
> > (SIC) on a machine with 8GB RAM 16 GB swap on a HDD with btrfs and quad core
> > + hyperthreading. But I will be easy enough to get the same effect with more
> > RAM, other fs etc.
> >
> > In this case gitk allocates more and more memory (until my system freezes
> > 6.5GB of 7.5GB avaiable), the system starts swapping or writing to tmp files
> > (can't investigate as there is no time until it freezes) and the io wait
> > goes to 100% on all cores. At this point it is impossible to login from
> > remote and local keyboard and mouse are frozen. Hard reset is the only way
> > out at this point.
>
> datapoint: my i4790/ext4 box running master.yesterday booted mem=8G
> became highly unpleasant to use, but I retained control, and the all
> cores going to 100% thing did not happen at any time.
>
> I didn't try constraining on the gitk user, just turned it loose a few
> times to see if it managed to render box effectively dead. It failed
> to kill my box, but (expectedly) did make it suck rocks.
>
> -Mike
>
Yes, might be less dramatic with ext4 than with btrfs (COW icw fsync on hdd'\0s destroys performance
of things like virtualbox, databases, dpkg).
Nevertheless I feel one process should not be allowed to harm other processes by denying them resources. Even if when btrfs makes it easy abuse I think the scheduler should have throttled gitk.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: DOS by unprivileged user
2018-04-20 8:39 ` Ferry Toth
@ 2018-04-20 12:37 ` Mike Galbraith
0 siblings, 0 replies; 14+ messages in thread
From: Mike Galbraith @ 2018-04-20 12:37 UTC (permalink / raw)
To: Ferry Toth; +Cc: lkml
On Fri, 2018-04-20 at 10:39 +0200, Ferry Toth wrote:
>
> Nevertheless I feel one process should not be allowed to harm other
> processes by denying them resources. Even if when btrfs makes it easy
> abuse I think the scheduler should have throttled gitk.
Memory management is not in it's job description.
-Mike
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: DOS by unprivileged user
2018-04-19 19:13 DOS by unprivileged user Ferry Toth
2018-04-20 4:46 ` Mike Galbraith
@ 2018-04-22 10:16 ` Pavel Machek
2018-04-22 17:43 ` vcaputo
[not found] ` <4285098.DEWjdbWF2X@delfion>
2 siblings, 1 reply; 14+ messages in thread
From: Pavel Machek @ 2018-04-22 10:16 UTC (permalink / raw)
To: Ferry Toth; +Cc: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 567 bytes --]
On Thu 2018-04-19 21:13:35, Ferry Toth wrote:
> It appears any ordinary user can easily create a DOS on linux.
>
> One sure way to reproduce this is to open gitk on the linux kernel repo
> (SIC) on a machine with 8GB RAM 16 GB swap on a HDD with btrfs and quad core
> + hyperthreading. But I will be easy enough to get the same effect with more
> RAM, other fs etc.
You may want to disable swap.
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: DOS by unprivileged user
2018-04-22 10:16 ` Pavel Machek
@ 2018-04-22 17:43 ` vcaputo
2018-04-23 0:27 ` Michal Hocko
0 siblings, 1 reply; 14+ messages in thread
From: vcaputo @ 2018-04-22 17:43 UTC (permalink / raw)
To: Pavel Machek; +Cc: Ferry Toth, linux-kernel
On Sun, Apr 22, 2018 at 12:16:54PM +0200, Pavel Machek wrote:
> On Thu 2018-04-19 21:13:35, Ferry Toth wrote:
> > It appears any ordinary user can easily create a DOS on linux.
> >
> > One sure way to reproduce this is to open gitk on the linux kernel repo
> > (SIC) on a machine with 8GB RAM 16 GB swap on a HDD with btrfs and quad core
> > + hyperthreading. But I will be easy enough to get the same effect with more
> > RAM, other fs etc.
>
> You may want to disable swap.
>
I run without swap on my laptops, and still observe long periods of
thrashing on the road towards OOM. What seems to occur is the active
file-backed mappings of executables/libraries become a sort of swap
area, repeatedly being discarded and faulted back in as the context
switches occur.
If there's any good way to prevent this, I'd like to know.
Regards,
Vito Caputo
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: DOS by unprivileged user
2018-04-22 17:43 ` vcaputo
@ 2018-04-23 0:27 ` Michal Hocko
2018-04-23 7:13 ` Pavel Machek
0 siblings, 1 reply; 14+ messages in thread
From: Michal Hocko @ 2018-04-23 0:27 UTC (permalink / raw)
To: vcaputo; +Cc: Pavel Machek, Ferry Toth, linux-kernel
On Sun 22-04-18 10:43:00, vcaputo@pengaru.com wrote:
> On Sun, Apr 22, 2018 at 12:16:54PM +0200, Pavel Machek wrote:
> > On Thu 2018-04-19 21:13:35, Ferry Toth wrote:
> > > It appears any ordinary user can easily create a DOS on linux.
> > >
> > > One sure way to reproduce this is to open gitk on the linux kernel repo
> > > (SIC) on a machine with 8GB RAM 16 GB swap on a HDD with btrfs and quad core
> > > + hyperthreading. But I will be easy enough to get the same effect with more
> > > RAM, other fs etc.
> >
> > You may want to disable swap.
> >
>
> I run without swap on my laptops, and still observe long periods of
> thrashing on the road towards OOM. What seems to occur is the active
> file-backed mappings of executables/libraries become a sort of swap
> area, repeatedly being discarded and faulted back in as the context
> switches occur.
>
> If there's any good way to prevent this, I'd like to know.
I am afraid there is none yet. Johannes had some ground work for
page cache trashing detection https://marc.info/?i=20170727153010.23347-1-hannes%40cmpxchg.org
but there was no version of the patchseries for quite some time and
there was no integration into the oom detection which would be
non-trivial as well.
I realize this sucks. But the reality is that this is far from trivial
to resolve without introducing pre-mature OOM killer invocations.
--
Michal Hocko
SUSE Labs
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: DOS by unprivileged user
2018-04-23 0:27 ` Michal Hocko
@ 2018-04-23 7:13 ` Pavel Machek
0 siblings, 0 replies; 14+ messages in thread
From: Pavel Machek @ 2018-04-23 7:13 UTC (permalink / raw)
To: Michal Hocko; +Cc: vcaputo, Ferry Toth, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 1980 bytes --]
On Sun 2018-04-22 18:27:38, Michal Hocko wrote:
> On Sun 22-04-18 10:43:00, vcaputo@pengaru.com wrote:
> > On Sun, Apr 22, 2018 at 12:16:54PM +0200, Pavel Machek wrote:
> > > On Thu 2018-04-19 21:13:35, Ferry Toth wrote:
> > > > It appears any ordinary user can easily create a DOS on linux.
> > > >
> > > > One sure way to reproduce this is to open gitk on the linux kernel repo
> > > > (SIC) on a machine with 8GB RAM 16 GB swap on a HDD with btrfs and quad core
> > > > + hyperthreading. But I will be easy enough to get the same effect with more
> > > > RAM, other fs etc.
> > >
> > > You may want to disable swap.
> > >
> >
> > I run without swap on my laptops, and still observe long periods of
> > thrashing on the road towards OOM. What seems to occur is the active
> > file-backed mappings of executables/libraries become a sort of swap
> > area, repeatedly being discarded and faulted back in as the context
> > switches occur.
> >
> > If there's any good way to prevent this, I'd like to know.
>
> I am afraid there is none yet. Johannes had some ground work for
> page cache trashing detection https://marc.info/?i=20170727153010.23347-1-hannes%40cmpxchg.org
> but there was no version of the patchseries for quite some time and
> there was no integration into the oom detection which would be
> non-trivial as well.
>
> I realize this sucks. But the reality is that this is far from trivial
> to resolve without introducing pre-mature OOM killer invocations.
Another problem is that what "unusable machine" in X/web browser
situation may be normal load for build server...
I guess one way would be "hey, this is my X server; if it is waiting
for disk for more than 10 seconds, you probably want to OOM kill
someone. Ouch and same goes for my window manager".
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread
[parent not found: <4285098.DEWjdbWF2X@delfion>]
end of thread, other threads:[~2018-04-30 10:35 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-19 19:13 DOS by unprivileged user Ferry Toth
2018-04-20 4:46 ` Mike Galbraith
2018-04-20 8:39 ` Ferry Toth
2018-04-20 12:37 ` Mike Galbraith
2018-04-22 10:16 ` Pavel Machek
2018-04-22 17:43 ` vcaputo
2018-04-23 0:27 ` Michal Hocko
2018-04-23 7:13 ` Pavel Machek
[not found] ` <4285098.DEWjdbWF2X@delfion>
[not found] ` <1524325275.8078.2.camel@gmx.de>
[not found] ` <6057755.ozdVOybsI6@delfion>
2018-04-23 8:04 ` Mike Galbraith
2018-04-25 14:54 ` Alan Cox
2018-04-25 16:21 ` Mike Galbraith
2018-04-25 16:50 ` Mike Galbraith
2018-04-30 10:00 ` Ferry Toth
2018-04-30 10:35 ` Miguel Ojeda
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).