Our bloat problem
[Posted August 3, 2005 by corbet]
Andy Oram's
report from the
Ottawa Linux Symposium notes that OpenOffice.org took some grief there:
Already, two speakers have made wisecracks about OpenOffice.org,
tagging it as a bloated memory hog. I have the suspicion that some
attendees see Linux as something to run for its own intrinsic
value, rather than as a platform for useful applications that can
actually help people accomplish something.
As one of those speakers, your editor will plead guilty to taking a cheap
shot for an easy laugh (and people did laugh). But the remark had nothing
to do with the value of OpenOffice.org as an application. It was about
bloat.
In a private conversation at the same conference, an engineer working with
a services company in a developing country mentioned a valuable line of
business for his employer. It seems that there are customers with large
numbers of older desktop computers running legacy operating systems; they
would like to extend the life of those computers by putting Linux onto
them. But Linux does not run as well on these systems as anybody would
like; it is simply too big. OpenOffice.org is especially problematic on
smaller systems, but the problem does not stop there.
Not that long ago, Linux was a relatively small and fast system which could
run well on a wide variety of older hardware. That may still be true in
some specific cases - Linux-based firewall/routers, for example - but, as a
general-purpose operating system, Linux has become just as bloated as its
proprietary competition. Your editor just looked at his desktop system,
with two days of uptime, to see where the memory went. A few examples:
| Program | Resident set (MB) |
| cupsd | 6 |
| gnome-settings-daemon | 9 |
| gconfd | 9 |
| gnome-session | 10 |
| metacity | 14 |
| gnome-panel | 15 |
| gnome-terminal | 21 |
| clock-applet | 10 |
| emacs | 37 |
| firefox | 90 |
It is a sad world when 10MB of memory is required to display a clock, and
21MB to run a terminal emulator.
Developers who have taken a class in data structures have probably heard
all about time-space tradeoffs. Programs can often be made faster at the
expense of higher memory usage. The truth of the matter, however, is that
these tradeoffs are often illusory. Big code is slow code. From inferior
processor cache usage through to virtual memory thrashing, large code slows
things down across the entire system. On contemporary systems, the way to
faster code is often by using less space, not more.
There are signs that more developers are beginning to understand the costs
of bloat. There is a GNOME
memory reduction project underway, for example, though it does not
appear to be progressing rapidly. But a more serious effort will be
required if the Linux desktop is going to lose some significant weight.
And it should lose that weight. Some growth is to be expected from the
development of the software itself - Linux systems can do much more than
they could a few years ago. But it seems clear that much of our
development has been aimed at the addition of new features, and relatively
little attention has been paid to memory usage. At this point, Linux need
not feel insecure about the features it offers; maybe the time has come to
put some more effort into implementing those features with fewer
resources. Otherwise, Linux is inflating itself out of a number of
possible applications and losing the leanness which used to be one of its
best attributes.
(
Log in to post comments)