SlideShare uma empresa Scribd logo
1 de 71
Baixar para ler offline
F -X C h a n ge                                                                                           F -X C h a n ge
    PD                                                                                                         PD




                          !




                                                                                                                                    !
                        W




                                                                                                                                  W
                      O




                                                                                                                                O
                     N




                                                                                                                               N
                   y




                                                                                                                             y
                bu




                                                                                                                          bu
              to




                                                                                                                        to
          k




                                                                                                                    k
        lic




                                                                                                                  lic
    C




                                                                                                               C
w




                                                                                                          w
                                m




                                                                                                                                          m
    w                                                                                                         w
w




                                                                                                           w
                               o




                                                                                                                                         o
        .d o                   .c                                                                                 .d o                   .c
               c u -tr a c k                                                                                             c u -tr a c k




                               3
                               SAP Memory Management f¨r Linux
                                                      u




                               Aus der Sicht des Betriebssystems besteht das SAP-System aus einer Menge
                               von Prozessen wie jede andere Anwendung auch. Ein SAP-Workprozess un-
                               terliegt der gleichen Behandlung hinsichtlich der Zuteilung von Betriebssys-

                                                                x
                               tem-Ressourcen, wie CPU oder Hauptspeicher, wie eine Shell, ein Bildverar-
                               beitungsprogramm oder eine Datenbank. In diesem Kapitel betrachten wir
                               deshalb zun¨chst die allgemeinen, f¨r alle Prozesse g¨ltigen Konzepte der
                                             a                       u                 u
                                                             Le
                               Speicherverwaltung von Linux. Anschließend beschreiben wir in einem zwei-
                               ten Teil die Struktur der Speicherverwaltung des SAP-Systems. Hier konzen-
                               trieren wir uns zun¨chst auf den ABAP-Applikationsserver, der durch große
                                                   a
                                                 pp

                               Speicheranforderungen gekennzeichnet ist. Um die Hintergr¨nde dieser An-
                                                                                            u
                               forderungen zu beleuchten, skizzieren wir in einem ersten Schritt die logische
                               Sicht auf die Speicherverwaltung. Auf der Linux-Plattform finden sich dann
                               zwei Ans¨tze f¨r die konkrete Implementierung der logischen Anforderun-
                                         a      u
                               gen: Das Standard-Verfahren, das bei allen Unix-Systemen eingesetzt werden
                                       sU


                               kann, und ein Linux-spezifisches neues Memory Management. Beide werden
                               im Detail beschrieben. Den Abschluss des zweiten Teils bildet ein Exkurs auf
                               die Speicherverwaltung im Java-Applikationsserver. Der dritte Teil behandelt
                               dann Werkzeuge zur Diagnose und Beobachtung der Speicherverwaltung und
                               h¨ufig gestellte Fragen zu diesem Themenkomplex.
                                 a
                                   Ein Wort zur Terminologie: Wenn wir im Folgenden vom Hauptspeicher
                               reden, ist der physisch in der Maschine vorhandene Speicher gemeint. Wir
                               unterscheiden in der folgenden Diskussion nicht zwischen dem physischen
                               Hauptspeicher (den SIMMs, DIMMs, etc.), dem Auslagerungs- oder Swap-
                               bereich und gegebenenfalls vorhandenen Caches (L1, L2, L3). Die Unterschei-
                               dung zwischen diesem physisch vorhandenen Speicher und den Adressen, die
                               der Prozess sieht, ist aber zentral und muss stringent durchgehalten werden,
                               um die Abl¨ufe auf einem Linux-System zu verstehen. Der Speicher, den eine
                                            a
                                                           ¨
                               Anwendung sieht, wird in Ubereinstimmung mit der g¨ngigen Literatur [22]
                                                                                      a
                               durchg¨ngig als virtueller Speicher bezeichnet. Die Konzepte, die sich hin-
                                       a
                               ter dieser letzten Bezeichnung verbergen, werden im n¨chsten Abschnitt kurz
                                                                                     a
                               vorgestellt.
F -X C h a n ge                                                                                               F -X C h a n ge
    PD                                                                                                             PD




                          !




                                                                                                                                        !
                        W




                                                                                                                                      W
                      O




                                                                                                                                    O
                     N




                                                                                                                                   N
                   y




                                                                                                                                 y
                bu




                                                                                                                              bu
                               114        3 SAP Memory Management f¨r Linux
                                                                   u
              to




                                                                                                                            to
          k




                                                                                                                        k
        lic




                                                                                                                      lic
    C




                                                                                                                   C
w




                                                                                                              w
                                m




                                                                                                                                              m
    w                                                                                                             w
w




                                                                                                               w
                               o




                                                                                                                                             o
        .d o                   .c                                                                                     .d o                   .c
               c u -tr a c k                                                                                                 c u -tr a c k
                               3.1 Speicherverwaltung unter Linux

                               Moderne Betriebssysteme m¨ ssen die Speicheranforderungen ihrer Anwen-
                                                            u
                               dungen auf flexible und effiziente Art erf¨llen. Dabei k¨nnen die Anforde-
                                                                         u              o
                               rungen der Anwendungen h¨chst unterschiedlich sein: Einige ben¨tigen kaum
                                                          o                                    o
                               Speicher, w¨hrend andere, wie z.B. SAP, zum Teil erhebliche Mengen an Daten
                                          a
                               im Speicher halten wollen. Die Zuteilung des Speichers durch das Betriebs-
                               system wird zudem durch weitere Aspekte erschwert:
                                    1. Das Anforderungsmuster einer Anwendung kann sich im Laufe ihrer
                                       Lebensdauer gravierend andern. W¨hrend der Startphase einer neuen
                                                                  ¨          a
                                       Anwendung wird der ausf¨hrende Prozess ublicherweise viel Speicher an-
                                                                  u                ¨
                                       fordern. Ein CPU-intensiver Prozess, wie z.B. Seti@Home, wird dann aller-
                                       dings kaum noch zus¨tzlichen Speicher ben¨tigen. Ein Bildverarbeitungs-
                                                             a                     o
                                       programm, das auf User-Anfrage ein neues Bild in den Speicher l¨dt, wird
                                                                                                        a
                                       demgegen¨ber auch zur Laufzeit noch weiteren Speicher ben¨tigen.
                                                 u                                                   o
                                    2. Es ist m¨glich, dass die Summe der Anforderungen der zu einem gegebenen
                                               o
                                       Zeitpunkt laufenden Anwendungen die Menge des physikalisch vorhande-
                                                             ¨
                                                                    x
                                       nen Hauptspeichers ubertreffen.
                                    3. Selbst einzelne Prozesse fordern mitunter mehr Speicher an, als an Haupt-
                                                                 Le
                                       speicher in der Maschine vorhanden ist.
                                    4. Ein wichtiger Aspekt f¨r die Stabilit¨t des gesamten Systems ist, dass die
                                                               u             a
                                       Prozesse nicht oder nur kontrolliert auf Speicherbereiche anderer Prozesse
                                       oder gar des Betriebssystems zugreifen k¨nnen.
                                                                                 o
                                                     pp

                               3.1.1 Der virtuelle Adressraum

                               All diese Probleme werden in heutigen Betriebssystemen wie Linux oder Win-
                                           sU


                               dows durch die Einf¨hrung des Konzeptes des virtuellen Speichers oder
                                                     u
                               virtuellen (logischen) Adressraums aufgegriffen. Dieser virtuelle Adres-
                               sraum abstrahiert von der physikalischen Speicherausstattung der Maschine.
                               Jeder Prozess auf einem solchen Betriebssystem erh¨lt beim Start einen ei-
                                                                                      a
                               genen logischen Adressraum, der unabh¨ngig von den strukturell identischen
                                                                        a
                               Adressr¨umen anderer Prozesse und von der Ausstattung der Maschine mit
                                       a
                               physikalischen Hauptspeicher ist. Alle Adressen, die von Compilern oder an-
                               deren Werkzeugen wie Linkern erzeugt werden, sind als Angaben von Orten
                               in diesem virtuellen Adressraum zu verstehen. Diese virtuellen Adressen sind
                               die einzigen, die einem Prozess bekannt und zug¨nglich sind. Das Betriebs-
                                                                                   a
                               system, das die Illusion des virtuellen Adressraums aufbaut, ist dann auch
                               daf¨r zust¨ndig, dass Zugriffe auf Stellen im virtuellen Adressraum auf die
                                  u       a
                               zugeh¨rigen Stellen im physikalischen Speicher umgesetzt werden.
                                     o
                                   In Abb. 3.1 ist die grunds¨tzliche Gestalt eines typischen virtuellen Adres-
                                                             a
                               sraums unter Linux zu sehen. Als Vorlage dient dazu die 32-Bit Intel-Plattform
                               unter einem Linux 2.4 System. Die Details der Abbildung werden im folgenden
                               Abschnitt erkl¨rt.
                                              a
F -X C h a n ge                                                                                         F -X C h a n ge
    PD                                                                                                       PD




                          !




                                                                                                                                  !
                        W




                                                                                                                                W
                      O




                                                                                                                              O
                     N




                                                                                                                             N
                   y




                                                                                                                           y
                bu




                                                                                                                        bu
                                                                  3.1 Speicherverwaltung unter Linux   115
              to




                                                                                                                      to
          k




                                                                                                                  k
        lic




                                                                                                                lic
    C




                                                                                                             C
w




                                                                                                        w
                                m




                                                                                                                                        m
    w                                                                                                       w
w




                                                                                                         w
                               o




                                                                                                                                       o
        .d o                   .c                                                                               .d o                   .c
               c u -tr a c k                                                                                           c u -tr a c k




                                                                x
                                               Abb. 3.1. Virtueller Adressraum unter Linux
                                                             Le
                               Das Layout des virtuellen Adressraums

                               Wir untersuchen, schon mit Blick auf die unten anstehende Diskussion der
                               SAP-Speicherverwaltung, einige Aspekte der Gestalt des virtuellen Adres-
                                                 pp

                               sraums genauer. Wir beginnen mit einigen allgemeinen Aussagen, betrachten
                               dann typische Probleme des vorgestellten Layouts und zeigen schließlich kurz
                               auf, welche Entwicklungen im Linux 2.6 Kernel stattgefunden haben.
                                       sU


                               Allgemeine Aspekte

                               Den virtuellen Adressraum aus Abb. 3.1 zeichnen zun¨chst einige allgemeine
                                                                                  a
                               Aspekte aus:
                               • Die Adressen innerhalb des Adressraums steigen linear an. Linux verwen-
                                 det also keine Segmentierung des Adressraums, s. [23].
                               • Die maximale Gr¨ße des virtuellen Adressraums ist durch den Aufbau
                                                   o
                                 der CPU begrenzt. Bei einer 32-Bit-Plattform stehen nur 32 Bit f¨r die
                                                                                                    u
                                 Adressierung zur Verf¨gung. Der virtuelle Adressraum kann damit maxi-
                                                        u
                                 mal 232 Byte (4 GB) groß werden. Auf einer 64-Bit-Plattform wird diese
                                 Grenze auf 264 Byte (16 ExaByte) erweitert. Der verf¨gbare Adressraum
                                                                                       u
                                 eines Prozesses steigt damit signifikant an.
                               • Um den virtuellen Adressraum einfach verwalten zu k¨nnen, wird er in
                                                                                         o
                                 voneinander unabh¨ngige Bl¨cke fester Gr¨ße (Pages) aufgeteilt. Die
                                                     a         o             o
                                 Gr¨ße dieser Pages ist dabei ebenfalls von der unterliegenden Hardware
                                    o
                                 abh¨ngig. Auf der 32-Bit-Intel-Plattform ist sie 4 KiloByte, auf dem Ita-
                                     a
                                 nium liegt sie typischerweise bei 16 KByte und auf AMD64 bei 4 bis
