Wie viel Ressourcen braucht Linux?

Linux steht unter anderem auch für effiziente, schnelle und begnügsame Server-Systeme. Auch auf älteren Systemen kann man ohne weiteres Serverapplikationen anbieten, was man beispielsweise von Windows 2003 Server nicht behaupten kann. Das liegt einfach daran, dass man ein komplettes Windows-System mit all den ressourcenfressenden Anwendungen installiert, so dass die Hardware auf dem aktuellsten Stand sein muss. Bei dem Gedanken, beispielsweise Windows 2003 Server auf einem Pentium 2-System mit 128 MB RAM zu installieren, graust es jedem Administrator!

Linux an sich hat den Vorteil, dass es aus vielen Anwendungen zusammengesetzt ist. Bildlich gesehen ist eine Linux-Installation wie ein Haus aus Lego-Steinen, bei dem jeder seine Lego-Steine selbst auswählen kann. Der Begriff Linux meint lediglich den Kernel, also die Basis bzw. Kern des Betriebssystem. Fälschlicherweise wird der Name Linux für Distributionen wie Suse, Mandrake oder RedHat missbraucht, doch diese machen nichts anderes, als dem Anwender die wichtigsten "Legosteine" zusammenzustellen. Alles andere neben dem Kernel sind freie Anwendungen, die unter der so genannten GNU-Lizenz stehen. Darunter fallen sämtliche Programme, auch die Benutzeroberfläche, der Grafikserver, die Libraries, etc (unter Programmen wird oftmals nur Anwendungen wie Office, Spiele, Chatprogramme, etc verstanden).

Speicherverwaltung.jpg

Und genau hier liegt der Vorteil von Linux, denn man kann den ganzen "Schnick Schnack" weglassen. Wer braucht schon für einen Server eine ressourcenfressende Benutzeroberfläche? Für eine Arbeitsstation ist heutzutage eine Benutzeroberfläche ein unverzichtbares Muss, aber ein Server muss konfiguriert und gewartet werden. Und dazu reicht die Texteingabe allemal aus! Auch andere unnötigen Anwendungen müssen nicht benutzt werden, wenn man sie nicht braucht.

Server-Einrichtung

So viel zum Prinzip von Linux, jetzt wollen wir das Ganze einmal in die Realität umsetzen: Wenn man sich mal im Keller oder in verstaubten Kartons umschaut, wird man sicherlich die eine oder andere Hardware finden, für die man schon lange keine Verwendung mehr hat. So war es auch in meinem Fall, denn ich hatte noch einen einen Pentium 133 Mhz, ein uraltes ASUS Sockel 7 Mainboard, auf das nur EDO-RAM installiert werden kann, eine S3 Trio, welche noch ohne Kühlelement auskam (und bestimmt nicht mehr als 4 MB Speicher hat) und Festplatten in der Größe von 800, 610 und 500 MB in meiner Krabbelkiste liegen. Alles Komponenten, die irgendwann mal auf den Sondermüll gelandet wären, wenn ich nicht mit Gentoo-Linux in Kontakt gekommen wäre.

Gentoo hat den Vorteil, dass man ein komplettes Linux-System von Grundauf aufbauen kann. Nachdem man die Basis installiert und den Kernel konfiguriert hat, steht man vor einem total nacktem Linux-System. Außer dem Eingabeprompt sieht man noch nix. Der Heimanwender würde an diesem Punkt nun beginnen, den Grafikserver, die Benutzeroberfläche (KDE oder Gnome, etc) und anschließend alle benötigten Programme zu installieren. Doch diese braucht man für einen Server überhaupt nicht und verbrauchen nur unnötig Ressourcen, so dass diese in diesem Projekt erst gar nicht installiert werden.

Da der Server vorerst nur als Datei-Ablage, FTP- und Webserver dienen soll, brauchen wir auch nur SAMBA, Proftpd und Apache installieren und als Dämon im Hintergrund starten. Das wären dann alles in allem drei "Programme", die an sich nicht viel Ressourcen verbrauchen. Für eine einfach Verwaltung sollte man auch noch SSH auf dem Linux-System installiert haben, damit man sich von einem beliebigen Rechner (kann auch ein Windows-PC sein) über das Netzwerk einloggen und den Server bequem bedienen kann. Dann kann man die Serverkiste ohne Monitor irgendwo in eine Ecke stellen, wo ihn keiner sieht.

