slow hard drives crushing interactivity
Havoc Pennington
hp at redhat.com
Mon Jan 24 23:01:55 UTC 2005
Hi,
On my IBM X31 laptop, the system entirely locks up when there's a lot of
disk access, some common situations are:
- when getting heavily into swap due to a runaway process
- when running rpm/yum
It's not *technically* locked up (i.e. if you wait long enough it will
come back) but in practice you have to reboot if a process has a memory
leak, and you can't do any work while running yum.
I have 512M of physical memory. I tried reducing swap from 1G to 256M so
runaway processes wouldn't require a reboot, but I just now had a
runaway process and discovered that less swap helps a little bit (you
can at least move the mouse pointer) but I still had to reboot because
it was taking multiple minutes to get a window open to run "killall" and
the root login times out before the Password: prompt comes up.
Some people with real hard drives instead of slow-ass laptop drives say
this doesn't happen to them.
Is there any solution (that we can enable by default/automatically, not
much of a solution otherwise)? Right now it's sort of like running an OS
without protected memory.
A bad solution (since most people won't know about it) might be a hotkey
that says "massively lower the priority of any process that's doing a
lot of disk access at the moment" or something. Or just a "kill any
process using more memory than I have physical memory," I don't know.
Maybe a cap on process size, so there can be 1G virtual memory but an
individual app can only use 512M? Maybe when a process reaches 512M we
could suspend it and ask the user whether to
let it grow further? With a kernel event when processes pass a certain
size you could even
do that heuristically (with races) by implementing the "kill -STOP" in
userspace in response to an event.
Would it help to mlock() the X server, window manager, and panel ;-)
Or is it just VM tuning that's needed?
If there's no automatic way to make this work, maybe there's at least a
way to key off a single global desktop vs. server flag rather than
requiring more detailed tuning?
Havoc
More information about the devel
mailing list