F -X C h a n ge                                                                                            F -X C h a n ge
    PD                                                                                                          PD




                          !




                                                                                                                                     !
                        W




                                                                                                                                   W
                      O




                                                                                                                                 O
                     N




                                                                                                                                N
                   y




                                                                                                                              y
                bu




                                                                                                                           bu
                               116    3 SAP Memory Management f¨r Linux
                                                               u
              to




                                                                                                                         to
          k




                                                                                                                     k
        lic




                                                                                                                   lic
    C




                                                                                                                C
w




                                                                                                           w
                                m




                                                                                                                                           m
    w                                                                                                          w
w




                                                                                                            w
                               o




                                                                                                                                          o
        .d o                   .c                                                                                  .d o                   .c
               c u -tr a c k                                                                                              c u -tr a c k
                                 8 KByte. Auf diesen Aspekt kommen wir bei der Diskussion des eigentli-
                                 chen Nutzens des virtuellen Adressraums erneut zur¨ck, s. Abschnitt 3.1.2.
                                                                                     u
                                 Die Einteilung in Pages ist ein wesentlicher Teil der Speicherverwaltung
                                 heutiger Betriebssyteme.
                               • Linux unterteilt den Adressraum in einen Bereich, der dem Prozess selbst
                                 zug¨nglich ist, und einen, der nur dem Betriebssystem vorbehalten ist. In
                                     a
                                 der ublichen Terminologie wird der erste als User Space und der zweite als
                                     ¨
                                 Kernel Space bezeichnet. Die Lage dieser Grenze bestimmt die maximale
                                 Gr¨ße des Adressraums, der einem Prozess zug¨nglich ist. Sie wird deshalb
                                    o                                           a
                                 als TASK-SIZE bezeichnet [29]. Bei einem 32-Bit-Intel-System liegt diese
                                 Grenze bei 3 GB, bei einem Intel Itanium-System bei 5 ∗ 261 Byte [30] und
                                 bei einem AMD64-System derzeit bei 512 GB.
                               • Innerhalb des User-Spaces existieren Bereiche, die mit jeweils einer eigenen
                                 Semantik ausgestattet sind. In der Linux-Nomenklatur werden diese Berei-
                                 che als virtual memory areas (VMA) bezeichnet. Zu diesen Bereichen
                                 geh¨ren der Programm-Code des Prozesses (auch Text-Region genannt),
                                     o
                                 die Daten des Programms (sowohl initialisierte als auch nicht-initialisierte,
                                 Data-Region), der Stack des Programms (Stack-Region) und der Be-
                                                                 x
                                 reich, aus dem die dynamischen Speicheranforderungen, wie malloc(),
                                 befriedigt werden. Dieser letzte Bereich wird als Heap bezeichnet.
                                                              Le
                               M¨gliche Problemfelder
                                o
                               Die Erfahrung lehrt, dass im vorgestellten Layout gerade f¨r speicherintensive
                                                                                          u
                                                 pp

                               Anwendungen wie SAP auf 32-Bit Plattformen einige Probleme schlummern.
                                                                  ¨
                               Sie lassen sich alle unter dem Uberbegriff der Verknappung des virtuellen
                               Adressraums zusammenfassen.
                                   Zun¨chst werden unter Linux 2.4 die vom Prozess verwendeten Bibliothe-
                                       a
                               ken (hier die sogenannten Shared Libraries) ab einer vordefinierten Stelle
                                       sU


                               in den Adressraum geladen. Auf der 32 Bit-Intel-Plattform ist dieser Beginn
                               der Einlagerung durch die Systemsoftware auf 1 GB (hexadezimale Adresse
                               0x40000000) definiert. Erst nach diesen Bibliotheken werden normalerweise
                               die Bereiche allokiert, in denen das SAP-System seine gemeinsamen Speicher-
                               bereiche, wie Buffer, User Memory, etc., ablegt. Diese Bereiche (in Abb. 3.1
                               als MMAP/Shared Memory bezeichnet) k¨nnen sich also von etwas mehr
                                                                              o
                               als 1 GB bis zum Stack-Bereich erstrecken. Der Stack-Bereich besitzt eine va-
                               riable Gr¨ße und w¨chst in Richtung kleinerer Adressen, d.h. nach unten.
                                         o          a
                               Auf dem Stack werden beispielsweise lokale Variablen eines C-Programms,
                               oder beim Absteigen in Unterprogramme die Funktionsargumente sowie die
                               R¨cksprungadresse abgelegt. Da die Gr¨ße des Stack-Bereiches normaler-
                                 u                                         o
                               weise vergleichsweise klein ist, liegt die maximale Gr¨ße der Shared Memory-
                                                                                     o
                               Bereiche also bei knapp unter 2 GB.
                                   Der in Abb. 3.1 ebenfalls eingezeichnete Heap-Bereich kann große Teile
                               des restlichen zur Verf¨gung stehenden Platzes einnehmen. Er ist dabei nicht
                                                       u
                               auf den Bereich oberhalb der Shared Libraries beschr¨nkt. Damit steht f¨r
                                                                                        a                  u
                               die Allokierung von Speicher im Heap noch weiterer Platz zur Verf¨gung;u
F -X C h a n ge                                                                                              F -X C h a n ge
    PD                                                                                                            PD




                          !




                                                                                                                                       !
                        W




                                                                                                                                     W
                      O




                                                                                                                                   O
                     N




                                                                                                                                  N
                   y




                                                                                                                                y
                bu




                                                                                                                             bu
                                                                     3.1 Speicherverwaltung unter Linux     117
              to




                                                                                                                           to
          k




                                                                                                                       k
        lic




                                                                                                                     lic
    C




                                                                                                                  C
w




                                                                                                             w
                                m




                                                                                                                                             m
    w                                                                                                            w
w




                                                                                                              w
                               o




                                                                                                                                            o
        .d o                   .c                                                                                    .d o                   .c
               c u -tr a c k                                                                                                c u -tr a c k
                               es kann hier zus¨tzlich von mehreren hundert MB ausgegangen werden. In
                                                a
                               Summe stehen damit einem Prozess auf einer 32-Bit-Intel-Plattform, je nach
                               Konfiguration, ca. 2,8 GB an virtuellem Adressraum zur Verf¨gung.
                                                                                              u
                                   Ein letztes Problem erw¨chst aus der unterschiedlichen Wachstumsrich-
                                                            a
                               tung von MMAP bzw. Heap auf der einen und dem Stack auf der anderen
                               Seite. Sowohl der MMAP/Shared Memory-Bereich als auch der Heap wachsen
                               in Richtung gr¨ßere virtueller Adressen. Der Stack kommt diesen beiden Berei-
                                              o
                               chen von oben entgegen. Es ist damit grunds¨tzlich klar, dass es zu Kollisionen
                                                                            a
                               zwischen Stack und MMAP bzw. Heap kommen kann. Auf 32-Bit-Maschinen
                               tritt dieses Problem in der Tat auf und f¨hrt zum Abbruch des betroffenen
                                                                         u
                               Prozesses. Sowohl die Anwendungen als auch das Betriebssystem verwenden
                               deshalb mitunter Guard Pages, die die Grenze zwischen Stack und Heap
                               sch¨tzen.
                                   u

                               ¨
                               Anderungen im Linux Kernel 2.6

                               Im 2.6er Linux-Kernel wird ein Teil dieser Probleme angegangen, s. [33].
                               In Abb. 3.2 ist die neue Gestalt des virtuellen Adressraums skizziert. Der
                                   a
                                                                 x
                               auff¨lligste Unterschied ist sicher der Wegfall des festen Bereiches f¨ r die Sha-
                                                                                                    u
                               red Libraries. Diese werden stattdessen direkt unterhalb des Stack-Segments
                                                              Le
                               eingeblendet und wachsen nach unten. Der Stack wird in diesem Szenario auf
                               eine maximale Gr¨ße bei Prozess-Start festgesetzt. Der Heap-Bereich auf der
                                                 o
                               anderen Seite w¨chst in den gleichen freien Raum in der Mitte des virtuellen
                                               a
                               Adressraums hinein. Der vorhandene Adressraum ist damit nicht mehr durch
                                                  pp

                               den Shared-Library-Bereich fragmentiert und kann besser ausgenutzt werden.
                                       sU




                                               Abb. 3.2. Virtueller Adressraum unter Linux 2.6
F -X C h a n ge                                                                                           F -X C h a n ge
    PD                                                                                                         PD




                          !




                                                                                                                                    !
                        W




                                                                                                                                  W
                      O




                                                                                                                                O
                     N




                                                                                                                               N
                   y




                                                                                                                             y
                bu




                                                                                                                          bu
                               118    3 SAP Memory Management f¨r Linux
                                                               u
              to




                                                                                                                        to
          k




                                                                                                                    k
        lic




                                                                                                                  lic
    C




                                                                                                               C
w




                                                                                                          w
                                m




                                                                                                                                          m
    w                                                                                                         w
w




                                                                                                           w
                               o




                                                                                                                                         o
        .d o                   .c                                                                                 .d o                   .c
               c u -tr a c k                                 ¨
                                   Eine weitere, eher kleine Anderung betrifft die oberste Page des Kernel-               c u -tr a c k

                                                                                                       ¨
                               Bereichs. Hier liegt nun eine Page, die f¨r den Prozess zugreifbar ist. Uber
                                                                        u
                               diese Page k¨nnen User-Space-Prozesse einen schnelleren Zugriff auf Kernel-
                                            o
                               Daten erhalten. Diese Page, die sogenannte vsyscall page [35], wird z.Zt. ge-
                               nutzt, um einige System-Aufrufe zu beschleunigen. Zu diesen Systemaufrufen
                               z¨hlt vor allem gettimeofday(), mit dem Anwendungen eine Zeitmessung
                                a
                               realisieren. Dieser Aufruf wird im SAP-System h¨ufig verwendet, u.a. zur
                                                                                 a
                               Performance-Messung.


                               3.1.2 Einsatz des virtuellen Adressraums

                               Wir kommen wieder zur¨ck zum Nutzen und zur Verwendung des Konzep-
                                                        u
                               tes eines virtuellen Adressraums. Dazu schauen wir uns die Funktionsweise
                               eines Systems mit virtuellem Speicher zun¨chst genauer an. Bei der Erzeu-
                                                                           a
                               gung eines ausf¨hrbaren Programms werden alle Verweise auf Adressen, z.B.
                                               u
                               Zugriffe auf Variablen, als virtuelle Adressen kodiert. Die CPU sieht bei der
                                    u
                                                                x
                               Ausf¨hrung eines Prozesses nur diese Adressen. F¨ r den faktischen Zugriff
                                                                                    u
                               auf den physischen Speicher m¨ ssen diese virtuellen Adressen noch auf die
                                                               u
                               physischen Adressen abgebildet werden. Diese Aufgabe ubernimmt in vielen
                                                                                         ¨
                                                             Le
                               Hardware-Architekturen eine spezielle Komponente, die Memory Manage-
                               ment Unit (MMU). Die MMU erh¨lt als Eingabe eine virtuelle Adresse und
                                                                     a
                               erzeugt daraus die Adresse, an der das gew¨ nschte Datum faktisch liegt. F¨r
                                                                           u                                u
                                                 pp

                               diese Aufgabe ben¨tigt die MMU typischerweise einige Datenstrukturen, die
                                                   o
                               von der Hardware bereitgestellt und vom Betriebssystem verwaltet werden.
                               Zu diesen Datenstrukturen z¨hlen die sogenannten Pagetabellen und deren
                                                             a
                               Cache, der Translation Lookaside Buffer (TLB).
                                   Wichtig bei diesem Ablauf ist nun zum einen, dass die Pagetabellen
                                       sU


                               prozess-spezifisch sind, und zum anderen, dass die Umrechnung f¨r jedenu
                               Zugriff auf eine virtuelle Adresse neu geschehen muss. W¨hrend dies sicher
                                                                                           a
                               ein Performance-Problem darstellen kann, bietet es auf der anderen Seite die
                               Chance, f¨r jede Page einen eigenen physischen Ort zu erlauben. Dabei muss
                                         u
                               dieser Ort nicht unbedingt im physischen Speicher liegen. Es ist z.B. denkbar,
                               dass bei der Ausf¨hrung eines Programms eine Page, die den Code enth¨lt,
                                                  u                                                       a
                               schon im physischen Speicher liegt, w¨hrend eine Page mit Programm-Daten
                                                                       a
                               noch nicht gelesen wurde und sich noch auf der Platte befindet. Analog k¨nnen
                                                                                                       o
                               gerade nicht ben¨tigte Pages in einen Paging-Bereich auf der Platte ausgela-
                                                 o
                               gert werden. Bei Linux wird dieser Paging-Bereich aus historischen Gr¨nden
                                                                                                       u
                               normalerweise Swap-Space genannt. Ganz korrekt ist diese Terminologie al-
                               lerdings nicht, da Swapping urspr¨nglich das Auslagern ganzer Prozesse be-
                                                                    u
                               schrieb. Linux dagegen ist ein Paging-System, da es Pages zwischen dem
                               Hauptspeicher und dem Auslagerungsbereich verschiebt.
                                   Die Verwendung des in Pages unterteilten virtuellen Adressraum erlaubt
                               eine recht einfache L¨sung f¨r die oben beschriebenen Grundprobleme einer
                                                     o      u
                               Speicherverwaltung (s. S. 114).
