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