Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Aktuell<br />
www.linux-magazin.de Kernel-News 09/2013<br />
20<br />
Schneller Booten auf Speicherriesen<br />
Der SGI-Entwickler Nathan<br />
Zimmer bemerkte, dass das<br />
Booten auf Hochleistungsrechnern<br />
mit viel Speicher sehr<br />
lange dauert. Mit 16 TByte<br />
RAM zum Beispiel kann es<br />
über eine Stunde in Anspruch<br />
nehmen, die hauptsächlich<br />
beim Initialisieren des Arbeitsspeichers<br />
vergeht. Ein Patch<br />
von ihm und seinem Kollegen<br />
Mike Travis sorgt dafür, dass<br />
zuerst die CPUs starten. So<br />
lässt sich die Speicherinitialisierung<br />
auf mehrere Prozessoren<br />
verteilen.<br />
Greg Kroah-Hartman fiel auf,<br />
dass die beiden ihr Patch als<br />
Konfigurationsoption vorgesehen<br />
hatten. Das hält er<br />
für unnötig vorsichtig, denn<br />
schließlich sei schnelleres<br />
Booten stets ein Gewinn für<br />
den Anwender. H. Peter Anvin<br />
schloss sich diesem Argument<br />
an und hält das Feature für<br />
alle Rechner ab einer gewissen<br />
RAM-Größe für sinnvoll,<br />
geschätzt ab 28 GByte.<br />
Daneben war Peter neugierig,<br />
wie groß das Patch sei, und<br />
Nathan antworte, es umfasse<br />
nur 400 Codezeilen. Peter<br />
hatte aber den binären Maschinencode<br />
gemeint, und der<br />
vergrößert das Kernelimage<br />
um 32 KByte. Anvin hält das<br />
für erstaunlich umfangreich.<br />
„Ist das alles Initcode?“, fragte<br />
er, „32 KByte Laufzeitcode,<br />
der immer ausgeführt wird, ist<br />
doch nicht ganz unproblematisch.“<br />
Nathan Zimmer meinte,<br />
echter Runtimecode seien<br />
wohl nur 24 KByte.<br />
Es folgte eine Diskussion über<br />
alternative Umsetzungen der<br />
Idee. Der x86-Kenner Yinghai<br />
Lu brachte Anregungen ein<br />
und Ingo Molnar schlug ein<br />
ganz anderes Konzept vor, das<br />
den Buddy-Allocator verwendet,<br />
der den Speicher in kleinere<br />
Einheiten aufteilt. Welche<br />
Lösung sich auch durchsetzt,<br />
die Besitzer großer Maschinen<br />
dürfen sich wohl bald über<br />
rascheres Booten freuen. n<br />
Anonymous Memory von Android<br />
Der Google-Entwickler Colin<br />
Cross findet es schade, wenn<br />
Features in »linux‐next« liegenbleiben.<br />
Einige würde er<br />
lieber im offiziellen Kernelzweig<br />
sehen, insbesondere<br />
»ashmem« (Android Shared<br />
Memory), das mehrere Arten<br />
von anonymem Arbeitsspeicher<br />
umsetzen kann.<br />
Besonders gefällt Colin Named<br />
Anonymous Memory. Hinter<br />
dieser Bezeichnung steckt<br />
eine Speicherregion, die als<br />
Datei unter »/proc/pid/maps«<br />
auftaucht. Er schreibt: „Die<br />
Dalvik-VM macht von diesem<br />
Feature ausgiebig Gebrauch<br />
[...]. Es erlaubt Speicher für<br />
verschiedene Zwecke über<br />
mehrere Prozesse hinweg zusammenzufassen.<br />
Android benutzt<br />
es in seinen Tools »dumpsys<br />
meminfo« und »librank«,<br />
um die Speichernutzung von<br />
Java-Heaps, JIT-Caches und<br />
anderem zu bestimmen.“<br />
Christoph Hellwig schien zunächst<br />
nicht davon überzeugt,<br />
dass das Feature tatsächlich<br />
so nützlich sei. Er verstand<br />
nicht, „was »ashmem« besser<br />
machen sollte als ein shared<br />
»mmap« von »/dev/zero«“.<br />
Colin erklärte ihm daher,<br />
»ashmem« binde den Speicher<br />
an einen Filedeskriptor.<br />
Damit lasse er sich einem<br />
anderen Prozess übergeben,<br />
was mit »/dev/zero« nicht<br />
funktioniere – es würde eine<br />
neue Speicherregion herauskommen.<br />
Christoph war zunächst<br />
erstaunt, konsultierte<br />
dann aber den Quelltext von<br />
»/dev/zero« und gab Colin<br />
schließlich recht.<br />
Darauf folgte eine Diskussion<br />
über Implementierungsdetails,<br />
an denen sich auch John<br />
Stultz vom Linaro-Projekt beteiligte.<br />
Ein konkretes Konzept<br />
ergab sich dabei zwar nicht,<br />
aber dennoch scheint das<br />
Android-Feature »ashmem«<br />
ein aussichtsreicher Kandidat<br />
für den Mainline-Kernel von<br />
<strong>Linux</strong> zu sein. <br />
n<br />
32-Bit-Kernel auf 64-Bit-Hardware<br />
Der Software-Entwickler Pierre-Loup<br />
A. Griffais klagte,<br />
das Kopieren von Dateien laufe<br />
in letzter Zeit immer langsamer,<br />
wenn man einen 32-Bit-<br />
Kernel und mehr als 16 GByte<br />
Arbeitsspeicher verwendet.<br />
Darauf erwiderte Rik van Riel:<br />
„Wenn du so viel Speicher in<br />
deinem System hast, solltest<br />
du einen 64-Bit-Kernel verwenden,<br />
ansonsten treten im<br />
Memory Management viele<br />
Grenzsituationen auf.“ Johannes<br />
Weiner fügte an: „Dabei<br />
kannst du das 32-Bit-Userland<br />
behalten, tausche einfach den<br />
Kernel aus.“<br />
Pierre-Loup antwortete: „Viele<br />
Distributionen liefern einen<br />
32-Bit-Kernel als Standard für<br />
Anwender, die unsicher sind.<br />
Dabei ist PAE aktiviert, um die<br />
Mengen an Arbeitsspeicher in<br />
modernen Rechnern zu unterstützen.“<br />
Da konnte Linus Torvalds nicht<br />
mehr an sich halten: „PAE ist<br />
eine Notlösung. Das ganze<br />
Konzept taugt nichts, und<br />
alle, die einen 32-Bit-Kernel<br />
mit 16 GByte RAM betreiben,<br />
haben nicht die geringste Ahnung.<br />
So etwas tut man nicht.<br />
Sie sollen auf 64 Bit upgraden<br />
oder sich mit der miesen I/O-<br />
Leistung abfinden.“ Er fügte<br />
hinzu: „Beschwer dich bei<br />
deiner Distribution, wenn sie<br />
keinen 64-Bit-Kernel liefert.<br />
Aber wir Kernelentwickler<br />
werden uns nicht damit abmühen,<br />
PAE zu optimieren. Es<br />
lohnt sich einfach nicht.“<br />
Er habe für sich persönlich<br />
zwar einen 64-Bit-Kernel<br />
kompiliert, räumte Pierre-<br />
Loup ein, für viele seiner<br />
Endanwender sei das aber<br />
keine Option. „Ich werde die<br />
Distributionen darauf hinweisen,<br />
dass PAE-Kernel angesichts<br />
der auftretenden Probleme<br />
und der Einstellung der<br />
Kernelentwickler keine gute<br />
Standardlösung sind.“<br />
Rik van Riel schlug schließlich<br />
einen gangbaren Mittelweg<br />
vor: „Man könnte den<br />
Speicher, den ein PAE-Kernel<br />
nutzt, auf eine bestimmte<br />
Menge beschränken, bei der<br />
es noch nicht zu Problemen<br />
kommt, etwa 8 oder 12 GByte.<br />
Daneben könnte der Kernel<br />
eine Warnung ausgeben, die<br />
dem Anwender mitteilt, er<br />
solle auf einen 64-Bit-Kernel<br />
upgraden, um seinen gesamten<br />
Arbeitsspeicher zu nutzen.“<br />
Das gefiel Pierre-Loup.<br />
(Zack Brown/mhu) n