F -X C h a n ge                                                                                                F -X C h a n ge
    PD                                                                                                              PD




                          !




                                                                                                                                         !
                        W




                                                                                                                                       W
                      O




                                                                                                                                     O
                     N




                                                                                                                                    N
                   y




                                                                                                                                  y
                bu




                                                                                                                               bu
                                                                        3.1 Speicherverwaltung unter Linux    119
              to




                                                                                                                             to
          k




                                                                                                                         k
        lic




                                                                                                                       lic
    C




                                                                                                                    C
w




                                                                                                               w
                                m




                                                                                                                                               m
    w                                                                                                              w
w




                                                                                                                w
                               o




                                                                                                                                              o
        .d o                   .c                                                                                      .d o                   .c
               c u -tr a c k                                                                                                  c u -tr a c k
                                    1. Anforderungen nach weiterem Speicher zur Laufzeit werden im beschrie-
                                       benen Szenario einfach realisiert. Neue Pages werden dem virtuellen
                                       Adressraum hinzugef¨gt und die zugeh¨rigen Daten gegebenenfalls aus
                                                             u                   o
                                       einer Datei o.¨. geladen. Dabei werden Zugriffe auf noch nicht im phy-
                                                      a
                                       sikalischen Speicher befindliche Bereiche der Datei zu sogenannten Page
                                       Faults f¨hren, welche das Betriebssystem veranlassen, die gew¨ nschten
                                                u                                                       u
                                       Daten in den physikalischen Speicher einzulagern. Weitere Zugriffe auf
                                       diesen Bereich werden dann uber die MMU direkt abgebildet.
                                                                     ¨
                                    2. Da Pages sich nicht permanent im physikalischen Speicher befinden m¨s-   u
                                       sen, k¨nnen ganze Prozesse oder auch nur Teile von ihnen in Paging-
                                              o
                                       Bereiche ausgelagert werden. Die Summe der Speicheranforderungen meh-
                                       rerer Prozesse kann damit gr¨ßer sein als der physikalisch vorhandene
                                                                       o
                                       Hauptspeicher.
                                    3. Die analoge Aussage gilt aus dem gleichen Grund auch f¨r die Behand-
                                                                                                 u
                                       lung von Prozessen, deren belegter virtueller Adressraum gr¨ßer ist als der
                                                                                                  o
                                       physikalisch vorhandene Hauptspeicher.
                                    4. Da die virtuellen Adressr¨ume unterschiedlicher Prozesse per se eigen-
                                                                  a
                                       st¨ndige Einheiten sind, kann bei korrekter Funktionsweise der Abbildung
                                         a
                                                                     x
                                       von virtuellen zu physikalischen Adressen kein Prozess ohne weiteren Auf-
                                       wand auf die Daten eines anderen Prozesses zugreifen. Auch ist der Zu-
                                                                  Le
                                       griff auf Betriebssystem-Strukturen durch die Zweiteilung des virtuellen
                                       Adressraums in Kernel- und Userspace verwehrt.
                               So elegant dieses Vorgehen auch ist, bringt es doch neue Probleme mit sich.
                                                     pp

                               F¨r das SAP-System mit seinen hohen Speicheranforderungen und den damit
                                 u
                               einhergehenden h¨ufigen Adressumsetzungen ist zun¨chst die hohe Last auf
                                                 a                                   a
                               den Pagetabellen relevant. Daneben findet sich im SAP-System noch eine sehr
                               geringe Sequentialit¨t der Speicherzugriffe. Die Anfragen der SAP-Anwender
                                                   a
                               folgen keinem vorhersehbaren Muster. Damit geraten die Caches der Page-
                                           sU


                               tabellen, die TLBs, ebenfalls unter hohe Last. Die Trefferrate der TLBs ist
                               bei SAP-Systemen h¨ufig geringer als bei anderen Anwendungen. Schließlich
                                                    a
                               k¨nnen die hohen Speicheranforderungen des SAP-Systems auch dazu f¨hren,
                                o                                                                       u
                               dass aktuell nicht ben¨tigte Pages aus dem physikalischen Speicher ausgela-
                                                      o
                               gert werden und durch andere Pages ersetzt werden m¨ ssen. Die Qualit¨t der
                                                                                       u                a
                               hier verwendeten Ersetzungsalgorithmen kann immense Auswirkungen auf die
                               gesamte Performance des Systems haben. Nicht geeignete Algorithmen k¨nneno
                               im SAP-Umfeld zu Performance-Verlusten bis zum Faktor 10 f¨hren. Die neue-
                                                                                              u
                               ren Linux-Kernel sind in dieser Beziehung aber mittlerweile von durchgehend
                               guter Qualit¨t. Dies ist einer der wichtigsten Aspekte, die durch die Tests von
                                            a
                               Linux-Kerneln im SAP LinuxLab sichergestellt werden.

                               3.1.3 Shared Memory
                               Die Separation von unterschiedlichen Prozessen und ihren Adressr¨umen, die
                                                                                                a
                               der obige Ansatz des virtuellen Adressraums automatisch liefert, sind einer-
                               seits f¨r die Stabilit¨t eines Systems wie SAP mit vielen zusammenwirken-
                                      u              a
F -X C h a n ge                                                                                               F -X C h a n ge
    PD                                                                                                             PD




                          !




                                                                                                                                        !
                        W




                                                                                                                                      W
                      O




                                                                                                                                    O
                     N




                                                                                                                                   N
                   y




                                                                                                                                 y
                bu




                                                                                                                              bu
                               120        3 SAP Memory Management f¨r Linux
                                                                   u
              to




                                                                                                                            to
          k




                                                                                                                        k
        lic




                                                                                                                      lic
    C




                                                                                                                   C
w




                                                                                                              w
                                m




                                                                                                                                              m
    w                                                                                                             w
w




                                                                                                               w
                               o




                                                                                                                                             o
        .d o                   .c                                                                                     .d o                   .c
               c u -tr a c k                                                                                                 c u -tr a c k
                               den Prozessen und Threads sehr wichtig. Auf der anderen Seite ist die Kom-
                               munikation zwischen verschiedenen Prozessen in einem SAP-System ebenso
                               zentral. Die Separation der Adressr¨ume bietet grunds¨tzlich zun¨chst keine
                                                                  a                   a         a
                               M¨glichkeit, auf die Variablen anderer Prozesse zuzugreifen.
                                 o
                                   Um nun eine effektive Inter-Prozess-Kommunikation zu realisieren, m¨ssen
                                                                                                     u
                               spezielle Maßnahmen bei der Implementierung der Anwendung ergriffen wer-
                               den. Zwei Verfahren sind in diesem Zusammenhang h¨ufig zu finden:
                                                                                    a
                               • Die Verwendung von Threads basiert auf der Tatsache, dass die Threads
                                 eines Prozesses, im Gegensatz zu den Prozessen selbst, den selben virtuel-
                                 len Adressraum verwenden. Damit ist eine außerst einfache und schnelle
                                                                            ¨
                                 Kommunikation zwischen verschiedenen Threads m¨glich. Durch die Auf-
                                                                                    o
                                 gabe der Separation verliert eine Multi-Threaded-Anwendung jedoch viel
                                 der oben besprochenen Stabilit¨t (s. Kap. 2.1.3). Im SAP-Umfeld wurde
                                                                 a
                                 deshalb f¨r den eigentlichen SAP Application Server eine prozessbasierte
                                          u
                                 Architektur verwendet.
                               • Bei der Verwendung von Prozessen muss daher eine M¨glichkeit gefunden
                                                                                       o
                                 werden, Daten uber den eigenen Adressraum hinaus auch anderen Pro-
                                                 ¨
                                            a
                                                                    x
                                 zessen zug¨nglich zu machen. Dieser gemeinsam nutzbare Speicher wird
                                 allgemein als Shared Memory bezeichnet.
                                                                 Le
                                  In Unix-basierten Systemen gibt es traditionell drei Verfahren, um solches
                               Shared Memory bereitzustellen, s. [20]:
                                    1. Anwendungen des Memory Mappings (MMAP). Unter Memory Map-
                                                     pp

                                       ping wird das Einblenden von Teilen von Dateien des Dateisystems
                                       in den virtuellen Adressraum eines Prozesses verstanden. Die Zugriffe
                                       auf die Daten der Datei m¨ssen dann nicht mehr uber die normalen
                                                                    u                        ¨
                                       read()- oder write()-Aufrufe geschehen, sondern k¨nnen analog zu nor-
                                                                                           o
                                       malen Variablen-Zugriffen ablaufen. Dieses Verfahren stellt eine viel ge-
                                           sU


                                       nutzte Methode im Bereich der Betriebssystem-nahen Programmierung
                                       dar. Auch im SAP-Umfeld w¨re es ein naheliegender Ansatz zur Reali-
                                                                     a
                                       sierung von gemeinsam genutztem Speicher der Workprozesse gewesen.
                                       Leider fehlte bis zum Linux-Kernel 2.4 die Unterst¨tzung der besonderen
                                                                                         u
                                       und im SAP-Umfeld notwendigen Spezialform des Anonymous Shared
                                       Maps. Ohne diese Form war die Performance f¨r SAP-Bed¨rfnisse un-
                                                                                       u            u
                                       gen¨gend.
                                           u
                                    2. Das SysV Shared Memory. Es geht von der speziellen Struktur eines
                                       sogenannten SHM-Segments aus. Diese SHM-Segmente m¨ssen einmal
                                                                                                  u
                                       angelegt und dann in die virtuellen Adressr¨ume der Prozesse explizit ein-
                                                                                  a
                                       geblendet werden. Die SHM-Segmente sind allerdings nur als Ganzes zu
                                       bearbeiten; es ist zum Beispiel nicht m¨glich, nur einen Teil eines Seg-
                                                                               o
                                       ments ein- oder auszublenden. Zudem ist die maximale Anzahl solcher
                                       Segmente durch den Parameter SHMMNI des Betriebssystems begrenzt. Die
                                       existierenden SHM-Segmente k¨nnen durch das Werkzeug ipcs angezeigt
                                                                       o
                                       werden. Das SAP-System verwendet das SysV Shared Memory, um seine
                                       Puffer, wie die Nametab, die Tabellenpuffer und den PXA-Puffer, zu im-