Speicherverbrauch

Die Speicherverwaltung von Linux ist eines der größten Vorteile des OpenSource-Betriebssystems. Anders als Windows hat Linux nicht die Eigenart, alles auf die Festplatte auszulagern. Daten, die sich auf der Festplatte befinden, werden 1.000 Mal langsamer geladen als wenn sie sich im Arbeitsspeicher befinden. Warum dann Auslagern, wenn der Arbeitsspeicher noch Platz frei hat?

Und genau das macht Linux! Wenn man ein Weile mit Linux gearbeitet hat und man den den belegten Speicherplatz im RAM überprüft, bekommt der Linux-Einsteiger erst einmal einen großen Schrecken: Auch wenn man eine große Menge Arbeitsspeicher im Rechner verbaut hat, ist dieser unter Linux immer bis zu 90% belegt. Doch der größte Teil sind hier zwischengespeicherte Dateien, die vielleicht irgendwann noch mal benötigt werden. Solange der Speicherplatz nicht gebraucht wird, können diese Daten ruhig im RAM gelagert werden. Wird dann der Speicher doch gebraucht, wo werden diese Daten auf die Festplatte ausgelagert. Alles in allem ein kluges und effizientes System!

Dieses Prinzip konnte man auch nach dem Start auf dem neu aufgesetzten Linux-System verfolgen. Umittelbar nach dem Starten wurden geraden einmal 20 MB belegt, was für moderne Betriebsysteme mehr als ein Traum ist. Nach einigen Minuten und Stunden konnte man aber oben beschriebenes Prinzip verfolgen, denn der Arbeitsspeicher lief mit zunehmender Zeit voll.

&linuxserver root # top

top - 13:03:12 up 1 day, 38 min, 3 users, load average: 0.01, 0.02, 0.00

Tasks: 27 total, 1 running, 26 sleeping, 0 stopped, 0 zombie

Cpu(s): 0.8% user, 1.3% system, 0.0% nice, 97.9% idle

Mem: 126756k total, 100740k used, 26016k free, 18104k buffers

Swap: 63496k total, 0k used, 63496k free, 67120k cached



PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

3147 root 19 0 988 988 820 R 2.1 0.8 0:03.23 top

1 root 8 0 480 476 428 S 0.0 0.4 0:03.96 init

2 root 9 0 0 0 0 S 0.0 0.0 0:00.36 keventd

3 root 19 19 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd_CPU0

4 root 9 0 0 0 0 S 0.0 0.0 0:00.83 kswapd

5 root 9 0 0 0 0 S 0.0 0.0 0:00.09 bdflush

6 root 9 0 0 0 0 S 0.0 0.0 0:04.66 kupdated

8 root 9 0 0 0 0 S 0.0 0.0 0:00.00 khubd

9 root 9 0 0 0 0 S 0.0 0.0 0:00.00 kreiserfsd

153 root 9 0 864 864 620 S 0.0 0.7 0:00.16 devfsd

851 root 9 0 0 0 0 S 0.0 0.0 0:00.00 eth0

853 root 9 0 448 448 396 S 0.0 0.4 0:00.00 dhcpcd

899 root 9 0 1004 1004 820 S 0.0 0.8 0:00.20 login

900 root 9 0 1012 1012 824 S 0.0 0.8 0:00.13 login

901 root 9 0 656 652 572 S 0.0 0.5 0:00.02 agetty

902 root 9 0 656 652 572 S 0.0 0.5 0:00.05 agetty

903 root 9 0 656 652 572 S 0.0 0.5 0:00.02 agetty

Wichtig sind hier die Einträge 126756k total, 100740k used, 26016k free, was so viel bedeutet wie 128 MB verbauter Speicher, 100 MB gebraucht und 28 MB frei. Dies ist erst einmal sehr verwunderlich, aber der Eintrag 67120k cached löst das ganze Rätsel. Von den 100 MB sind 68 MB temporäre Dateien, die jederzeit ausgelagert werden können, sofern mehr Speicher benötigt wird. Sollten diese Daten aber von einer Anwendung gebraucht werden, so müssen diese nicht mehr geladen werden, was einen enormen Perfomance-Gewinn mit sich bringt.