F -X C h a n ge                                                                                              F -X C h a n ge
    PD                                                                                                            PD




                          !




                                                                                                                                       !
                        W




                                                                                                                                     W
                      O




                                                                                                                                   O
                     N




                                                                                                                                  N
                   y




                                                                                                                                y
                bu




                                                                                                                             bu
                                                       3.2 SAP-Speicherverwaltung f¨ r die Linux Plattform
                                                                                   u                         121
              to




                                                                                                                           to
          k




                                                                                                                       k
        lic




                                                                                                                     lic
    C




                                                                                                                  C
w




                                                                                                             w
                                m




                                                                                                                                             m
    w                                                                                                            w
w




                                                                                                              w
                               o




                                                                                                                                            o
        .d o                   .c                                                                                    .d o                   .c
               c u -tr a c k                                                                                                c u -tr a c k
                                       plementieren. Bei den Unixversionen und in der alteren Implementierung
                                                                                       ¨
                                       der Speicherverwaltung von SAP auf Linux wird es standardm¨ßig auch
                                                                                                     a
                                       f¨r das User-Memory verwendet.
                                        u
                                    3. Das POSIX Shared Memory. Es steht auf der Linux-Plattform erst
                                       mit Kernel 2.4 zur Verf¨gung und wurde von Hans-Christoph Roh-
                                                                  u
                                       land entwickelt. Das POSIX-SHM stellt gemeinsame Speicherbereiche zur
                                       Verf¨gung, die analog zu normalen Dateien in den Adressraum einge-
                                             u
                                       blendet werden k¨nnen. Diese Speicherbereiche werden unter Linux im
                                                          o
                                       eigens daf¨r entwickelten tmpfs als Dateien allokiert. Mehrere Prozesse
                                                   u
                                       k¨nnen so die gleiche Datei einblenden und sie als schnellen, gemeinsa-
                                         o
                                       men Speicher verwenden [32]. Eine Variante, um geteilten Speicher im
                                                                                   ¨
                                       tmpfs zu erstellen, w¨re beispielsweise das Offnen und Einblenden einer
                                                             a
                                       normalen Datei im tmpfs mittels open() und mmap( . . . , MAP SHARED,
                                       . . . ). Technisch ¨quivalent, aber dem POSIX Standard [36] folgend, ist
                                                          a
                                       allerdings die Abfolge shm open() und mmap( . . . ).
                                       Diese Form von Shared Memory wird in der SAP-Speicherverwaltung f¨r  u
                                       User-Memory derzeit standardm¨ßig ab Linux-Kernel 2.4 und h¨her ein-
                                                                         a                            o
                                       gesetzt.
                                                            u       x
                                   Mit diesen letzten Ausf¨ hrungen sind die Voraussetzungen gegeben, um
                               in den Abschnitten 3.2.2 und 3.2.3 die beiden derzeit m¨glichen Implemen-
                                                                                        o
                                                                 Le
                               tierungen der SAP-Speicherverwaltung verstehen zu k¨nnen. Zuvor jedoch
                                                                                      o
                               geben wir eine Einf¨hrung in die Probleme der Speicherverwaltung aus Sicht
                                                    u
                               des SAP ABAP-Applikationsserver und stellen die Anforderungen des SAP-
                                                     pp

                               Systems an die Speicherverwaltung des Betriebssystems dar, wie sie sich aus
                               logischer Sicht, d.h. der Sicht der Anwender, ergeben.
                                           sU


                               3.2 SAP-Speicherverwaltung f¨r die Linux Plattform
                                                           u

                               Der SAP ABAP-Applikationsserver geh¨rt sicherlich zu der Sorte von Anwen-
                                                                       o
                               dungen, die pro Prozess einen sehr hohen Speicherbedarf besitzen, s. S. 114.
                               Die Quellen dieses Speicherbedarfs liegen zum einen in den Datenmengen,
                               die jeder SAP-Anwender f¨r seine Arbeit ben¨tigt und die heute f¨r einen
                                                           u                   o                   u
                               gegebenen Zeitpunkt oftmals im GigaByte-Bereich liegen. Eine andere Quelle
                               sind die steigenden Anforderungen der neuen SAP-Versionen selbst. Hier ist
                               insbesondere die Unicode-F¨higkeit zu nennen, s. Abschnitt 4.3.3.
                                                            a
                                   Auf 64-Bit-Systemen steht dem SAP Applikationsserver hinreichend virtu-
                               eller Adressraum zu Verf¨gung, so dass auf solchen Systemen der Fokus auf der
                                                        u
                               effizienten Nutzung des physikalischen Speichers liegt. Bei 32-Bit Systemen,
                               die unter Linux noch h¨ufig zum Einsatz kommen, liegt die Problematik je-
                                                       a
                               doch an anderer Stelle: Die Gr¨ße des verf¨gbaren virtuellen Adressraums
                                                               o            u
                               ist hier die zentrale Beschr¨nkung. Verfahren, um diesen Engpaß zu beseiti-
                                                           a
                               gen, sind also notwendig. Ein Ansatz ist das sogenannte neue oder map
                               Verfahren f¨r SAP auf Linux, das weiter unten im Detail beschrieben wird.
                                           u
F -X C h a n ge                                                                                            F -X C h a n ge
    PD                                                                                                          PD




                          !




                                                                                                                                     !
                        W




                                                                                                                                   W
                      O




                                                                                                                                 O
                     N




                                                                                                                                N
                   y




                                                                                                                              y
                bu




                                                                                                                           bu
                               122    3 SAP Memory Management f¨r Linux
                                                               u
              to




                                                                                                                         to
          k




                                                                                                                     k
        lic




                                                                                                                   lic
    C




                                                                                                                C
w




                                                                                                           w
                                m




                                                                                                                                           m
    w                                                                                                          w
w




                                                                                                            w
                               o




                                                                                                                                          o
        .d o                   .c                                                                                  .d o                   .c
               c u -tr a c k                                                                                              c u -tr a c k
                               3.2.1 Logische Anforderungen an die SAP-Speicherverwaltung
                               Das in Abschnitt 2.1.3 beschriebene Workprozess-Multiplexing versetzt das
                               SAP-System zum einen in die Lage, mit einer begrenzten Menge an Work-
                               prozessen eine deutlich gr¨ßere Anzahl von Anwendern zu bedienen, bringt
                                                          o
                               aber zum anderen Probleme mit sich, wie sie auch Betriebssysteme haben, die
                               Multi-Tasking-F¨higkeiten besitzen: Da ein Workprozess (analog: eine CPU)
                                                a
                               im Laufe der Zeit f¨r verschiedene User (analog: verschiedene Tasks) aktiv ist,
                                                  u
                               m¨ssen vor dem User-Wechsel (analog: Task-Switch) fl¨ chtige Daten gesichert
                                 u                                                    u
                               werden.
                                   Bei dem SAP-System z¨hlen zu diesen fl¨chtigen Daten vor allem die
                                                            a                 u
                               Ergebnisse von Berechnungen und Auswertungen der ausgef¨hrten ABAP-
                                                                                              u
                               Programme. Die Gr¨ßenordnung dieser Daten kann in heutigen Anwendun-
                                                    o
                               gen leicht im GigaByte-Bereich liegen, wenn z.B. umfangreiche Datenbank-
                               Tabellen eingelesen und ausgewertet werden m¨ssen. Im SAP-Sprachgebrauch
                                                                             u
                               bilden diese Daten einen Teil des User-Contexts. Wenn ein SAP-Work-
                               prozess einem User zugeteilt wird, muss er gleichzeitig Informationen erhal-
                               ten, wie er auf den zugeh¨rigen User-Context zugreifen kann (Roll-In). Bei
                                                          o

                                                          ¨
                                                             u
                                                                 x
                               der Beendigung der Arbeit f¨r diesen User m¨ssen die fl¨chtigen Daten des
                                                                             u           u
                               User-Contexts gegen das Uberschreiben durch die Daten des n¨chsten Users
                               gesch¨tzt werden (Roll-Out).
                                    u
                                                                                                a
                                                              Le
                                   Diese Vorg¨nge k¨nnen grunds¨tzlich auf verschiedene Arten realisiert wer-
                                             a      o            a
                               den. Allen Verfahren gemeinsam sind folgende Aspekte:
                               • Die User-Contexte aller User m¨ ssen in einem gemeinsamen Bereich ab-
                                                                   u
                                                 pp

                                 gelegt werden. In der SAP-Terminologie findet man mitunter den Begriff
                                 des User-Memory f¨r diesen Bereich.
                                                        u
                               • Dieser Bereich soll f¨ r alle Work-Prozesse gemeinsam zugreifbar sein. Er
                                                       u
                                 ist also kein exklusiver Bereich eines Workprozesses.
                                       sU


                               Dieser letzte Aspekt impliziert, dass das User-Memory aus Effizienzgr¨ nden
                                                                                                     u
                               mittels einer Variante des oben beschriebenen Shared Memories implemen-
                               tiert werden sollte. Welche von SAP gew¨hlt wurde, h¨ngt von der gew¨hlten
                                                                        a             a              a
                               Implementierung ab und wird weiter unten genauer beschrieben.
                                   Die Frage, wie die Daten des User-Contexts dem Workprozess bereitge-
                               stellt werden k¨nnen (Roll-In), bleibt von der Art des Shared Memories aller-
                                              o
                               dings unber¨hrt. Auch hier existieren mehrere M¨glichkeiten. Die einfachste
                                           u                                     o
                               Version kopiert die Daten aus dem User-Memory in spezielle Bereiche des
                               Adressraums des Workprozesses. Dieser Ansatz ¨hnelt sehr stark der Imple-
                                                                                a
                               mentierung von Task-Switches bei Betriebssystemen [22], die h¨ufig die Re-
                                                                                              a
                               gister der CPU in den Hauptspeicher sichern. Der Roll-Out kopiert dann die
                               Daten in umgekehrter Richtung aus dem Workprozess in das User-Memory
                               zur¨ck.
                                   u
                                   Im Bereich der Betriebssysteme hat dieser Ansatz seine Berechtigung, da
                               die Register und der Hauptspeicher sich hinsichtlich Gr¨ße und Zugriffszeiten
                                                                                        o
                               stark unterscheiden. Der gleiche Ansatz macht im SAP-System heute aller-
                               dings weniger Sinn, da er nur von einem Speicherbereich in einen anderen
F -X C h a n ge                                                                                           F -X C h a n ge
    PD                                                                                                         PD




                          !




                                                                                                                                    !
                        W




                                                                                                                                  W
                      O




                                                                                                                                O
                     N




                                                                                                                               N
                   y




                                                                                                                             y
                bu




                                                                                                                          bu
                                                   3.2 SAP-Speicherverwaltung f¨ r die Linux Plattform
                                                                               u                         123
              to




                                                                                                                        to
          k




                                                                                                                    k
        lic




                                                                                                                  lic
    C




                                                                                                               C
w




                                                                                                          w
                                m




                                                                                                                                          m
    w                                                                                                         w
w




                                                                                                           w
                               o




                                                                                                                                         o
        .d o                   .c                                                                                 .d o                   .c
               c u -tr a c k                                                                                             c u -tr a c k
                               kopiert. Dennoch wurde dieses Verfahren in fr¨hen SAP-Systemen (Versionen
                                                                             u
                               kleiner R/3 3.0) verwendet, da der Kopiervorgang selbst von SAP kontrolliert
                               werden kann. In den zu Beginn der 90er Jahre eingesetzten Maschinen war
                               der Hauptspeicher eine knappe Ressource. Der Kopier-Vorgang konnte des-
                               halb durch einen intelligenten Komprimierschritt erg¨nzt werden, der einen
                                                                                     a
                               Teil der Speicherlast eines SAP-Systems reduzierte. Minimale Reste dieses
                               Kopier-Schrittes – derzeit von wenigen hundert KiloByte – finden sich aus
                               historischen Gr¨nden immer noch im SAP-System.
                                               u
                                   In den heutigen Systemen ist der Hauptspeicher nicht mehr in vergleichba-
                               rem Maße knapp. Das sehr zeitintensive Kopieren wird deshalb seit l¨ngerem
                                                                                                   a
                               nicht mehr f¨r die Masse der Daten des User-Contexts eingesetzt. Die ele-
                                            u
                               gantere und schnellere Methode arbeitet mit Pointern. Beim Roll-In wird –
                               stark vereinfacht – ein Pointer auf den relevanten Bereich des User-Contexts
                               gesetzt und uber diesen Pointer werden dann alle Zugriffe abgewickelt. Der
                                            ¨
                               Roll-Out entspricht dem Umsetzen bzw. zeitweisen Deaktivieren des Poin-
                               ters. Dieser Ansatz ist – mit seinen im Folgenden besprochenen Varianten –
                               die Grundlage aller heutigen Formen der Verwaltung des SAP-User-Memory.

                               Shared Memory unter SAP          x
                                                             Le
                               F¨r die Speicherung des User-Memory stehen auf einer Linux-Plattform
                                 u
                               heute grunds¨tzlich die drei unter Abschnitt 3.1.3 beschriebenen Formen zur
                                             a
                               Verf¨gung. In den ersten von SAP unterst¨tzen Linux-Distributionen, die
                                   u                                        u
                                                 pp

                               auf dem Kernel 2.2 aufsetzten, stand allerdings das tmpfs noch nicht zur
                               Verf¨gung. Somit musste das User-Memory entweder uber ein Datei-Mapping
                                   u                                                 ¨
                               oder uber das SysV Shared Memory realisiert werden.
                                     ¨
                                   Das Datei-Mapping stellte anf¨nglich keine vollwertige L¨sung dar, da erst
                                                                 a                         o
                               mit dem Linux-Kernel 2.4 das gemeinsame und nicht an eine Datei gebundene
                                       sU


                               Mapping eingef¨hrt wurde. Genau diese Art ist jedoch f¨r das SAP-System
                                               u                                         u
                               – wie oben beschrieben – wesentlich. Es blieb damit nur die SysV-Variante.
                               Aber auch hier ergaben sich Probleme. So ist z.B. in Unix-basierten Sys-
                               temen die Anzahl der SysV-Segmente, s. S. 120, begrenzt. Die Zuteilung eines
                               eigenen SysV-Segments zu einem SAP-User verbot sich damit von selbst. Die
                               einzige M¨glichkeit, die f¨r auf Kernel 2.2-basierenden Systemen blieb, war
                                         o               u
                               die Zusammenfassung aller User-Contexte in ein SysV-Segment. In der SAP-
                               Terminologie wird es auch als Extended Memory bezeichnet.
                                   Der im vorigen Abschnitt beschriebene Pointer auf den gerade ben¨tigten
                                                                                                      o
                               User-Context zeigt damit auf einen Teil dieses SHM-Segments. Bei diesem
                               Verfahren blendet ein SAP-Workprozess damit zwar alle User-Contexte in
                               seinen eigenen virtuellen Adressraum ein, durch geeignete Schutzmechanismen
                               wird aber verhindert, dass auf andere als den gerade aktuellen User-Context
                               vom Workprozess zugegriffen werden kann.
                                   Abbildung 3.3 bringt die soeben beschriebene Situation ins Bild. Die ge-
                               rade von einem Workprozess bearbeiteten User-Contexte sind ohne Schraffur
                               dargestellt. Die anderen User-Contexte sind gesch¨tzt, so dass kein Zugriff
                                                                                   u
F -X C h a n ge                                                                                            F -X C h a n ge
    PD                                                                                                          PD




                          !




                                                                                                                                     !
                        W




                                                                                                                                   W
                      O




                                                                                                                                 O
                     N




                                                                                                                                N
                   y




                                                                                                                              y
                bu




                                                                                                                           bu
                               124      3 SAP Memory Management f¨r Linux
                                                                 u
              to




                                                                                                                         to
          k




                                                                                                                     k
        lic




                                                                                                                   lic
    C




                                                                                                                C
w




                                                                                                           w
                                m




                                                                                                                                           m
    w                                                                                                          w
w




                                                                                                            w
                               o




                                                                                                                                          o
        .d o                   .c                                                                                  .d o                   .c
               c u -tr a c k                                                                                              c u -tr a c k




                                                                 x
                                                              Le
                                    Abb. 3.3. Workprozesse und User-Contexte im alten Memory Management
                                                  pp

                               m¨glich ist. Ebenfalls eingezeichnet sind die SAP-Buffer (Nametab, Tabellen-
                                 o
                               puffer, PXA, . . . ), die auch als (SysV) Shared Memory realisiert sind. Die
                               Lage der zugeh¨rigen Segmente ist allerdings nicht maßstabsgerecht angege-
                                               o
                                        sU


                               ben, sondern deutet nur die Existenz der Puffer an.
                                   Das Bild macht offensichtlich, dass in dieser Variante als begrenzender Fak-
                               tor die Summe der User-Contexte auftritt. Diese Summe muss kleiner sein als
                               der verf¨gbare virtuelle Adressraum eines SAP-Workprozesses. Nach dem auf
                                        u
                               S. 116 Gesagten liegt die Gr¨ße des f¨r Shared Memory zug¨nglichen Berei-
                                                             o        u                        a
                               ches auf 32-Bit Linux bei knapp unter 2 GByte. Davon muss nach der Abb. 3.3
                               noch der Platz f¨r die SAP-Buffer abgezogen werden, so dass typischerweise
                                                u
                               von ca. 1 GByte f¨r alle User-Contexte im SAP-System zusammen ausgegan-
                                                 u
                               gen werden kann. Diese Restriktion ist f¨r moderne Systeme nat¨ rlich ein
                                                                          u                          u
                               merkliches Problem.
                                   Eine denkbare L¨sungsm¨glichkeit k¨nnte in der Installation weiterer Ap-
                                                   o        o           o
                               plikationsserver auf einem Rechner bestehen. Da jeder Applikationsserver
                               dann weniger User zu verarbeiten h¨tte, st¨nde jedem einzelnen User mehr
                                                                     a       a
                               Platz im Extended Memory bereit. Mit der Installation weitere Applikations-
                               server werden aber auf der anderen Seite zahlreiche Komponenten dupliziert,
                               z.B. die Puffer, so dass damit sicher mittelfristig kein echter Gewinn verbun-
                               den ist.
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux
Saponlinux

Mais conteúdo relacionado

Destaque

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Destaque (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Saponlinux

  • 1. F -X C h a n ge F -X C h a n ge PD PD ! ! W W O O N N y y bu bu to to k k lic lic C C w w m m w w w w o o .d o .c .d o .c c u -tr a c k c u -tr a c k 3 SAP Memory Management f¨r Linux u Aus der Sicht des Betriebssystems besteht das SAP-System aus einer Menge von Prozessen wie jede andere Anwendung auch. Ein SAP-Workprozess un- terliegt der gleichen Behandlung hinsichtlich der Zuteilung von Betriebssys- x tem-Ressourcen, wie CPU oder Hauptspeicher, wie eine Shell, ein Bildverar- beitungsprogramm oder eine Datenbank. In diesem Kapitel betrachten wir deshalb zun¨chst die allgemeinen, f¨r alle Prozesse g¨ltigen Konzepte der a u u Le Speicherverwaltung von Linux. Anschließend beschreiben wir in einem zwei- ten Teil die Struktur der Speicherverwaltung des SAP-Systems. Hier konzen- trieren wir uns zun¨chst auf den ABAP-Applikationsserver, der durch große a pp Speicheranforderungen gekennzeichnet ist. Um die Hintergr¨nde dieser An- u forderungen zu beleuchten, skizzieren wir in einem ersten Schritt die logische Sicht auf die Speicherverwaltung. Auf der Linux-Plattform finden sich dann zwei Ans¨tze f¨r die konkrete Implementierung der logischen Anforderun- a u gen: Das Standard-Verfahren, das bei allen Unix-Systemen eingesetzt werden sU kann, und ein Linux-spezifisches neues Memory Management. Beide werden im Detail beschrieben. Den Abschluss des zweiten Teils bildet ein Exkurs auf die Speicherverwaltung im Java-Applikationsserver. Der dritte Teil behandelt dann Werkzeuge zur Diagnose und Beobachtung der Speicherverwaltung und h¨ufig gestellte Fragen zu diesem Themenkomplex. a Ein Wort zur Terminologie: Wenn wir im Folgenden vom Hauptspeicher reden, ist der physisch in der Maschine vorhandene Speicher gemeint. Wir unterscheiden in der folgenden Diskussion nicht zwischen dem physischen Hauptspeicher (den SIMMs, DIMMs, etc.), dem Auslagerungs- oder Swap- bereich und gegebenenfalls vorhandenen Caches (L1, L2, L3). Die Unterschei- dung zwischen diesem physisch vorhandenen Speicher und den Adressen, die der Prozess sieht, ist aber zentral und muss stringent durchgehalten werden, um die Abl¨ufe auf einem Linux-System zu verstehen. Der Speicher, den eine a ¨ Anwendung sieht, wird in Ubereinstimmung mit der g¨ngigen Literatur [22] a durchg¨ngig als virtueller Speicher bezeichnet. Die Konzepte, die sich hin- a ter dieser letzten Bezeichnung verbergen, werden im n¨chsten Abschnitt kurz a vorgestellt.
  • 2. F -X C h a n ge F -X C h a n ge PD PD ! ! W W O O N N y y bu bu 114 3 SAP Memory Management f¨r Linux u to to k k lic lic C C w w m m w w w w o o .d o .c .d o .c c u -tr a c k c u -tr a c k 3.1 Speicherverwaltung unter Linux Moderne Betriebssysteme m¨ ssen die Speicheranforderungen ihrer Anwen- u dungen auf flexible und effiziente Art erf¨llen. Dabei k¨nnen die Anforde- u o rungen der Anwendungen h¨chst unterschiedlich sein: Einige ben¨tigen kaum o o Speicher, w¨hrend andere, wie z.B. SAP, zum Teil erhebliche Mengen an Daten a im Speicher halten wollen. Die Zuteilung des Speichers durch das Betriebs- system wird zudem durch weitere Aspekte erschwert: 1. Das Anforderungsmuster einer Anwendung kann sich im Laufe ihrer Lebensdauer gravierend andern. W¨hrend der Startphase einer neuen ¨ a Anwendung wird der ausf¨hrende Prozess ublicherweise viel Speicher an- u ¨ fordern. Ein CPU-intensiver Prozess, wie z.B. Seti@Home, wird dann aller- dings kaum noch zus¨tzlichen Speicher ben¨tigen. Ein Bildverarbeitungs- a o programm, das auf User-Anfrage ein neues Bild in den Speicher l¨dt, wird a demgegen¨ber auch zur Laufzeit noch weiteren Speicher ben¨tigen. u o 2. Es ist m¨glich, dass die Summe der Anforderungen der zu einem gegebenen o Zeitpunkt laufenden Anwendungen die Menge des physikalisch vorhande- ¨ x nen Hauptspeichers ubertreffen. 3. Selbst einzelne Prozesse fordern mitunter mehr Speicher an, als an Haupt- Le speicher in der Maschine vorhanden ist. 4. Ein wichtiger Aspekt f¨r die Stabilit¨t des gesamten Systems ist, dass die u a Prozesse nicht oder nur kontrolliert auf Speicherbereiche anderer Prozesse oder gar des Betriebssystems zugreifen k¨nnen. o pp 3.1.1 Der virtuelle Adressraum All diese Probleme werden in heutigen Betriebssystemen wie Linux oder Win- sU dows durch die Einf¨hrung des Konzeptes des virtuellen Speichers oder u virtuellen (logischen) Adressraums aufgegriffen. Dieser virtuelle Adres- sraum abstrahiert von der physikalischen Speicherausstattung der Maschine. Jeder Prozess auf einem solchen Betriebssystem erh¨lt beim Start einen ei- a genen logischen Adressraum, der unabh¨ngig von den strukturell identischen a Adressr¨umen anderer Prozesse und von der Ausstattung der Maschine mit a physikalischen Hauptspeicher ist. Alle Adressen, die von Compilern oder an- deren Werkzeugen wie Linkern erzeugt werden, sind als Angaben von Orten in diesem virtuellen Adressraum zu verstehen. Diese virtuellen Adressen sind die einzigen, die einem Prozess bekannt und zug¨nglich sind. Das Betriebs- a system, das die Illusion des virtuellen Adressraums aufbaut, ist dann auch daf¨r zust¨ndig, dass Zugriffe auf Stellen im virtuellen Adressraum auf die u a zugeh¨rigen Stellen im physikalischen Speicher umgesetzt werden. o In Abb. 3.1 ist die grunds¨tzliche Gestalt eines typischen virtuellen Adres- a sraums unter Linux zu sehen. Als Vorlage dient dazu die 32-Bit Intel-Plattform unter einem Linux 2.4 System. Die Details der Abbildung werden im folgenden Abschnitt erkl¨rt. a
  • 3. F -X C h a n ge F -X C h a n ge PD PD ! ! W W O O N N y y bu bu 3.1 Speicherverwaltung unter Linux 115 to to k k lic lic C C w w m m w w w w o o .d o .c .d o .c c u -tr a c k c u -tr a c k x Abb. 3.1. Virtueller Adressraum unter Linux Le Das Layout des virtuellen Adressraums Wir untersuchen, schon mit Blick auf die unten anstehende Diskussion der SAP-Speicherverwaltung, einige Aspekte der Gestalt des virtuellen Adres- pp sraums genauer. Wir beginnen mit einigen allgemeinen Aussagen, betrachten dann typische Probleme des vorgestellten Layouts und zeigen schließlich kurz auf, welche Entwicklungen im Linux 2.6 Kernel stattgefunden haben. sU Allgemeine Aspekte Den virtuellen Adressraum aus Abb. 3.1 zeichnen zun¨chst einige allgemeine a Aspekte aus: • Die Adressen innerhalb des Adressraums steigen linear an. Linux verwen- det also keine Segmentierung des Adressraums, s. [23]. • Die maximale Gr¨ße des virtuellen Adressraums ist durch den Aufbau o der CPU begrenzt. Bei einer 32-Bit-Plattform stehen nur 32 Bit f¨r die u Adressierung zur Verf¨gung. Der virtuelle Adressraum kann damit maxi- u mal 232 Byte (4 GB) groß werden. Auf einer 64-Bit-Plattform wird diese Grenze auf 264 Byte (16 ExaByte) erweitert. Der verf¨gbare Adressraum u eines Prozesses steigt damit signifikant an. • Um den virtuellen Adressraum einfach verwalten zu k¨nnen, wird er in o voneinander unabh¨ngige Bl¨cke fester Gr¨ße (Pages) aufgeteilt. Die a o o Gr¨ße dieser Pages ist dabei ebenfalls von der unterliegenden Hardware o abh¨ngig. Auf der 32-Bit-Intel-Plattform ist sie 4 KiloByte, auf dem Ita- a nium liegt sie typischerweise bei 16 KByte und auf AMD64 bei 4 bis
  • 4. F -X C h a n ge F -X C h a n ge PD PD ! ! W W O O N N y y bu bu 116 3 SAP Memory Management f¨r Linux u to to k k lic lic C C w w m m w w w w o o .d o .c .d o .c c u -tr a c k c u -tr a c k 8 KByte. Auf diesen Aspekt kommen wir bei der Diskussion des eigentli- chen Nutzens des virtuellen Adressraums erneut zur¨ck, s. Abschnitt 3.1.2. u Die Einteilung in Pages ist ein wesentlicher Teil der Speicherverwaltung heutiger Betriebssyteme. • Linux unterteilt den Adressraum in einen Bereich, der dem Prozess selbst zug¨nglich ist, und einen, der nur dem Betriebssystem vorbehalten ist. In a der ublichen Terminologie wird der erste als User Space und der zweite als ¨ Kernel Space bezeichnet. Die Lage dieser Grenze bestimmt die maximale Gr¨ße des Adressraums, der einem Prozess zug¨nglich ist. Sie wird deshalb o a als TASK-SIZE bezeichnet [29]. Bei einem 32-Bit-Intel-System liegt diese Grenze bei 3 GB, bei einem Intel Itanium-System bei 5 ∗ 261 Byte [30] und bei einem AMD64-System derzeit bei 512 GB. • Innerhalb des User-Spaces existieren Bereiche, die mit jeweils einer eigenen Semantik ausgestattet sind. In der Linux-Nomenklatur werden diese Berei- che als virtual memory areas (VMA) bezeichnet. Zu diesen Bereichen geh¨ren der Programm-Code des Prozesses (auch Text-Region genannt), o die Daten des Programms (sowohl initialisierte als auch nicht-initialisierte, Data-Region), der Stack des Programms (Stack-Region) und der Be- x reich, aus dem die dynamischen Speicheranforderungen, wie malloc(), befriedigt werden. Dieser letzte Bereich wird als Heap bezeichnet. Le M¨gliche Problemfelder o Die Erfahrung lehrt, dass im vorgestellten Layout gerade f¨r speicherintensive u pp Anwendungen wie SAP auf 32-Bit Plattformen einige Probleme schlummern. ¨ Sie lassen sich alle unter dem Uberbegriff der Verknappung des virtuellen Adressraums zusammenfassen. Zun¨chst werden unter Linux 2.4 die vom Prozess verwendeten Bibliothe- a ken (hier die sogenannten Shared Libraries) ab einer vordefinierten Stelle sU in den Adressraum geladen. Auf der 32 Bit-Intel-Plattform ist dieser Beginn der Einlagerung durch die Systemsoftware auf 1 GB (hexadezimale Adresse 0x40000000) definiert. Erst nach diesen Bibliotheken werden normalerweise die Bereiche allokiert, in denen das SAP-System seine gemeinsamen Speicher- bereiche, wie Buffer, User Memory, etc., ablegt. Diese Bereiche (in Abb. 3.1 als MMAP/Shared Memory bezeichnet) k¨nnen sich also von etwas mehr o als 1 GB bis zum Stack-Bereich erstrecken. Der Stack-Bereich besitzt eine va- riable Gr¨ße und w¨chst in Richtung kleinerer Adressen, d.h. nach unten. o a Auf dem Stack werden beispielsweise lokale Variablen eines C-Programms, oder beim Absteigen in Unterprogramme die Funktionsargumente sowie die R¨cksprungadresse abgelegt. Da die Gr¨ße des Stack-Bereiches normaler- u o weise vergleichsweise klein ist, liegt die maximale Gr¨ße der Shared Memory- o Bereiche also bei knapp unter 2 GB. Der in Abb. 3.1 ebenfalls eingezeichnete Heap-Bereich kann große Teile des restlichen zur Verf¨gung stehenden Platzes einnehmen. Er ist dabei nicht u auf den Bereich oberhalb der Shared Libraries beschr¨nkt. Damit steht f¨r a u die Allokierung von Speicher im Heap noch weiterer Platz zur Verf¨gung;u
  • 5. F -X C h a n ge F -X C h a n ge PD PD ! ! W W O O N N y y bu bu 3.1 Speicherverwaltung unter Linux 117 to to k k lic lic C C w w m m w w w w o o .d o .c .d o .c c u -tr a c k c u -tr a c k es kann hier zus¨tzlich von mehreren hundert MB ausgegangen werden. In a Summe stehen damit einem Prozess auf einer 32-Bit-Intel-Plattform, je nach Konfiguration, ca. 2,8 GB an virtuellem Adressraum zur Verf¨gung. u Ein letztes Problem erw¨chst aus der unterschiedlichen Wachstumsrich- a tung von MMAP bzw. Heap auf der einen und dem Stack auf der anderen Seite. Sowohl der MMAP/Shared Memory-Bereich als auch der Heap wachsen in Richtung gr¨ßere virtueller Adressen. Der Stack kommt diesen beiden Berei- o chen von oben entgegen. Es ist damit grunds¨tzlich klar, dass es zu Kollisionen a zwischen Stack und MMAP bzw. Heap kommen kann. Auf 32-Bit-Maschinen tritt dieses Problem in der Tat auf und f¨hrt zum Abbruch des betroffenen u Prozesses. Sowohl die Anwendungen als auch das Betriebssystem verwenden deshalb mitunter Guard Pages, die die Grenze zwischen Stack und Heap sch¨tzen. u ¨ Anderungen im Linux Kernel 2.6 Im 2.6er Linux-Kernel wird ein Teil dieser Probleme angegangen, s. [33]. In Abb. 3.2 ist die neue Gestalt des virtuellen Adressraums skizziert. Der a x auff¨lligste Unterschied ist sicher der Wegfall des festen Bereiches f¨ r die Sha- u red Libraries. Diese werden stattdessen direkt unterhalb des Stack-Segments Le eingeblendet und wachsen nach unten. Der Stack wird in diesem Szenario auf eine maximale Gr¨ße bei Prozess-Start festgesetzt. Der Heap-Bereich auf der o anderen Seite w¨chst in den gleichen freien Raum in der Mitte des virtuellen a Adressraums hinein. Der vorhandene Adressraum ist damit nicht mehr durch pp den Shared-Library-Bereich fragmentiert und kann besser ausgenutzt werden. sU Abb. 3.2. Virtueller Adressraum unter Linux 2.6
  • 6. F -X C h a n ge F -X C h a n ge PD PD ! ! W W O O N N y y bu bu 118 3 SAP Memory Management f¨r Linux u to to k k lic lic C C w w m m w w w w o o .d o .c .d o .c c u -tr a c k ¨ Eine weitere, eher kleine Anderung betrifft die oberste Page des Kernel- c u -tr a c k ¨ Bereichs. Hier liegt nun eine Page, die f¨r den Prozess zugreifbar ist. Uber u diese Page k¨nnen User-Space-Prozesse einen schnelleren Zugriff auf Kernel- o Daten erhalten. Diese Page, die sogenannte vsyscall page [35], wird z.Zt. ge- nutzt, um einige System-Aufrufe zu beschleunigen. Zu diesen Systemaufrufen z¨hlt vor allem gettimeofday(), mit dem Anwendungen eine Zeitmessung a realisieren. Dieser Aufruf wird im SAP-System h¨ufig verwendet, u.a. zur a Performance-Messung. 3.1.2 Einsatz des virtuellen Adressraums Wir kommen wieder zur¨ck zum Nutzen und zur Verwendung des Konzep- u tes eines virtuellen Adressraums. Dazu schauen wir uns die Funktionsweise eines Systems mit virtuellem Speicher zun¨chst genauer an. Bei der Erzeu- a gung eines ausf¨hrbaren Programms werden alle Verweise auf Adressen, z.B. u Zugriffe auf Variablen, als virtuelle Adressen kodiert. Die CPU sieht bei der u x Ausf¨hrung eines Prozesses nur diese Adressen. F¨ r den faktischen Zugriff u auf den physischen Speicher m¨ ssen diese virtuellen Adressen noch auf die u physischen Adressen abgebildet werden. Diese Aufgabe ubernimmt in vielen ¨ Le Hardware-Architekturen eine spezielle Komponente, die Memory Manage- ment Unit (MMU). Die MMU erh¨lt als Eingabe eine virtuelle Adresse und a erzeugt daraus die Adresse, an der das gew¨ nschte Datum faktisch liegt. F¨r u u pp diese Aufgabe ben¨tigt die MMU typischerweise einige Datenstrukturen, die o von der Hardware bereitgestellt und vom Betriebssystem verwaltet werden. Zu diesen Datenstrukturen z¨hlen die sogenannten Pagetabellen und deren a Cache, der Translation Lookaside Buffer (TLB). Wichtig bei diesem Ablauf ist nun zum einen, dass die Pagetabellen sU prozess-spezifisch sind, und zum anderen, dass die Umrechnung f¨r jedenu Zugriff auf eine virtuelle Adresse neu geschehen muss. W¨hrend dies sicher a ein Performance-Problem darstellen kann, bietet es auf der anderen Seite die Chance, f¨r jede Page einen eigenen physischen Ort zu erlauben. Dabei muss u dieser Ort nicht unbedingt im physischen Speicher liegen. Es ist z.B. denkbar, dass bei der Ausf¨hrung eines Programms eine Page, die den Code enth¨lt, u a schon im physischen Speicher liegt, w¨hrend eine Page mit Programm-Daten a noch nicht gelesen wurde und sich noch auf der Platte befindet. Analog k¨nnen o gerade nicht ben¨tigte Pages in einen Paging-Bereich auf der Platte ausgela- o gert werden. Bei Linux wird dieser Paging-Bereich aus historischen Gr¨nden u normalerweise Swap-Space genannt. Ganz korrekt ist diese Terminologie al- lerdings nicht, da Swapping urspr¨nglich das Auslagern ganzer Prozesse be- u schrieb. Linux dagegen ist ein Paging-System, da es Pages zwischen dem Hauptspeicher und dem Auslagerungsbereich verschiebt. Die Verwendung des in Pages unterteilten virtuellen Adressraum erlaubt eine recht einfache L¨sung f¨r die oben beschriebenen Grundprobleme einer o u Speicherverwaltung (s. S. 114).
  • 7. F -X C h a n ge F -X C h a n ge PD PD ! ! W W O O N N y y bu bu 3.1 Speicherverwaltung unter Linux 119 to to k k lic lic C C w w m m w w w w o o .d o .c .d o .c c u -tr a c k c u -tr a c k 1. Anforderungen nach weiterem Speicher zur Laufzeit werden im beschrie- benen Szenario einfach realisiert. Neue Pages werden dem virtuellen Adressraum hinzugef¨gt und die zugeh¨rigen Daten gegebenenfalls aus u o einer Datei o.¨. geladen. Dabei werden Zugriffe auf noch nicht im phy- a sikalischen Speicher befindliche Bereiche der Datei zu sogenannten Page Faults f¨hren, welche das Betriebssystem veranlassen, die gew¨ nschten u u Daten in den physikalischen Speicher einzulagern. Weitere Zugriffe auf diesen Bereich werden dann uber die MMU direkt abgebildet. ¨ 2. Da Pages sich nicht permanent im physikalischen Speicher befinden m¨s- u sen, k¨nnen ganze Prozesse oder auch nur Teile von ihnen in Paging- o Bereiche ausgelagert werden. Die Summe der Speicheranforderungen meh- rerer Prozesse kann damit gr¨ßer sein als der physikalisch vorhandene o Hauptspeicher. 3. Die analoge Aussage gilt aus dem gleichen Grund auch f¨r die Behand- u lung von Prozessen, deren belegter virtueller Adressraum gr¨ßer ist als der o physikalisch vorhandene Hauptspeicher. 4. Da die virtuellen Adressr¨ume unterschiedlicher Prozesse per se eigen- a st¨ndige Einheiten sind, kann bei korrekter Funktionsweise der Abbildung a x von virtuellen zu physikalischen Adressen kein Prozess ohne weiteren Auf- wand auf die Daten eines anderen Prozesses zugreifen. Auch ist der Zu- Le griff auf Betriebssystem-Strukturen durch die Zweiteilung des virtuellen Adressraums in Kernel- und Userspace verwehrt. So elegant dieses Vorgehen auch ist, bringt es doch neue Probleme mit sich. pp F¨r das SAP-System mit seinen hohen Speicheranforderungen und den damit u einhergehenden h¨ufigen Adressumsetzungen ist zun¨chst die hohe Last auf a a den Pagetabellen relevant. Daneben findet sich im SAP-System noch eine sehr geringe Sequentialit¨t der Speicherzugriffe. Die Anfragen der SAP-Anwender a folgen keinem vorhersehbaren Muster. Damit geraten die Caches der Page- sU tabellen, die TLBs, ebenfalls unter hohe Last. Die Trefferrate der TLBs ist bei SAP-Systemen h¨ufig geringer als bei anderen Anwendungen. Schließlich a k¨nnen die hohen Speicheranforderungen des SAP-Systems auch dazu f¨hren, o u dass aktuell nicht ben¨tigte Pages aus dem physikalischen Speicher ausgela- o gert werden und durch andere Pages ersetzt werden m¨ ssen. Die Qualit¨t der u a hier verwendeten Ersetzungsalgorithmen kann immense Auswirkungen auf die gesamte Performance des Systems haben. Nicht geeignete Algorithmen k¨nneno im SAP-Umfeld zu Performance-Verlusten bis zum Faktor 10 f¨hren. Die neue- u ren Linux-Kernel sind in dieser Beziehung aber mittlerweile von durchgehend guter Qualit¨t. Dies ist einer der wichtigsten Aspekte, die durch die Tests von a Linux-Kerneln im SAP LinuxLab sichergestellt werden. 3.1.3 Shared Memory Die Separation von unterschiedlichen Prozessen und ihren Adressr¨umen, die a der obige Ansatz des virtuellen Adressraums automatisch liefert, sind einer- seits f¨r die Stabilit¨t eines Systems wie SAP mit vielen zusammenwirken- u a
  • 8. F -X C h a n ge F -X C h a n ge PD PD ! ! W W O O N N y y bu bu 120 3 SAP Memory Management f¨r Linux u to to k k lic lic C C w w m m w w w w o o .d o .c .d o .c c u -tr a c k c u -tr a c k den Prozessen und Threads sehr wichtig. Auf der anderen Seite ist die Kom- munikation zwischen verschiedenen Prozessen in einem SAP-System ebenso zentral. Die Separation der Adressr¨ume bietet grunds¨tzlich zun¨chst keine a a a M¨glichkeit, auf die Variablen anderer Prozesse zuzugreifen. o Um nun eine effektive Inter-Prozess-Kommunikation zu realisieren, m¨ssen u spezielle Maßnahmen bei der Implementierung der Anwendung ergriffen wer- den. Zwei Verfahren sind in diesem Zusammenhang h¨ufig zu finden: a • Die Verwendung von Threads basiert auf der Tatsache, dass die Threads eines Prozesses, im Gegensatz zu den Prozessen selbst, den selben virtuel- len Adressraum verwenden. Damit ist eine außerst einfache und schnelle ¨ Kommunikation zwischen verschiedenen Threads m¨glich. Durch die Auf- o gabe der Separation verliert eine Multi-Threaded-Anwendung jedoch viel der oben besprochenen Stabilit¨t (s. Kap. 2.1.3). Im SAP-Umfeld wurde a deshalb f¨r den eigentlichen SAP Application Server eine prozessbasierte u Architektur verwendet. • Bei der Verwendung von Prozessen muss daher eine M¨glichkeit gefunden o werden, Daten uber den eigenen Adressraum hinaus auch anderen Pro- ¨ a x zessen zug¨nglich zu machen. Dieser gemeinsam nutzbare Speicher wird allgemein als Shared Memory bezeichnet. Le In Unix-basierten Systemen gibt es traditionell drei Verfahren, um solches Shared Memory bereitzustellen, s. [20]: 1. Anwendungen des Memory Mappings (MMAP). Unter Memory Map- pp ping wird das Einblenden von Teilen von Dateien des Dateisystems in den virtuellen Adressraum eines Prozesses verstanden. Die Zugriffe auf die Daten der Datei m¨ssen dann nicht mehr uber die normalen u ¨ read()- oder write()-Aufrufe geschehen, sondern k¨nnen analog zu nor- o malen Variablen-Zugriffen ablaufen. Dieses Verfahren stellt eine viel ge- sU nutzte Methode im Bereich der Betriebssystem-nahen Programmierung dar. Auch im SAP-Umfeld w¨re es ein naheliegender Ansatz zur Reali- a sierung von gemeinsam genutztem Speicher der Workprozesse gewesen. Leider fehlte bis zum Linux-Kernel 2.4 die Unterst¨tzung der besonderen u und im SAP-Umfeld notwendigen Spezialform des Anonymous Shared Maps. Ohne diese Form war die Performance f¨r SAP-Bed¨rfnisse un- u u gen¨gend. u 2. Das SysV Shared Memory. Es geht von der speziellen Struktur eines sogenannten SHM-Segments aus. Diese SHM-Segmente m¨ssen einmal u angelegt und dann in die virtuellen Adressr¨ume der Prozesse explizit ein- a geblendet werden. Die SHM-Segmente sind allerdings nur als Ganzes zu bearbeiten; es ist zum Beispiel nicht m¨glich, nur einen Teil eines Seg- o ments ein- oder auszublenden. Zudem ist die maximale Anzahl solcher Segmente durch den Parameter SHMMNI des Betriebssystems begrenzt. Die existierenden SHM-Segmente k¨nnen durch das Werkzeug ipcs angezeigt o werden. Das SAP-System verwendet das SysV Shared Memory, um seine Puffer, wie die Nametab, die Tabellenpuffer und den PXA-Puffer, zu im-
  • 9. F -X C h a n ge F -X C h a n ge PD PD ! ! W W O O N N y y bu bu 3.2 SAP-Speicherverwaltung f¨ r die Linux Plattform u 121 to to k k lic lic C C w w m m w w w w o o .d o .c .d o .c c u -tr a c k c u -tr a c k plementieren. Bei den Unixversionen und in der alteren Implementierung ¨ der Speicherverwaltung von SAP auf Linux wird es standardm¨ßig auch a f¨r das User-Memory verwendet. u 3. Das POSIX Shared Memory. Es steht auf der Linux-Plattform erst mit Kernel 2.4 zur Verf¨gung und wurde von Hans-Christoph Roh- u land entwickelt. Das POSIX-SHM stellt gemeinsame Speicherbereiche zur Verf¨gung, die analog zu normalen Dateien in den Adressraum einge- u blendet werden k¨nnen. Diese Speicherbereiche werden unter Linux im o eigens daf¨r entwickelten tmpfs als Dateien allokiert. Mehrere Prozesse u k¨nnen so die gleiche Datei einblenden und sie als schnellen, gemeinsa- o men Speicher verwenden [32]. Eine Variante, um geteilten Speicher im ¨ tmpfs zu erstellen, w¨re beispielsweise das Offnen und Einblenden einer a normalen Datei im tmpfs mittels open() und mmap( . . . , MAP SHARED, . . . ). Technisch ¨quivalent, aber dem POSIX Standard [36] folgend, ist a allerdings die Abfolge shm open() und mmap( . . . ). Diese Form von Shared Memory wird in der SAP-Speicherverwaltung f¨r u User-Memory derzeit standardm¨ßig ab Linux-Kernel 2.4 und h¨her ein- a o gesetzt. u x Mit diesen letzten Ausf¨ hrungen sind die Voraussetzungen gegeben, um in den Abschnitten 3.2.2 und 3.2.3 die beiden derzeit m¨glichen Implemen- o Le tierungen der SAP-Speicherverwaltung verstehen zu k¨nnen. Zuvor jedoch o geben wir eine Einf¨hrung in die Probleme der Speicherverwaltung aus Sicht u des SAP ABAP-Applikationsserver und stellen die Anforderungen des SAP- pp Systems an die Speicherverwaltung des Betriebssystems dar, wie sie sich aus logischer Sicht, d.h. der Sicht der Anwender, ergeben. sU 3.2 SAP-Speicherverwaltung f¨r die Linux Plattform u Der SAP ABAP-Applikationsserver geh¨rt sicherlich zu der Sorte von Anwen- o dungen, die pro Prozess einen sehr hohen Speicherbedarf besitzen, s. S. 114. Die Quellen dieses Speicherbedarfs liegen zum einen in den Datenmengen, die jeder SAP-Anwender f¨r seine Arbeit ben¨tigt und die heute f¨r einen u o u gegebenen Zeitpunkt oftmals im GigaByte-Bereich liegen. Eine andere Quelle sind die steigenden Anforderungen der neuen SAP-Versionen selbst. Hier ist insbesondere die Unicode-F¨higkeit zu nennen, s. Abschnitt 4.3.3. a Auf 64-Bit-Systemen steht dem SAP Applikationsserver hinreichend virtu- eller Adressraum zu Verf¨gung, so dass auf solchen Systemen der Fokus auf der u effizienten Nutzung des physikalischen Speichers liegt. Bei 32-Bit Systemen, die unter Linux noch h¨ufig zum Einsatz kommen, liegt die Problematik je- a doch an anderer Stelle: Die Gr¨ße des verf¨gbaren virtuellen Adressraums o u ist hier die zentrale Beschr¨nkung. Verfahren, um diesen Engpaß zu beseiti- a gen, sind also notwendig. Ein Ansatz ist das sogenannte neue oder map Verfahren f¨r SAP auf Linux, das weiter unten im Detail beschrieben wird. u
  • 10. F -X C h a n ge F -X C h a n ge PD PD ! ! W W O O N N y y bu bu 122 3 SAP Memory Management f¨r Linux u to to k k lic lic C C w w m m w w w w o o .d o .c .d o .c c u -tr a c k c u -tr a c k 3.2.1 Logische Anforderungen an die SAP-Speicherverwaltung Das in Abschnitt 2.1.3 beschriebene Workprozess-Multiplexing versetzt das SAP-System zum einen in die Lage, mit einer begrenzten Menge an Work- prozessen eine deutlich gr¨ßere Anzahl von Anwendern zu bedienen, bringt o aber zum anderen Probleme mit sich, wie sie auch Betriebssysteme haben, die Multi-Tasking-F¨higkeiten besitzen: Da ein Workprozess (analog: eine CPU) a im Laufe der Zeit f¨r verschiedene User (analog: verschiedene Tasks) aktiv ist, u m¨ssen vor dem User-Wechsel (analog: Task-Switch) fl¨ chtige Daten gesichert u u werden. Bei dem SAP-System z¨hlen zu diesen fl¨chtigen Daten vor allem die a u Ergebnisse von Berechnungen und Auswertungen der ausgef¨hrten ABAP- u Programme. Die Gr¨ßenordnung dieser Daten kann in heutigen Anwendun- o gen leicht im GigaByte-Bereich liegen, wenn z.B. umfangreiche Datenbank- Tabellen eingelesen und ausgewertet werden m¨ssen. Im SAP-Sprachgebrauch u bilden diese Daten einen Teil des User-Contexts. Wenn ein SAP-Work- prozess einem User zugeteilt wird, muss er gleichzeitig Informationen erhal- ten, wie er auf den zugeh¨rigen User-Context zugreifen kann (Roll-In). Bei o ¨ u x der Beendigung der Arbeit f¨r diesen User m¨ssen die fl¨chtigen Daten des u u User-Contexts gegen das Uberschreiben durch die Daten des n¨chsten Users gesch¨tzt werden (Roll-Out). u a Le Diese Vorg¨nge k¨nnen grunds¨tzlich auf verschiedene Arten realisiert wer- a o a den. Allen Verfahren gemeinsam sind folgende Aspekte: • Die User-Contexte aller User m¨ ssen in einem gemeinsamen Bereich ab- u pp gelegt werden. In der SAP-Terminologie findet man mitunter den Begriff des User-Memory f¨r diesen Bereich. u • Dieser Bereich soll f¨ r alle Work-Prozesse gemeinsam zugreifbar sein. Er u ist also kein exklusiver Bereich eines Workprozesses. sU Dieser letzte Aspekt impliziert, dass das User-Memory aus Effizienzgr¨ nden u mittels einer Variante des oben beschriebenen Shared Memories implemen- tiert werden sollte. Welche von SAP gew¨hlt wurde, h¨ngt von der gew¨hlten a a a Implementierung ab und wird weiter unten genauer beschrieben. Die Frage, wie die Daten des User-Contexts dem Workprozess bereitge- stellt werden k¨nnen (Roll-In), bleibt von der Art des Shared Memories aller- o dings unber¨hrt. Auch hier existieren mehrere M¨glichkeiten. Die einfachste u o Version kopiert die Daten aus dem User-Memory in spezielle Bereiche des Adressraums des Workprozesses. Dieser Ansatz ¨hnelt sehr stark der Imple- a mentierung von Task-Switches bei Betriebssystemen [22], die h¨ufig die Re- a gister der CPU in den Hauptspeicher sichern. Der Roll-Out kopiert dann die Daten in umgekehrter Richtung aus dem Workprozess in das User-Memory zur¨ck. u Im Bereich der Betriebssysteme hat dieser Ansatz seine Berechtigung, da die Register und der Hauptspeicher sich hinsichtlich Gr¨ße und Zugriffszeiten o stark unterscheiden. Der gleiche Ansatz macht im SAP-System heute aller- dings weniger Sinn, da er nur von einem Speicherbereich in einen anderen
  • 11. F -X C h a n ge F -X C h a n ge PD PD ! ! W W O O N N y y bu bu 3.2 SAP-Speicherverwaltung f¨ r die Linux Plattform u 123 to to k k lic lic C C w w m m w w w w o o .d o .c .d o .c c u -tr a c k c u -tr a c k kopiert. Dennoch wurde dieses Verfahren in fr¨hen SAP-Systemen (Versionen u kleiner R/3 3.0) verwendet, da der Kopiervorgang selbst von SAP kontrolliert werden kann. In den zu Beginn der 90er Jahre eingesetzten Maschinen war der Hauptspeicher eine knappe Ressource. Der Kopier-Vorgang konnte des- halb durch einen intelligenten Komprimierschritt erg¨nzt werden, der einen a Teil der Speicherlast eines SAP-Systems reduzierte. Minimale Reste dieses Kopier-Schrittes – derzeit von wenigen hundert KiloByte – finden sich aus historischen Gr¨nden immer noch im SAP-System. u In den heutigen Systemen ist der Hauptspeicher nicht mehr in vergleichba- rem Maße knapp. Das sehr zeitintensive Kopieren wird deshalb seit l¨ngerem a nicht mehr f¨r die Masse der Daten des User-Contexts eingesetzt. Die ele- u gantere und schnellere Methode arbeitet mit Pointern. Beim Roll-In wird – stark vereinfacht – ein Pointer auf den relevanten Bereich des User-Contexts gesetzt und uber diesen Pointer werden dann alle Zugriffe abgewickelt. Der ¨ Roll-Out entspricht dem Umsetzen bzw. zeitweisen Deaktivieren des Poin- ters. Dieser Ansatz ist – mit seinen im Folgenden besprochenen Varianten – die Grundlage aller heutigen Formen der Verwaltung des SAP-User-Memory. Shared Memory unter SAP x Le F¨r die Speicherung des User-Memory stehen auf einer Linux-Plattform u heute grunds¨tzlich die drei unter Abschnitt 3.1.3 beschriebenen Formen zur a Verf¨gung. In den ersten von SAP unterst¨tzen Linux-Distributionen, die u u pp auf dem Kernel 2.2 aufsetzten, stand allerdings das tmpfs noch nicht zur Verf¨gung. Somit musste das User-Memory entweder uber ein Datei-Mapping u ¨ oder uber das SysV Shared Memory realisiert werden. ¨ Das Datei-Mapping stellte anf¨nglich keine vollwertige L¨sung dar, da erst a o mit dem Linux-Kernel 2.4 das gemeinsame und nicht an eine Datei gebundene sU Mapping eingef¨hrt wurde. Genau diese Art ist jedoch f¨r das SAP-System u u – wie oben beschrieben – wesentlich. Es blieb damit nur die SysV-Variante. Aber auch hier ergaben sich Probleme. So ist z.B. in Unix-basierten Sys- temen die Anzahl der SysV-Segmente, s. S. 120, begrenzt. Die Zuteilung eines eigenen SysV-Segments zu einem SAP-User verbot sich damit von selbst. Die einzige M¨glichkeit, die f¨r auf Kernel 2.2-basierenden Systemen blieb, war o u die Zusammenfassung aller User-Contexte in ein SysV-Segment. In der SAP- Terminologie wird es auch als Extended Memory bezeichnet. Der im vorigen Abschnitt beschriebene Pointer auf den gerade ben¨tigten o User-Context zeigt damit auf einen Teil dieses SHM-Segments. Bei diesem Verfahren blendet ein SAP-Workprozess damit zwar alle User-Contexte in seinen eigenen virtuellen Adressraum ein, durch geeignete Schutzmechanismen wird aber verhindert, dass auf andere als den gerade aktuellen User-Context vom Workprozess zugegriffen werden kann. Abbildung 3.3 bringt die soeben beschriebene Situation ins Bild. Die ge- rade von einem Workprozess bearbeiteten User-Contexte sind ohne Schraffur dargestellt. Die anderen User-Contexte sind gesch¨tzt, so dass kein Zugriff u
  • 12. F -X C h a n ge F -X C h a n ge PD PD ! ! W W O O N N y y bu bu 124 3 SAP Memory Management f¨r Linux u to to k k lic lic C C w w m m w w w w o o .d o .c .d o .c c u -tr a c k c u -tr a c k x Le Abb. 3.3. Workprozesse und User-Contexte im alten Memory Management pp m¨glich ist. Ebenfalls eingezeichnet sind die SAP-Buffer (Nametab, Tabellen- o puffer, PXA, . . . ), die auch als (SysV) Shared Memory realisiert sind. Die Lage der zugeh¨rigen Segmente ist allerdings nicht maßstabsgerecht angege- o sU ben, sondern deutet nur die Existenz der Puffer an. Das Bild macht offensichtlich, dass in dieser Variante als begrenzender Fak- tor die Summe der User-Contexte auftritt. Diese Summe muss kleiner sein als der verf¨gbare virtuelle Adressraum eines SAP-Workprozesses. Nach dem auf u S. 116 Gesagten liegt die Gr¨ße des f¨r Shared Memory zug¨nglichen Berei- o u a ches auf 32-Bit Linux bei knapp unter 2 GByte. Davon muss nach der Abb. 3.3 noch der Platz f¨r die SAP-Buffer abgezogen werden, so dass typischerweise u von ca. 1 GByte f¨r alle User-Contexte im SAP-System zusammen ausgegan- u gen werden kann. Diese Restriktion ist f¨r moderne Systeme nat¨ rlich ein u u merkliches Problem. Eine denkbare L¨sungsm¨glichkeit k¨nnte in der Installation weiterer Ap- o o o plikationsserver auf einem Rechner bestehen. Da jeder Applikationsserver dann weniger User zu verarbeiten h¨tte, st¨nde jedem einzelnen User mehr a a Platz im Extended Memory bereit. Mit der Installation weitere Applikations- server werden aber auf der anderen Seite zahlreiche Komponenten dupliziert, z.B. die Puffer, so dass damit sicher mittelfristig kein echter Gewinn verbun- den ist.