Home
Red Hat Enterprise MRG 2 Realtime Referenzhandbuch
Contents
1. TCP Nagle Beispielapplikationen Beispielapplikationen von Ghost Protokollen geschrieben in C Sie k nnen diese Applikationen durch Rechtsklick von den folgenden Links herunterladen Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Kapitel 9 Gemeinsam verwendeter Speicher Einer der Hauptvorteile von Programm T hreads besteht darin dass alle in einem Prozesskontext erstellten Threads denselben Adressbereich verwenden Dies bedeutet dass sie auf alle Datenstrukturen zugreifen k nnen Allerdings ist es nicht immer ratsam dass Applikationen Threads verwenden die Adressbereiche gemeinsam verwenden Beispiele daf r sind ein verteiltes Entwicklungsteam oder die Gr e der entwickelten Applikation In diesem Fall m ssen separate Prozesse einen Teil des Adressbereichs gemeinsam verwenden Dies kann auf sowohl Red Hat Enterprise Linux Kernels als auch auf MRG Realtime Linux Kernels mittels Shared Memory gemeinsam verwendetem Speicher erfolgen Der urspr ngliche Mechanismus zur gemeinsamen Verwendung eines Speicherbereichs durch zwei Prozesse war der System V IPC shmem Satz an Aufrufen Diese Aufrufe sind zwar leistungsf hig aber recht kompliziert und in der berwiegenden Mehrheit der Anwendungsf lle zu m hselig Aus diesem Grund sind sie im MRG Realtime Kernel nicht l nger enthalten und sollten nicht mehr verwendet werden MRG Realtime verwendet POSIX Aufrufe an gemeinsam verwendeten Speicher wie shm_open und mmap K U W
2. S redhat Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Referenzhandbuch f r die Realtime Komponente von Red Hat Enterprise MRG Ausgabe 3 Lana Brindley Alison Young Cheryn Tan Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Referenzhandbuch f r die Realtime Komponente von Red Hat Enterprise MRG Ausgabe 3 Lana Brindley Red Hat Engineering Content Services Alison Young Red Hat Engineering Content Services Cheryn Tan Red Hat Engineering Content Services cheryntan redhat com Rechtlicher Hinweis Copyright 2012 Red Hat Inc This document is licensed by Red Hat under the Creative Commons Attribution ShareAlike 3 0 Unported License If you distribute this document or a modified version of it you must provide attribution to Red Hat Inc and provide a link to the original If the document is modified all Red Hat trademarks must be removed Red Hat as the licensor of this document waives the right to enforce and agrees not to assert Section 4d of CC BY SA to the fullest extent permitted by applicable law Red Hat Red Hat Enterprise Linux the Shadowman logo JBoss MetaMatrix Fedora the Infinity Logo and RHCE are trademarks of Red Hat Inc registered in the United States and other countries Linux is the registered trademark of Linus Torvalds in the United States and other countries Java is a registered trademark of Oracle and or its affiliates XFS is a trademark of Silicon Graphics Inte
3. dass alle Threads ihre Aufgaben erf llt haben ehe die Ausf hrung fortgesetzt werden kann 7 3 Condvars Eine Condvar oder Condition Variable Bedingungsvariable ist ein POSIX Thread Konstrukt das auf Erf llung einer bestimmten Bedingung wartet ehe fortgefahren wird In der Regel bezieht sich die signalisierte Bedingung auf den Zustand von Daten die der Thread sich mit einem anderen Thread teilt Eine Condvar kann zum Beispiel verwendet werden um zu signalisieren dass ein Dateneintrag in eine Bearbeitungswarteschlange platziert wurde und ein Thread der auf Daten in dieser Warteschlange wartet jetzt mit der Bearbeitung derselben fortfahren kann 7 4 Andere Synchronisationstypen Vor der Einf hrung von POSIX Threads wurde Thread Synchronisation zwischen Prozessen durchgef hrt Die g ngigsten Mechanismen waren die System V IPC Aufrufe an gemeinsam verwendeten Speicher Nachrichtenwarteschlangen und Semaphores Die Verwendung von System V IPC Aufrufen gilt jetzt als veraltet stattdessen werden POSIX T hread Aufrufe verwendet 27 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Kapitel 8 Sockets Ein Socket ist ein bidirektionaler Datentransfermechanismus Sie werden zur Ubertragung von Daten zwischen zwei Prozessen verwendet Die beiden Prozesse k nnen am selben System als Unix Domain oder Loopback Sockets laufen oder aber auf verschiedenen Systemen als Netzwerk Sockets Es existieren keine speziellen Optionen oder Einsc
4. Das oben aufgef hrte Beispiel beinhaltet einen Dateinamen einen Shell Befehl und eine Taste Alle werden nichtproportional fett dargestellt und alle k nnen dank des Kontextes leicht unterschieden werden Tastenkombinationen unterscheiden sich von einzelnen Tasten durch das Pluszeichen das die einzelnen Teile einer Tastenkombination miteinander verbindet Zum Beispiel Dr cken Sie Enter um den Befehl auszuf hren Dr cken Sie Strg Alt F2 um zu einem virtuellen Terminal zu wechseln Das erste Beispiel hebt die zu dr ckende Taste hervor Das zweite Beispiel hebt eine Tastenkombination hervor eine Gruppe von drei Tasten die gleichzeitig gedr ckt werden m ssen Falls Quellcode diskutiert wird werden Klassennamen Methoden Funktionen Variablennamen und R ckgabewerte die innerhalb eines Abschnitts erw hnt werden wie oben gezeigt nichtproportional fett dargestellt Zum Beispiel Zu dateiverwandten Klassen z hlen filesystem f r Dateisysteme file f r Dateien und dir f r Verzeichnisse Jede Klasse hat ihren eigenen Satz an Berechtigungen Proportional Fett Dies kennzeichnet W rter oder S tze die auf einem System vorkommen einschlie lich Applikationsnamen Text in Dialogfeldern beschriftete Schaltfl chen Bezeichnungen f r Auswahlk stchen und Radio Buttons berschriften von Men s und Untermen s Zum Beispiel W hlen Sie System Einstellungen Maus in der Hauptmen leiste aus um die Mauseinstellungen zu ff
5. MRG 2 Realtime Referenzhandbuch Arbeitsmenge Working Set bezeichnet Muss das Betriebssystem Speicher f r andere Prozesse freigeben kann es Seiten aus der Arbeitsmenge entfernen Geschieht dies so kommt es bei einem Verweis auf eine virtuelle Adresse innerhalb dieser Seite zu einem Seitenfehler und die Seite wird neu zugeordnet Verf gt das System ber extrem wenig physischen Speicher beginnt das sog Thrashing wobei der Prozess laufend Seiten von anderen Prozessen stiehlt und keinen Prozess mehr abschlie en l sst Die Statistiken des virtuellen Speichers k nnen durch berpr fung des pgfault Werts in der proc vmstat Datei beobachtet werden TLBs sind Hardware Caches von virtuellen Speicher bersetzungen Jeder Prozessorkern mit einem TLB pr ft das TLB parallel zur Initiierung eines Speicher Lesevorgangs eines Seitentabelleneintrags Ist der TLB Eintrag f r eine virtuelle Adresse g ltig so wird der Speicher Lesevorgang abgebrochen und der Wert im TLB wird f r die Adress bersetzung verwendet TLBs operieren nach dem Prinzip der Zugriffslokalit t Dies bedeutet wenn ein Code f r eine l ngere Zeitdauer in einer Speicherregion verweilt wie etwa Schleifen oder Aufruf bezogene Funktionen meiden die TLB Referenzen den Hauptspeicher f r die Adress bersetzungen Dies kann Bearbeitungszeiten wesentlich verk rzen Beim Schreiben von deterministischem und schnellem Code sollten Sie Funktionen verwenden die die Zugriffslokalit t w
6. Schreiben einer Multi Thread Applikation ist es wichtig die Maschinentopologie zu ber cksichtigen wenn man die Daten Dekomposition entwirft Die Topologie ist die Speicherhierarchie und umfasst CPU Caches und den NUMA Knoten Die enge gemeinsame Verwendung von Daten auf CPUs in verschiedenen Cache und NUMA Domains kann zu Durchsatzproblemen und Engp ssen f hren Konflikte k nnen zu drastischen Leistungsproblemen f hren Bei mancher Hardware unterliegt der Datenverkehr auf den verschiedenen Speicher Buses keinerlei Regeln zur Vorrangigkeit Pr fen Sie die verwendete Hardware daher stets um dies zu vermeiden Speicherzuweisungsfehler lassen sich auch mithilfe von CPU Affinit t Scheduling Richtlinien und Priorit ten nicht immer vermeiden Zeigt eine Applikation einen Leistungsabfall so kann es hilfreich sein zu pr fen ob dies Auswirkungen von Seitenfehlern sind Dazu gibt es verschiedene M glichkeiten aber eine einfache Methode ist es sich die Prozessinformationen im proc Verzeichnis anzusehen Nutzen Sie den cat Befehl zusammen mit der PID des gew nschten Prozesses um die proc PID stat Datei einzusehen Die relevanten Eintr ge in dieser Datei sind Feld 2 Dateiname der ausf hrbaren Datei Kapitel 2 Speicherzuweisung Feld 10 Anzahl kleiner Seitenfehler Feld 12 Anzahl gro er Seitenfehler Trifft ein Prozess auf einen Seitenfehler so werden alle seine Threads eingefroren bis der Kernel den Fehler handhabt Es gibt m
7. der Regel die bessere Option Falls sich die Komponenten jedoch Daten teilen oder h ufig kommunizieren so ist deren Ausf hrung als Threads innerhalb eines Adressbereichs in der Regel effizienter Anmerkung Weitere Informationen diesbez glich finden Sie auf den folgenden Handbuchseiten bzw in den folgenden B chern fork 2 exec 2 Programming with POSIX Threads David R Butenhof Addison Wesley ISBN 0 201 63392 2 Advanced Programming in the UNIX Environment Zweite Ausgabe W Richard Stevens und Stephen A Rago Addison Wesley ISBN 0 201 43307 9 POSIX Threads Programming Blaise Barney Lawrence Livermore National Laboratory 22 Kapitel 5 Prioritaten und Richtlinien Kapitel 5 Prioritaten und Richtlinien Alle Linux Threads besitzen eine der folgenden Scheduling Richtlinien SCHED_OTHER oder SCHED_NORMAL Die Standardrichtlinie SCHED_BATCH Ahnlich SCHED_OTHER jedoch mit Durchsatz Fokus SCHED_IDLE Eine niedrigere Prioritat als SCHED_OTHER SCHED_FIFO Eine First in First out Echtzeitrichtlinie SCHED_RR Eine Round Robin Echtzeitrichtlinie Die f r MRG Realtime entscheidenden Richtlinien sind SCHED_OTHER SCHED_FIFO und SCHED_RR Die standardm ige Scheduling Richtlinie f r Linux Threads ist SCHED_OTHER oder SCHED_NORMAL Beide besitzen eine dynamische Priorit t die basierend auf den Charakteristika des Threads ge ndert wird Ein weiterer Faktor der die Priorit t von
8. der sich abh ngig von den gegebenen Umst nden unterscheiden kann Zum Beispiel Um sich mit einer Remote Maschine via SSH zu verbinden geben Sie an einem Shell 01 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Prompt ssh username domain name ein Falls die Remote Maschine example com ist und Ihr Benutzername auf dieser Maschine John lautet geben Sie also ssh john example com ein Der Befehlmount o remount file system h ngt das angegebene Dateisystem wieder ein Um beispielsweise das home Dateisystem wieder einzuh ngen verwenden Sie den Befehlmount o remount home Um die Version des derzeit installierten Pakets zu sehen verwenden Sie den Befehl rpm q package Die Ausgabe sieht wie folgt aus package version release Beachten Sie die kursiv dargestellten Begriffe oben username domain name file system package version und release Jedes Wort ist ein Platzhalter entweder f r Text den Sie f r einen Befehl eingeben oder f r Text der vom System angezeigt wird Neben der Standardbenutzung f r die Darstellung des Titels eines Werks zeigt der Kursivdruck auch die erstmalige Verwendung eines neuen und wichtigen Begriffs an Zum Beispiel Publican ist ein DocBook Publishing System 1 2 Konventionen f r Seitenansprachen Ausgaben des Terminals und Ausz ge aus dem Quellcode werden visuell vom umliegenden Text hervorgehoben durch sogenannte Seitenansprachen auch Pull Quotes genannt Eine an das Terminal g
9. die Ausf hrung von Maschinencode Ein Socket ist die Verbindung zwischen dem Prozessor und dem Motherboard des Computers Das Socket ist die Stelle auf dem Motherboard an der ein Prozessor platziert wird Ein Einkern Prozessor Single Core besetzt physisch ein Socket und verf gt ber einen einzigen Kern Ein Vierkern Prozessor Quad Core besetzt physisch ein Socket und verf gt ber vier Kerne Bei der Entwicklung von Echtzeitapplikationen sollte die Anzahl an verf gbaren Kernen ber cksichtigt werden Zudem sollte beachtet werden wie Caches von den Kernen gemeinsam verwendet werden und wie die Kerne physisch verbunden sind Sind mehrere Kerne f r die Applikation verf gbar verwenden Sie Threads oder Prozesse um diese zu nutzen Ist ein Programm ohne Verwendung dieser Konstrukte geschrieben so l uft es jeweils nur auf einem Prozessor Mit einer Mehrkern Plattform k nnen die Vorteile genutzt werden die die Verwendung verschiedener Kerne f r verschiedene Arten von Operationen bietet 1 1 Caches Oft m ssen die verschiedenen Threads einer Applikation den Zugriff auf eine gemeinsam verwendete Ressource synchronisieren z B eine Datenstruktur Die Leistung kann in diesem Fall durch Kenntnisse des Cache Layouts des Systems verbessert werden Das Tuna Tool kann bei der Bestimmung des Cache Layout helfen Versuchen Sie miteinander interagierende Threads an bestimmte Kerne zu binden so dass sie den Cache gemeinsam verwenden Ein gemei
10. e Applikation oder besitzt sie eine gro e Daten Domain k nnen mlock Aufrufe zu Thrashing f hren wenn das System keinen Speicher f r andere Aufgaben zuordnen kann Hat die Applikation mit einem zeitsensiblen Bereich von Code zu tun kann ein zuvor erfolgter mlockall Aufruf gefolgt von einem munlockall Aufruf die Auslagerung im kritischen Abschnitt reduzieren Auch kann mlock auf einem Datenbereich angewendet werden der relativ statsich ist oder nur langsam w chst auf den jedoch ohne Seitenfehler zugegriffen werden muss Die Verwendung von mlock ist keine Garantie daf r dass es nicht zu Seitenfehlern kommt Es wird verwendet um sicherzustellen dass Daten im Speicher bleiben kann aber nicht sicherstellen dass diese auf derselben Seite bleiben Andere Funktionen wie move_pages und Speicherverdichter k nnen 13 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Daten trotz mlock verschieben Or Wittig OOOO Verwenden Sie mlock stets mit Vorsicht Die berm ige Verwendung kann zu einem out of memory OOM Fehler f hren Platzieren Sie nicht einfach einen mlockall Aufruf an den Start Ihrer Applikation Es empfiehlt sich nur die Daten und den Text des Echtzeitabschnitts der Applikation zu sperren Beispiel 2 2 Verwendung von mlock in einer Applikation Dieses Beispiel verwendet den mlock Aufruf in einer einfachen Applikation include lt stdio h gt include lt sys types h gt include lt sys mman h gt char alloc
11. einem Timestamp versehen werden m ssen Mithilfe eines einfachen Programms das den aktuellen Taktgeber 10 000 000 Mal nacheinander abliest k nnen Sie beobachten wie lange es dauert die verf gbaren Taktgeber abzulesen 46 Kapitel 15 Timestamping Beispiel 15 1 Vergleich des Zeitaufwands zum Ablesen der Hardware Uhren In diesem Beispiel ist der derzeit verwendete Taktgeber TSC wie die Ausgabe des cat Befehls zeigt Mithilfe des time Befehls k nnen Sie beobachten wie lange es dauert den Taktgeber 10 Millionen Mal abzulesen cat sys devices system clocksource clocksource current_clocksource tsc time clock_timing real Om0 601s user 0m0 592s sys 0m0 002s Anschlie end wird der Taktgeber auf HPET ge ndert um zu vergleichen wie lange es mit diesem Taktgeber dauert 10 Millionen Timestamps zu generieren echo hpet gt sys devices system clocksource clocksource current_clocksource cat sys devices system clocksource clocksource current_clocksource hpet time clock_timing real 0m12 263s user 0m12 197s sys 0m0 001s Dieselben Schritte werden schlie lich mit dem ACPI_PM Taktgeber wiederholt echo acpi_pm gt sys devices system clocksource clocksource current_clocksource cat sys devices system clocksource clocksource current_clocksource acpi_pm time clock_timing real 0m24 461s user 0m0 504s sys 0m23 776s Die time 1 Handbuchseite liefert detaillierte Informationen ber d
12. finden Sie auf der folgenden Handbuchseite und in folgendem Buch Tuna Benutzerhandbuch chrt 1 11 2 Preemption Ein Prozess kann freiwillig die CPU freigeben da er entweder fertig ist oder auf ein Ereignis wartet zum Beispiel auf Daten von der Festplatte Tastatureingaben oder ein Netzwerkpaket Ein Prozess kann auch unfreiwillig zur Freigabe der CPU gezwungen werden Dies wird als Preemption oder auch Prozessunterbrechung bezeichnet und erfolgt wenn ein Prozess mit h herer Priorit t die CPU verwenden will Preemption kann besonders negative Auswirkungen auf die Leistung haben und st ndige Preemption kann zu einem als Thrashing bezeichneten Zustand f hren bei dem Prozesse laufend unterbrochen werden und keinem Prozess die vollst ndige Ausf hrung gestattet wird Um einen einzelnen Prozess auf freiwillige und unfreiwillige Preemption zu pr fen sehen Sie sich die Inhalte von proc PID status an wobei PID die PID des Prozesses ist Der folgende Befehl pr ft die Preemption des Prozesses mit PID 1000 grep voluntary proc 1000 status voluntary_ctxt_switches 194529 none untar y Ete owt thes 195338 Das ndern der Priorit t einer Aufgabe kann dabei helfen unfreiwillige Preemption zu verringern Weitere Informationen diesbez glich finden Sie auf der folgenden Handbuchseite und in folgendem Buch Tuna Benutzerhandbuch grep 1 11 3 Verwendung von Bibliotheksaufrufen zur Einstellung der Pri
13. zur Installation und Optimierung der MRG Realtime Komponente von Red Hat Enterprise MRG Red Hat Enterprise MRG ist eine Hochleistungsplattform fur verteiltes Rechnen die aus drei Komponenten besteht 1 Messaging plattform bergreifendes und zuverl ssiges Hochleistungs Messaging unter Verwendung des Advanced Message Queuing Protocol AMQP Standards 2 Realtime Konsistent niedrige Latenz und berechenbare Reaktionszeiten f r Applikationen die Latenz im Bereich von Mikrosekunden erfordern 3 Grid Verteiltes High Throughput Computing HTC und High Performance Computing HPC Alle drei Komponenten von Red Hat Enterprise MRG sind f r den Einsatz mit der Plattform konzipiert worden k nnen jedoch auch separat verwendet werden MRG Realtime Zahlreiche Branchen und Organisationen ben tigen extrem hochleistungsf hige Rechenumgebungen sowie eine niedrige und berechenbare Latenz insbesondere die Finanz und Telekommunikationsbranche Latenz oder Reaktionszeit ist definiert als die Zeit zwischen einem Ereignis und der Systemreaktion darauf und wird in der Regel in Mikrosekunden us gemessen F r die meisten in einer Linux Umgebung laufenden Applikationen kann eine einfache Leistungsoptimierung die Latenz in ausreichendem Ma e verbessern F r diejenigen Branchen jedoch in denen Latenz nicht nur gering sondern auch berechenbar und vorhersehbar sein muss hat Red Hat jetzt einen drop in Kernel Ersatz entwickelt der diesen A
14. 5 524s user 0m0 451s sys 0m24 932s time clock_timing_monotonic_coarse real O0m0 119s user 0m0 117s sys 0m0 001s die Zeit die der Kernel damit verbringt die vom Benutzerprozess erforderlichen Aufgaben auszuf hren erheblich geringer wenn _COARSE Uhren verwendet werden Dies wird besonders deutlich bei den Werten der ACPI_PM Uhr was darauf hindeutet dass die _COARSE Varianten von POSIX Uhren im Vergleich zu Uhren mit hohem Ableseaufwand erhebliche Leistungsvorteile bieten 52 Kapitel 16 Weitere Informationen Kapitel 16 Weitere Informationen 16 1 Melden von Fehlern Fehlerdiagnose Bevor Sie eine Fehlermeldung erstatten befolgen Sie diese Schritte um festzustellen wo die eigentliche Fehlerursache liegt Dies ist beraus hilfreich bei der Fehlerbehebung 1 Stellen Sie sicher dass Sie die aktuellste Version des Red Hat Enterprise Linux 6 Kernels verwenden und booten Sie diesen vom grub Men Versuchen Sie dann das Problem mit dem Standard Kernel zu reproduzieren Falls das Problem nach wie vor auftritt melden Sie den Fehler f r Red Hat Enterprise Linux 6 NICHT f r MRG Realtime 2 Falls das Problem bei Verwendung des Standard Kernels nicht auftritt so ist der Fehler wahrscheinlich ein Ergebnis sp terer nderungen in entweder a dem Upstream Kernel auf dem MRG Realtime basiert Zum Beispiel basiert Red Hat Enterprise Linux 6 auf Kernel Version 2 6 32 und MRG Realtime basiert auf 3 2 b MRG Realtime spez
15. Auslastung Seiten von einer Applikation an eine andere geben kann Dies kann nachteilige Folgen f r System haben die deterministisches Verhalten ben tigen Anweisungen die normalerweise in einer festgesetzten Zeitspanne ausgef hrt werden k nnen unter Umst nden mehr Zeit ben tigen da ein Seitenfehler ausgel st wurde 2 1 Demand Paging Bei Linux durchlaufen alle durch ein Programm generierten Speicheradressen einen Mechanismus zur Adress bersetzung im Prozessor Die Adressen werden von einer prozessspezifischen virtuellen Adresse in eine physische Speicheradresse konvertiert Man spricht dann von virtuellem Speicher Physical Physical Memory Addresses Virtual Addresses Processor Translation Lookaside Buffers TLBs Address Translation Mechanism Page Tables Tal Abbildung 2 1 Virtuelles Speichersystem unter MRG Realtime Die beiden Hauptkomponenten in diesem bersetzungsmechanismus sind Seitentabellen und Translation Lookaside Buffers bersetzungspuffer kurz TLBs Seitentabellen sind Tabellen auf mehreren Ebenen im physischen Speicher die Zuordnungen von virtuellem Speicher zu physischem Speicher enthalten Diese Zuordnungen sind f r die Hardware zur bersetzung virtuellen Speichers im Prozessor lesbar TLBs sind Caches f r Seitentabellen bersetzungen Wurde einem Seitentabelleneintrag eine physische Adresse zugewiesen wird dieser als lokale 11 Red Hat Enterprise
16. Dinge die sonst leicht bersehen werden k nnen Konfigurations nderungen die nur f r die aktuelle Sitzung gelten oder Dienste f r die ein Neustart n tig ist bevor eine Aktualisierung wirksam wird Das Ignorieren von Wichtig Schauk sten w rde keinen Datenverlust verursachen kann aber unter Umst nden zu rgernissen und Frustration f hren Wahrscheinlichkeit zu Datenverlust AD HT Eine Warnung sollte nicht ignoriert werden Das Ignorieren von Warnungen f hrt mit hoher Red Hat Enterprise MRG 2 Realtime Referenzhandbuch 2 Hilfe bekommen und Feedback geben 2 1 Brauchen Sie Hilfe Falls Sie Schwierigkeiten mit einer der in diesem Handbuch beschriebenen Prozeduren haben eine Knowledgebase bestehend aus Artikeln rund um technischen Support fur Red Hat Produkte durchsuchen oder zu durchst bern einen Support Case bei Red Hat Global Support Services GSS einreichen auf weitere Produktdokumentationen zugreifen Red Hat unterh lt au erdem eine Vielzahl von Mailing Listen zur Diskussion ber Red Hat Software und Technologie Eine bersicht der ffentlich verf gbaren Listen finden Sie unter zum Abonnieren dieser Liste oder um auf deren Archiv zuzugreifen 2 2 Wir freuen uns auf Ihr Feedback Wenn Sie einen Fehler in diesem Handbuch finden oder eine Idee haben wie dieses verbessert werden k nnte freuen wir uns ber Ihr Feedback Reichen Sie einen Fehlerbericht f r die Komponente Red Hat Vergewissern Si
17. O APIC mit welchem Ger t und mit welcher bestimmten Interrupt Leitung innerhalb dieses Ger ts verbunden ist Zun chst ist da die ACPI DSDT Advanced Configuration and Power Interface Differentiated System Description Table die Information zur spezifischen Verkabelung des Host System Motherboards und Peripherie Komponenten beinhaltet Des Weiteren liefert ein Ger t bestimmte Informationen zu seinen verf gbaren Interrupt Quellen Gemeinsam bieten diese beiden Datens tze Informationen zur allgemeinen Interrupt Hierarchie M glich sind komplexe APIC basierte Strategien zur Interrupt Verwaltung bei denen die System APICs in Hierarchien verbunden sind und Interrupts in lastverteilter Weise an CPUs geliefert werden statt eine bestimmte CPU oder einen Satz an CPUs zum Ziel zu haben 19 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Teil Il Applikationsarchitektur Der MRG Realtime Kernel bietet eine Reihe von Konstrukten die Softwareentwicklern dabei helfen sollen Applikationen mit den h chst m glichen Leistungsstandards zu entwickeln Dieser Abschnitt behandelt diese Features und deren Verwendung In diesem und den n chsten Abschnitten werden Anleitungen dazu geliefert wie der MRG Realtime Kernel direkt optimiert werden kann Die meisten nderungen k nnen auch mithilfe eines Tools namens Tuna durchgef hrt werden Es verf gt ber eine grafische Oberfl che oder kann ber die Befehlszeile ausgef hrt werden Tuna kann zur
18. OTONIC ins CLOCK_MONOTONIC_COARSE 999848ns about ims 15 2 3 Verwenden von C Code zum Vergleich der Zeitaufl sung Mithilfe des folgenden Codes ist es m glich das Format der Daten zu beobachten die von der CLOCK_MONOTONIC POSIX Uhr gelesen werden Alle neun Ziffern im tv_nsec Feld der timespec Struktur sind bedeutsam da die Uhr eine Nanosekundenaufl sung hat Die Beispielfunktion namens clock_test c sieht folgenderma en aus include lt stdio h gt include lt stdlib h gt include lt time h gt main ae int i struct timespec ts for i 0 i lt 5 i clock_gettime CLOCK_MONOTONIC amp ts printf ld ld n ts tv_sec ts tv_nsec usleep 200 50 Kapitel 15 Timestamping Beispiel 15 4 Beispielausgabe von clock_test c und clock_test_coarse c Wie im Code oben festgelegt liest die Funktion die Uhr f nf Mal im Abstand von jeweils 200 Mikrosekunden cc clock_test c o clock_test lrt clock_test 218449 986980853 218449 987330908 218449 987590716 218449 987849549 218449 988108248 Nehmen Sie nun denselben Quellcode benennen ihn um in clock_test_coarse c und ersetzen CLOCK_MONOTONIC durch CLOCK_MONOTONIC_COARSE Das Ergebnis sieht dann in etwa folgenderma en aus clock_test_coarse 218550 844862154 218550 844862154 218550 844862154 218550 845862154 218550 845862154 Die _COARSE Uhren haben eine Aufl sung von einer Millisekunde daher sind nur die ersten drei Ziffern des tv_n
19. PUO CPU1 0 13072311 6 IO APIC edge timer le 18351 0 IO APIC edge 18042 8 190 0 IO APIC edge rtco 9 118508 5415 IO APIC fasteoi acpi 12 747529 86120 IO APIC edge 18042 14 1163648 0 IO APIC edge ata_piix 15 0 0 IO APIC edge ata_piix 16 12681226 126932 IO APIC fasteoi ahci uhci_hcd usb2 radeon yenta etho aly 3717841 0 IO APIC fasteoi uhci_hcd usb3 HDA iwl3945 18 0 0 IO APIC fasteoi uhci_hcd usb4 19 577 68 IO APIC fasteoi ehci_hcd usb1 uhci_hcd usb5 NMI 6 0 Non maskable interrupts LOC 3755270 9388684 Local timer interrupts RES 1184857 2497600 Rescheduling interrupts CAL 12471 2914 function call interrupts TLB 14555 15567 TLB shootdowns TRM 0 0 Thermal event interrupts SPU 0 0 Spurious interrupts ERR 0 MIS 0 Die Ausgabe zeigt die verschiedenen Arten von Hardware Interrupts wie viele empfangen wurden welche CPU Ziel des Interrupts war sowie das Ger t das den Interrupt generiert hat 3 1 Level Signalled Interrupts Level Signalled Interrupts verwenden eine spezielle Interrupt Leitung zur bertragung von elektrischen Spannungen Diese spezielle Leitung kann eine von zwei Spannungen bertragen um eine bin re 1 oder bin re O darzustellen Wurde ein Signal ber die Leitung gesendet so bleibt der Status erhalten bis die CPU diesen ausdr cklich zur cksetzt Dies erfolgt indem die CPU das generierende Ger t dazu auffordert die Leitung wieder freizugeben Dies erm glicht es einer Reihe von Ger
20. RG 2 Realtime Referenzhandbuch include lt stdio h gt include lt unistd h gt include lt sched h gt main int argc char argv pid_t pid int policy if argc lt 2 pid 0 else pid atoi argv 1 printf Scheduler Policy for PID d gt pid policy sched_getscheduler pid switch policy case SCHED_OTHER printf SCHED_OTHER break case SCHED_RR printf SCHED_RR break case SCHED_FIFO printf SCHED_FIFO break default printf Unknown Dr 11 3 2 sched_setscheduler Die Scheduler Richtlinie und andere Parameter k nnen mithilfe der sched_setscheduler Funktion eingestellt werden Derzeit besitzen Echtzeitrichtlinien einen Parameter sched_priority Dieser Parameter wird zur Anpassung der Prozesspriorit t verwendet Die sched_setscheduler Funktion erfordert drei Parameter in der Form sched_setscheduler pid_t pid int policy const struct sched_param sp K Amer U Die sched_setscheduler 2 Handbuchseite f hrt alle m glichen R ckgabewerte von sched_setscheduler auf einschlie lich der Fehlercodes Ist pid null so wird die sched_setscheduler Funktion auf den aufrufenden Prozess angewendet Der folgende Codeausschnitt setzt die Scheduler Richtlinie des aktuellen Prozesses auf SCHED_FIFO und die Priorit t auf 50 38 Kapitel 11 Einstellen des Schedulers pm _ a a _ struct sched_param sp sched_priority 50 int ret ret sched_set
21. SCHED_OTHER Threads beeinflusst ist deren Nice Wert Der Nice Wert ist eine Zahl zwischen 20 h chste Priorit t und 19 niedrigste Priorit t Standardm ig besitzen SCHED_OTHER Threads einen Nice Wert von 0 Die Anpassung des Nice Werts ndert die Art und Weise wie der Thread gehandhabt wird Threads mit einer SCHED_FIFO Richtlinie laufen vor SCHED_OTHER Aufgaben Statt Nice Werten verwendet SCHED_FIFO eine feste Priorit t zwischen 1 am niedrigsten und 99 am h chsten Ein SCHED_FIFO Thread mit einer Priorit t 1 wird immer vor einem SCHED_OTHER Thread eingereiht Die SCHED_RR Richtlinie ist der SCHED_FIFO Richtlinie sehr hnlich Bei der SCHED_RR Richtlinie werden Threads gleicher Priorit t nach Round Robin Verfahren also reihum eingeplant In der Regel wird SCHED_FIFO der Vorzug vor SCHED_RR gegeben SCHED_FIFO und SCHED_RR Threads werden ausgef hrt bis eines der folgenden Ereignisse eintritt Der Thread pausiert oder beginnt auf ein Ereignis zu warten Ein Echtzeit Thread mit h herer Priorit t ist bereit zu laufen Findet keines dieser Ereignisse statt so laufen die Threads auf unbestimmte Dauer auf diesem Prozessor und Threads mit niedrigerer Priorit t haben keine Chance zu laufen Dies kann dazu f hren dass Systemdienst Threads nicht laufen und Operationen wie Speicherauslagerung und Dateisystem Flushing nicht wie erwartet erfolgen Tabelle 5 1 Richtlinienpriorit ten Richtlinie Standardm iger Niedri
22. _workbuf int size char ptr allocate some memory ptr malloc size return NULL on failure if ptr NULL return NULL lock this buffer into RAM if mlock ptr size free ptr return NULL return ptr void free_workbuf char ptr int size unlock the address range munlock ptr size free the memory free ptr 14 Kapitel 2 Speicherzuweisung Anmerkung Weitere Informationen diesbez glich finden Sie auf den folgenden Handbuchseiten mlock 2 mlock 3 gt mlockall 2 move_pages 2 15 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Kapitel 3 Hardware Interrupts Hardware Interrupts werden von Ger ten zur Mitteilung dar ber verwendet dass sie die Aufmerksamkeit des Betriebssystems ben tigen Einige g ngige Beispiele sind etwa die Festplatte die signalisiert dass eine Reihe von Datenblocks gelesen wurde oder dass ein Netzwerkger t einen Puffer mit Netzwerkpaketen verarbeitet hat Interrupts werden auch f r asynchrone Ereignisse verwendet so etwa f r die Ankunft neuer Daten von einem externen Netzwerk Hardware Interrupts werden mittels eines kleinen Netzwerks von Interrupt Management und Routing Ger ten direkt an die CPU geschickt Dieses Kapitel beschreibt die verschiedenen Arten von Interrupts und deren Verarbeitung durch die Hardware und das Betriebssystem Es geht weiterhin darauf ein wie der MRG Realtime Kernel sich
23. ahren z B durch Verwendung von Schleifen statt Rekursion Kann Rekursion nicht vermieden werden so platzieren Sie den Rekursionsaufruf ans Ende der Funktion Dies wird als Endrekursion bezeichnet und bewirkt dass der Code in einem relativ kleinen Speicherbereich arbeitet und den Abruf von Tabellen bersetzungen vom Hauptspeicher weitgehend meidet Eine potenzielle Quelle von Speicherlatenz ist der kleine Seitenfehler Dazu kommt es wenn ein Prozess versucht auf einen Teil des Speichers zuzugreifen ehe dieser initialisiert wurde In diesem Fall muss das System einige Operationen durchf hren um die Speicherzuordnungen oder andere Verwaltungsstrukturen zu f llen Die Schwere eines kleinen Seitenfehlers h ngt von der Systemauslastung und anderen Faktoren ab er hat aber in der Regel nur eine kurze und vernachl ssigbare Auswirkung Eine schwerere Speicherlatenz wird von einem gro en Seitenfehler verursacht Dazu kommt es wenn das System Speicherpuffer mit der Festplatte synchronisieren muss Speicherseiten anderer Prozesse auslagern muss oder andere Eingabe Ausgabe Aktivit ten zur Freigabe von Speicher durchf hren muss Dies ist der Fall wenn der Prozessor auf eine Adresse des virtuellen Speichers verweist der noch keine physische Seite zugewiesen wurde Beim Verweis auf eine leere Seite l st der Prozessor einen Fehler aus und weist den Kernel Code an eine Seite zuzuweisen und zur ckzukehren wodurch die Latenz dramatisch ansteigt Beim
24. bel In den meisten Situationen jedoch f hrt dies zu unerw nschten und unn tigen Latenzen Um dies zu verhindern sollte der Pool von Prozessen oder Threads stets vorab erstellt werden ehe diese von einem Dienst zur Bearbeitung einer Anfrage 42 Kapitel 13 Mmap Kapitel 13 Mmap Der mmap Systemaufruf gestattet die Abbildung einer Datei oder von Teilen einer Datei im Speicher Dies gestattet die nderung der Dateiinhalte mithilfe einer Speicheroperation und vermeidet Systemaufrufe sowie Ein Ausgabeoperationen Synchronisieren Sie nderungen stets wieder mit der Festplatte und ber cksichtigen Sie einen m glicherweise h ngenden Prozess der zu Datenverlust f hren k nnten Anmerkung Weitere Informationen diesbez glich finden Sie auf den folgenden Handbuchseiten und in folgendem Buch mmap 2 Linux System Programming von Robert Love 43 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Kapitel 14 Systemaufrufe 14 1 sched_yield Die sched_yield Funktion war urspr nglich darauf ausgelegt einen Prozessor dazu zu veranlassen einen anderen Prozess zu w hlen als den derzeit laufenden Diese Art von Aufruf ist jedoch fehleranf llig wenn der Aufruf aus einer schlecht programmierten Applikation heraus ausgef hrt wird Wird die sched_yield Funktion innerhalb von Prozessen mit Echtzeitpriorit ten verwendet so kann es zu unerwartetem Verhalten kommen Der Prozess der sched_yield aufgerufen hat wird ans En
25. clude lt time h gt main t int rc long i struct timespec ts for i 0 i lt 10000000 i rc clock_gettime CLOCK_MONOTONIC amp ts J Sie k nnen das obige Beispiel weiter verbessern indem Sie beispielsweise Funktionen einf gen um den Wiedergabewert von clock_gettime zu pr fen um den Wert der rc Variable zu pr fen oder 48 Kapitel 15 Timestamping um zu gew hrleisten dass dem Inhalt der ts Struktur vertraut werden kann Auf der clock_gettime Handbuchseite finden Sie weitere Informationen ber das Schreiben zuverl ssigerer Applikationen Wie OOO Programme die die clock_gettime Funktion nutzen m ssen mit der rt Bibliothek verkn pft werden indem Irt zur gcc Befehlszeile hinzugef gt wird cc clock_timing c o clock_timing Irt 15 2 1 CLOCK_MONOTONIC_COARSE und CLOCK_REALTIME_COARSE Die Funktionen wie z B clock_gettime und gettimeofday haben eine Entsprechung im Kernel in Form eines Systemaufrufs Wenn der Benutzerprozess clock_gettime aufruft dann ruft die entsprechende C Bibliothek glibc den sys_clock_gettime Systemaufruf auf der die angeforderte Operation ausf hrt und das Ergebnis an das Benutzerprogramm zur ckgibt Dieser Kontextwechsel von der Benutzerapplikation zum Kernel ist jedoch mit Aufwand verbunden Zwar ist dieser Aufwand an sich gering falls die Operation jedoch tausendfach wiederholt wird kann sich der kumulierte Aufwand auf die Leistung der Applika
26. de der Warteschlange von Prozessen mit derselben Priorit t verschoben Geschieht dies in einer Situation in der keine anderen Prozesse mit derselben Priorit t laufen so l uft der Prozess der sched_yield aufgerufen hat weiter Ist die Priorit t dieses Prozesses hoch so kann es m glicherweise zu einem Busy Loop einer aktive Warteschleife kommen wodurch die Maschine nicht benutzbar wird Im Allgemeinen sollte sched_yield nicht auf Echtzeitprozessen verwendet werden 14 2 getrusage Die getrusage Funktion wird zum Abruf wichtiger Informationen von einem bestimmten Prozess oder dessen Threads verwendet Dies liefert nicht alle verf gbaren Informationen meldet jedoch Informationen zu Kontextwechseln und Seitenfehlern 44 Kapitel 15 Timestamping Kapitel 15 Timestamping 15 1 Hardware Uhren Multiprozessor Systeme wie NUMA oder SMP haben mehrere Instanzen von Taktgebern Die Art und Weise wie diese Uhren interagieren und wie sie auf Systemereignisse wie z B CPU Frequenzskalierung oder Eintritt in Energiesparmodi reagieren entscheidet ob sie als Taktgeber f r den Realtime Kernel geeignet sind Beim Systemstart erkennt der Kernel die verf gbaren Taktgeber und w hlt einen davoon zur Verwendung aus Der bevorzugte Taktgeber ist der Time Stamp Counter TSC falls dieser nicht verf gbar ist so ist der High Precision Event Timer HPET die zweitbeste Option Allerdings verf gen nicht alle Systeme ber HPET Taktgeber u
27. dieser Probleme beheben und eine bessere Kontrolle von Latenzen erm glichen Affinit t wird als als Bitmaske dargestellt wobei jedes Bit in der Maske f r einen CPU Kern steht Ist das Bit auf 1 gesetzt dann kann der Thread oder Interrupt auf diesem Kern laufen ist es auf O gesetzt darf der Thread oder Interrupt nicht auf dem Kern laufen Standardm ig ist die Affinit ts Bitmaske auf Einsen gesetzt was bedeutet dass der Thread oder Interrupt auf jedem Kern des Systems laufen darf Standardm ig k nnen Prozesse auf jeder CPU laufen Allerdings k nnen Prozesse angewiesen werden auf einer vorab bestimmten Auswahl an CPUs zu laufen indem die Affinit t des Prozesses ge ndert wird Untergeordnete Prozesse erben die CPU Affinit t der innen bergeordneten Prozesse Sehen Sie nachfolgend einige der blichen Affinit tseinstellungen Ein CPU Kern wird f r alle Systemprozesse reserviert und der Applikation wird gestattet auf dem Rest der Kerne zu laufen mit einem CPU Kern pro Applikations Thread Ein Applikations Thread und ein einziger Kernel Thread wie etwa Netzwerk Softirg oder einen Treiber Thread wird auf derselben CPU gestattet Erzeuger und Verbraucher Threads werden auf jeder CPU gruppiert Es wird empfohlen Affinit tseinstellungen gemeinsam mit dem Programm zu entwerfen um sie besser auf das erwartete Verhalten abzustimmen Zur Optimierung von Affinit ten auf einem Echtzeitsystem wird blicherweise bestimmt wie
28. direkt in die CPU verwenden und in der Regel nicht maskiert werden k nnen Wird ein SMI empfangen so startet die CPU den System Management Mode SMM In diesem Modus wird eine Handler Routine auf niedriger Ebene ausgef hrt um die SMIs zu handhaben Der SMM wird in der Regel direkt von der Systemverwaltungs Firmware oft dem BIOS oder EFI bereitgestellt SMIs werden am h ufigsten zur Emulation veralteter Hardware verwendet Ein g ngiges Beispiel ist die Emulation eines Floppy Laufwerks Ist kein Floppy Laufwerk am System angeschlossen so kann stattdessen eine virtualisierte netzwerkverwaltete Emulation verwendet werden Versucht das Betriebssystem auf das Floppy Laufwerk zuzugreifen so wird ein SMI ausgel st und der Handler liefert dem Betriebssystem stattdessen ein emuliertes Ger t Das Betriebssystem behandelt die Emulation dann wie das echte veraltete Ger t SMls k nnen sich nachteilig auf MRG Realtime auswirken weil diese ohne direkte Beteiligung des Betriebssystems stattfinden Eine schlecht geschriebene SMI Handling Routine kann viele Millisekunden an CPU Zeit verbrauchen und das Betriebssystem kann den Handler nicht unterbrechen falls dies n tig ist Diese Situation f hrt zu periodisch hohen Latenzen in einem ansonsten gut optimierten schnell reagierenden System Da SMI Handler leider von Herstellern zur Steuerung der CPU Temperatur und Ventilation verwendet werden k nnen ist es nicht m glich sie zu deaktivieren Stattdes
29. duler Richtlinie verwendet Der einzig m gliche Fehler bei diesem Aufruf w rde auftreten falls die angegebene Scheduler Richtlinie dem System unbekannt ist In diesem Fall gibt die Funktion 1 aus und errno ist auf EINVAL gesetzt 39 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch include lt stdio h gt include lt unistd h gt include lt sched h gt main printf Valid priority range for SCHED_OTHER d d T sched_get_priority_min SCHED_OTHER sched_get_priority_max SCHED_OTHER printf Valid priority range for SCHED_FIFO d d n Ty sched_get_priority_min SCHED_FIFO sched_get_priority_max SCHED_FIFO printf Valid priority range for SCHED_RR d d sched_get_priority_min SCHED_RR sched_get_priority_max SCHED_RR K Amer U Bei SCHED_FIFO und SCHED_RR kann es sich um eine beliebige Zahl zwischen 1 und 99 handeln POSIX ber cksichtigt diesen Bereich nicht garantiert portable Programme jedoch sollten diese Aufrufe verwenden 11 3 5 sched_rr_get_interval Die SCHED_RR Richtlinie unterscheidet sich leicht von der SCHED_FIFO Richtlinie SCHED_RR weist nebenl ufige Prozesse mit derselben Priorit t mittels Round Robin Verfahren zu Auf diese Weise wird jedem Prozess eine Zeitscheibe zugewiesen Die sched_rr_get_interval Funktion meldet die Zeitscheibe die jedem Prozess zugewiesen wurde Obwohl POSIX nur erfordert dass diese Funktion mit SCHED_RR Prozessen lau
30. e sich beim Einreichen eines Fehlerberichts dass Sie die Kennung des Handbuchs mit angeben Realtime_Reference_Guide Falls Sie uns einen Vorschlag zur Verbesserung der Dokumentation senden m chten sollten Sie hierzu m glichst genaue Angaben machen Wenn Sie einen Fehler gefunden haben geben Sie bitte die Nummer des Abschnitts und einen Ausschnitt des Textes an damit wir diesen leicht finden k nnen Teil I Hardware Teil I Hardware Die Auswahl und Konfiguration der richtigen Hardware ist bei der Einrichtung einer Echtzeitumgebung von entscheidender Bedeutung Hardware beeinflusst die Art und Weise wie ein System funktioniert System Management Interrupts CPU Cache Design und NUMA Nutzung k nnen allesamt unterschiedlich gehandhabt werden Hardware kann von Anbieter zu Anbieter variieren und nicht jede Hardware eignet sich fur Echtzeitumgebungen Fur weitere Informationen werfen Sie bitte einen Blick auf Bei der Einrichtung einer MRG Realtime Umgebung ist es wichtig dass die Applikation derart konzipiert ist dass sie mit der verf gbaren Hardware gut interagieren kann Diese Abschnitt enth lt Informationen ber die Art und Weise wie MRG Realtime mit der Hardware interagiert und worauf geachtet werden sollte Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Kapitel 1 Prozessorkerne Ein Prozessorkern ist eine physische zentrale Recheneinheit Central Processing Unit kurz CPU in einem Computer Kerne sind verantwortlich f r
31. ehrere Wege dieses Problem anzugehen wobei die beste L sung die Anpassung des Quellcodes zur Vermeidung von Seitenfehlern ist Beispiel 2 1 Verwenden der proc Datei zur Pr fung auf Seitenfehler Dieses Beispiel nutzt die proc Datei zur Pr fung auf Seitenfehler in einem laufenden Prozess Verwenden Sie den cat Befehl und eine Pipe Funktion um nur die zweite zehnte und zw lfte Zeile der proc PID stat Datei auszugeben cat proc 3366 stat cut d f2 10 12 bash 5389 In der Ausgabe oben ist PID 3366 bash und es wurden 5389 kleine Seitenfehler und keine gro en Seitenfehler gemeldet K neu U Weitere Informationen diesbez glich finden Sie in dem folgenden Buch Linux System Programming von Robert Love 2 2 Die Verwendung von mlock zur Vermeidung von Speicherfehlern Die mlock und mlockall Systemaufrufe teilen dem System mit dass nur ein bestimmter Speicherbereich verwendet werden darf und dass kein Speicher ausgelagert werden soll Wurde eine physische Seite also einmal zum Seitentabelleneintrag zugeordnet werden Verweise auf diese Seite nicht mehr zu Fehlern f hren Es gibt zwei Gruppen von mlock Systemaufrufen Die mlock und munlock Aufrufe sperren und entsperren einen spezifischen Adressbereich Die mlockall und munlockall Aufrufe sperren oder entsperren den gesamten Programmbereich Die Verwendung von mlock Aufrufen sollte genauestens gepr ft und mit Vorsicht eingesetzt werden Handelt es sich um eine gro
32. eitere Informationen diesbez glich finden Sie auf den folgenden Handbuchseiten shm_open 3 shm_overview 7 gt mmap 2 32 Kapitel 10 Gemeinsam verwendete Bibliotheken Kapitel 10 Gemeinsam verwendete Bibliotheken Dynamic Shared Objects DSOs werden als gemeinsam verwendete Bibliotheken bezeichnet und werden dazu verwendet um Code zwischen separaten Prozess Adressbereichen gemeinsam zu verwenden Die DSO werden einmalig vom 1d so Systemlader geladen Von dort werden sie dem Adressbereich von Prozessen zugeordnet die Symbole aus der Bibliothek ben tigen Ehe nicht die erste Referenz zu einem Symbol erfolgt kann dieses nicht evaluiert werden Die Evaluierung des Symbols erst dann wenn dieses referenziert wurde kann eine Latenzquelle sein Ursache hierf r ist die Tatsache dass Speicherseiten auf der Festplatte liegen k nnen und Caches invalidiert werden k nnen Die Evaluierung von Symbolen vorab ist eine sicherere Vorgehensweise und hilft dabei Latenzen zu verringern Die Aufl sung von Symbolen beim Programmstart kann die Programminitialisierung etwas verlangsamen Es vermeidet allerdings auch nicht deterministische Latenzen w hrend der Programmausf hrung die durch den Aufruf von Symbolen verursacht werden k nnen Symbolaufl sung beim Applikationsstart kann mittels der LD_BIND_NOW Umgebungsvariable erfolgen Die Einstellung von LD_BIND_NOW auf einen Wert ungleich Null fordert den Systemlader zum Aufruf aller nicht aufge
33. en aus Diese Auswahl zu berschreiben wird in der Regel nicht empfohlen es sei denn Sie sind sich ber die Auswirkungen im Klaren Obwohl TSC generell der bevorzugte Taktgeber ist hat er doch mehrere Nachteile Beispielsweise kann die TSC Uhr stehen bleiben wenn das System in einen Ruhezustand eintritt oder sie kann allm hlich nachgehen wenn ihre CPUs in tiefere C Zust nde Energiesparzust nde eintritt oder Operationen zur Geschwindigkeits oder Frequenzskalierung durchf hrt 45 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Sie k nnen diese Nachteile vom TSC jedoch umgehen indem Sie zus tzliche Kernel Boot Parameter konfigurieren Beispielsweise hindert der idle poll Parameter die Uhr am Eintritt in den Ruhezustand und der processor max_cstate 1 Parameter hindert die Uhr am Eintritt in tiefe C Zust nde Beachten Sie jedoch dass in beiden F llen der Energieverbrauch steigt da das System dauerhaft auf h chster Geschwindigkeit l uft K neu U Eine umfassende Liste der Taktgeber finden Sie im Kapitel Timing Measurements in dem Buch Understanding The Linux Kernel von Daniel P Bovet und Marco Cesati 15 1 1 Ablesen von Hardware Uhren Den TSC abzulesen bedeutet im Wesentlichen ein Register vom Prozessor zu lesen Die HPET Uhr abzulesen bedeutet einen Speicherbereich zu lesen Das Ablesen des TSC ist schneller und bietet somit einen deutlichen Leistungsvorteil wenn Tausende von Nachrichten pro Sekunde mit
34. esendete Ausgabe wird in den Schrifttyp nichtproportional Roman gesetzt und wie folgt dargestellt books Desktop documentation drafts mss photos stuff svn books_tests Desktop1 downloads images notes scripts svgs Ausz ge aus dem Quellcode werden ebenfalls in den Schrifttyp nichtproportional Roman gesetzt doch wird zus tztlich noch die Syntax hervorgehoben static int kvm_vm_ioctl_deassign_device struct kvm kvm struct kvm_assigned_pci_dev assigned_dev int r 0 struct kvm_assigned_dev_kernel match mutex_lock amp kvm gt lock match kvm_find_assigned_dev amp kvm gt arch assigned_dev_head assigned_dev gt assigned_dev_id if match printk KERN_INFO s device hasn t been assigned before so cannot be deassigned n __func__ r EINVAL goto out kvm_deassign_device kvm match kvm_free_assigned_device kvm match out mutex_unlock amp kvm gt lock return r 1 3 Anmerkungen und Warnungen Vorwort Zu guter Letzt verwenden wir drei visuelle Stile um die Aufmerksamkeit auf Informationen zu lenken die andernfalls vielleicht bersehen werden k nnten K U Eine Anmerkung ist ein Tipp ein abgek rztes Verfahren oder ein alternativer Ansatz f r die vorliegende Aufgabe Das Ignorieren von Anmerkungen sollte keine negativen Auswirkungen haben aber Sie verpassen so vielleicht einen Trick der Ihnen das Leben vereinfachen k nnte Wie TU Die Wichtig Schauk sten lenken die Aufmerksamkeit auf
35. fen muss kann die sched_rr_get_interval Funktion die Lange der Zeitscheibe f r jeden beliebigen Prozess unter Linux abrufen Die Informationen zur Zeitscheibe werden als timespec oder Anzahl an Sekunden oder Nanosekunden seit 00 00 00 GMT 1 Januar 1970 wiedergegeben struct timespec time_t tv_sec seconds long tv_nsec nanoseconds J Die sched_rr_get_interval Funktion ben tigt die PID des Prozesses und ein struct timespec 40 Kapitel 11 Einstellen des Schedulers include lt stdio h gt include lt sched h gt main struct timespec ts int ret real apps must check return values ret sched_rr_get_interval 0 amp ts printf Timeslice lu lu ts tv_sec ts tv_nsec Die folgenden Befehle f hren das Testprogramm sched_03 mit unterschiedlichen Richtlinien und Priorit ten aus Prozesse mit einer SCHED_FIFO Richtlinie geben eine Zeitscheibe von 0 Sekunden und 0 Nanosekunden wieder was soviel wie unbegrenzt bedeutet chrt o sched_03 Timeslice 0 38994072 chrt r 10 sched_03 Timeslice 0 99984800 chrt f 10 sched_03 Timeslice 0 0 41 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Kapitel 12 Erstellen von Threads und Prozessen Prozess und Thread Erstellung unterliegen der Systemauslastung und sind wesentlich fur die Zuweisung von Ressourcen und CPU Zeit In einigen Szenarien ist eine Verz gerung zwischen Ereignis und dessen Bearbeitung akzepta
36. ge ndert so dass sie nur noch auf CPU 1 laufen kann taskset p c 1 1000 pid 1000 s current affinity list 0 1 pid 1000 s new affinity list 1 Um mehr als eine CPU Affinit t zu definieren geben Sie beide CPU Nummern an getrennt durch ein Komma taskset p c 0 1 1000 pid 1000 s current affinity list 1 pid 1000 s new affinity list 0 1 Der taskset Befehl kann auch zum Starten eines neuen Prozesses mit einer bestimmten Affinitat verwendet werden Dieser Befehl lasst die bin my app Applikation auf CPU 4 laufen taskset c 4 bin my app F r eine feinere Kontrolle k nnen auch Priorit t und Richtlinie eingestellt werden Dieser Befehl f hrt die bin my app Applikation auf CPU 4 aus mit einer SCHED_FIFO Richtlinie und einer Priorit t von 78 taskset c 5 chrt f 78 bin my app 25 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch 6 2 Verwendung des sched_getaffinity Systemaufrufs zur Einstellung der Prozessoraffinitat Zus tzlich zum taskset Befehl kann Prozessoraffinitat auch mittels des sched_getaffinity Systemaufrufs eingestellt werden Der folgende Codeausschnitt ruft die Informationen zur CPU Affinit t f r eine bestimmte PID ab Wird die PID O bergeben so werden die Informationen zur Affinit t des aktuellen Prozesses wiedergegeben int sched_getaffinity pid_t pid size_t setsize const cpu_set_t set Anmerkung Weitere Informationen diesbez glich finden Sie auf den folgenden Handbuchsei
37. gster H chster Priorit tswert Priorit tswert Priorit tswert SCHED_FIFO SCHED_RR SCHED_OTHER 23 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Kapitel 6 Affinitat Jeder Thread und jede Interrupt Quelle im System besitzt einen Prozessoraffinit t Eigenschaftswert Der Betriebssystem Scheduler verwendet diese Information um festzustellen welche Threads und Interrupts auf welcher CPU laufen sollen Die Einstellung der Prozessoraffinit t zusammen mit wirksamer Richtlinien und Priorit teneinstellung kann zur bestm glichen Leistung verhelfen Applikationen befinden sich stets in Konkurrenz mit anderen Prozessen um Ressourcen insbesondere CPU Zeit Je nach Applikation laufen verwandte Threads oftmals auf demselben Kern Alternativ kann ein Applikations Thread einem Kern zugeordnet sein Systeme die Multitasking durchf hren sind anf lliger f r Indeterminismus Es ist m glich dass sogar hoch priorisierte Applikationen zum Warten gezwungen werden w hrend sich eine niedriger priorisierte Applikation einem kritischen Abschnitt befindet Nachdem die niedrig priorisierte Applikation den kritischen Abschnitt abgeschlossen hat kann der Kernel diese sicher unterbrechen und stattdessen die hoch priorisierte Applikation zur Ausf hrung auf dem Prozessor einplanen Zudem kann die Migration von Prozessen von einer CPU zur anderen aufgrund von Cache Invalidierung recht ressourcenintensiv sein MRG Realtime beinhaltet Tools die einige
38. hinsichtlich der Handhabung der Interrupt Typen vom Standard Kernel unterscheidet Ein Standardsystem empf ngt im Laufe seiner gesamten Betriebszeit mehrere Millionen von Interrupts darunter ein halbregelm iger Timer Interrupt der periodische Wartungs und System Scheduling Entscheidungen durchf hrt Es kann auch spezielle Interrupts empfangen wie etwa NMI Non Maskable Interrupts und SMI System Management Interrupts Hardware Interrupts werden durch eine nterrupt Nummer referenziert Diese Nummern sind der jeweiligen Hardware zugeordnet die den Interrupt ausl st Dies erm glicht es dem System zu berwachen welches Ger t den Interrupt erstellt hat und wann dies stattgefunden hat In den meisten Computersystemen werden Interrupts so schnell wie m glich gehandhabt Bei Erhalt eines Interrupts wird die aktuelle Aktivit t gestoppt und ein nterrupt Handler wird ausgef hrt Der Handler unterbricht andere laufende Programme und Systemaktivit ten was unter Umst nden das gesamte System verlangsamt und Latenzen verursacht MRG Realtime ver ndert die Art und Weise in der Interrupts gehandhabt werden um die Leistung zu verbessern und Latenzen zu verringern 16 Kapitel 3 Hardware Interrupts Beispiel 3 1 Anzeigen von Interrupts in Ihrem System Um die von einem Linux System erhaltene Art und Anzahl an Hardware Interrupts zu untersuchen verwenden Sie den cat Befehl um proc interrupts einzusehen cat proc interrupts C
39. hr nkungen zur Verwendung von Sockets auf einem MRG Realtime System 8 1 Socket Optionen Zwei Socket Optionen sind relevant f r MRG Realtime Applikationen TCP_NODELAY und TCP_CORK TCP_NODELAY TCP ist das g ngigste Transportprotokoll und wird daher in den verschiedensten Anwendungsf llen eingesetzt Mit der Entwicklung neuer Applikations und Hardware Features und der Optimierung der Kernel Architektur musste TCP neue Heuristiken einf hren um die nderungen effektiv zu handhaben Diese Heuristiken k nnen dazu f hren dass ein Programm instabil wird Da sich das Verhalten gleichzeitig mit den zugrunde liegenden Betriebssystemkomponenten ndert sollte man hiermit vorsichtig umgehen Ein Beispiel f r heuristisches Verhalten in TCP ist die Verz gerung kleiner Speicherpuffer Dies erm glicht deren Versendung als ein Netzwerkpaket Dies funktioniert in der Regel gut kann aber zu Latenzen f hren F r MRG Realtime Applikationen ist TCP_NODELAY eine Socket Option die zur Abschaltung dieses Verhaltens verwendet werden kann Es kann mittels der setsockopt Socket API mit folgender Funktion aktiviert werden int one 1 setsockopt descriptor SOL_TCP TCP_NODELAY amp one sizeof one Damit diese Option effektiv ist m ssen die Applikationen kleinere Schreibvorg nge in den Puffer vermeiden da TCP diese Puffer als individuelle Pakete verschickt TCP_NODELAY kann auch mit anderen Optimierungsheuristiken interagieren was zu einer
40. ie Verwendung des Befehls und die Interpretation der Ergebnisse Das Beispiel oben betrachtet die folgenden Kategorien real Die Gesamtzeit ab Programmaufruf bis zum Abschluss des Prozesses real umfasst die user und sys Zeiten und ist in der Regel gr er als die Summe der beiden Falls dieser Prozess von einer Applikation mit h herer Priorit t oder durch ein Systemereignis wie einen Hardware Interrupt IRQ unterbrochen wird so flie t diese Wartezeit ebenfalls in den real Wert ein user Die Zeit die der Prozess im User Space verbringt um Aufgaben auszuf hren die keinen Eingriff vom Kernel erforderten sys Die Zeit die der Kernel damit verbringt die vom Benutzerprozess erforderlichen Aufgaben auszuf hren Zu diesen Aufgaben geh rt das ffnen von Dateien das Lesen und Schreiben von Dateien oder I O Ports Speicherzuweisung Thread Erstellung und Netzwerkoperationen belegen ist die Effizienz der Timestamp Generierung in absteigender Reihenfolge TSC HPET ACPI_PM Die Ursache liegt in dem zunehmenden Overhead der beim Abruf der Zeitwerte von den 47 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch HPET und ACPI_PM Uhren entsteht 15 2 POSIX Uhren POSIX umfasst einen Standard zur Implementierung und Darstellung von Zeitquellen Im Gegensatz zur Hardware Uhr die vom Kernel ausgew hlt und systemweit implementiert wird kann die POSIX Uhr von jeder Applikation separat ausgew hlt werden ohne Auswirkungen auf andere Ap
41. ifischen Erweiterungen die Red Hat zus tzlich zum Grund Kernel 3 2 angewendet hat Um das Problem n her zu bestimmen versuchen Sie das Problem an einem unbearbeiteten Upstream 3 2 Kernel reprodzieren k nnen Aus diesem Grund liefern wir neben dem MRG Realtime Kernel auch eine vanilla Kernelvariante Beim vanilla Kernel handelt es sich um einen Upstream Kernel Build ohne die MRG Realtime Features Melden eines Fehlers Wenn Sie sicher sind dass der Fehler spezifisch f r MRG Realtime ist folgen Sie diesen Anweisungen um den Fehler zu melden 3 Sie m ssen nun das Produkt angeben in dem der Fehler auftritt MRG Realtime erscheint in der Red Hat Produktliste unter Red Hat Enterprise MRG Es ist wichtig dass Sie das richtige Produkt angeben in dem der Fehler auftritt 4 Fahren Sie mit der Eingabe der Fehlerinformationen fort indem Sie die entsprechende Komponente zuordnen und eine ausf hrliche Problembeschreibung liefern Bei Eingabe der Problembeschreibung sollten Sie auch mitteilen ob Sie das Problem mit dem standardm igen Red Hat Enterprise Linux 6 oder dem bereitgestellten vanilla Kernel reproduzieren konnten 16 2 Weitere Informationsquellen Red Hat Enterprise MRG Produktinformation abonnieren 53 54 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Versionsgeschichte Version 3 1 400 2013 10 31 Rebuild with publican 4 0 0 Version 3 0 Thu May 31 2012 Vorbereitet f r Ver ffentlichung MRG 2 2 Vers
42. insgesamt schlechteren Leistung f hren kann Besitzen Applikationen mehrere logisch verbundene Puffer so sollten sie als ein zusammenh ngendes Paket verschickt werden um bessere Latenz und Leistung zu erreichen Das Paket kann dann komplett mittels eines Sockets mit aktiviertem TCP_NODELAY verschickt werden Alternativ kann man wenn die Speicherpuffer zwar logisch verwandt aber nicht zusammenh ngend sind diese zum Erstellen eines Ein Ausgabe Vektors verwenden Dieser kann mittels writev auf einem Socket mit aktiviertem TCP_NODELAY an den Kernel weitergegeben werden TCP_CORK Eine weitere TCP Socket Option die auf hnliche Weise funktioniert ist TCP_CORK Falls aktiviert verz gert TCP alle Pakete bis die Applikation die Sperre entfernt und dadurch die Versendung der zwischengespeicherten Pakete gestattet Dies erm glicht Applikationen die Generierung eines Pakets im Kernel Space was von Nutzen ist wenn verschiedene Bibliotheken f r Schichtenabstraktionen verwendet werden Die TCP_CORK Option kann mittels folgender Funktion aktiviert werden 28 Kapitel 8 Sockets int one 1 setsockopt descriptor SOL_TCP TCP_CORK amp one sizeof one Bei der Aktivierung von TCP_CORK spricht man manchmal auch davon den Socket zu verkorken In einer Situation in der der Kernel nicht wei wann der metaphorische Korken also die TCP_CORK Option entfernt werden soll kann er mittels folgender Funktion entfernt werden int
43. ion 2 5 Tue May 15 2012 BZ 813989 Timestamping Kapitel berarbeitet Version 2 4 Wed May 9 2012 BZ 813989 Kapitel 15 ber Timestamping hinzugef gt Version 2 2 Tue Apr 10 2012 R diger Landmann Cheryn Tan Cheryn Tan Cheryn Tan Cheryn Tan Fehler aus Docs QE behoben Kernel Hinweise aktualisiert Hinweise auf RHEL 5 entfernt Version 2 1 Tue Feb 28 2012 Konfigurationsdatei f r neues Publikationstool Version 2 0 Wed Dec 7 2011 Vorbereitet f r Ver ffentlichung Version 1 6 Wed Nov 16 2011 BZ 752406 RHEL Versionen ge ndert Version 1 2 Wed Oct 5 2011 BZ 712267 Link zu nicht vorhandener Mailingliste Version 1 1 Thu Sep 22 2011 Versionsnummerierung ge ndert Version 1 0 Thu Jun 23 2011 Vorbereitet f r Ver ffentlichung Version 0 1 3 Thu May 19 2011 nderungen nach technischer berpr fung Version 0 1 2 Mon May 16 2011 BZ 666961 Aktualisierung f r RHEL6 Version 0 1 1 Tue Apr 05 2011 Tim Hildred Alison Young Alison Young Alison Young Alison Young Alison Young Alison Young Alison Young Alison Young BZ 683586 Abschnitt ber weitere Informationsquellen aktualisiert Kleinere XML Aktualisierungen Version 0 1 0 Wed Feb 23 2011 Abgezweigt von 1 3 Alison Young 55
44. l sten Symbole zum Zeitpunkt des Programmladens auf K Anne U Weitere Informationen diesbez glich finden Sie auf der folgenden Handbuchseite gt Id so 8 33 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Teil Ill Bibliotheksdienste Systembefehle werden zur nderung von Priorit ten Prozessoraffinit t und Scheduling Richtlinien verwendet Es ist auch m glich diese Elemente aus Benutzerapplikationen heraus mithilfe von Bibliotheksfunktionen zu ndern Dieser Abschnitt erkl rt wie Priorit ten Prozessoraffinit t und Scheduler Richtlinien mithilfe von Bibliotheksfunktionen ge ndert werden und wie die Ergebnisse dieser nderungen gepr ft werden k nnen 34 Kapitel 11 Einstellen des Schedulers Kapitel 11 Einstellen des Schedulers Es gibt zwei M glichkeiten zur Einstellung und Beobachtung von Prozesskonfigurationen Die Befehlszeilen Hilfsprogramme und das grafische Tuna T ool Dieser Abschnitt verwendet die Befehlszeilen Hilfsprogramme aber alle Vorg nge k nnen auch mit Tuna durchgef hrt werden Weitere Informationen zur Verwendung von Tuna finden Sie im MRG Realtime Optimierungshandbuch im Kapitel Verwendung des Tuna Interface 11 1 Verwendung von chrt zum Einstellen des Schedulers Der Befehl chrt wird zur berpr fung und Anpassung von Scheduler Richtlinien und Priorit ten verwendet Er kann neue Prozesse mit gew nschten Eigenschaften starten oder die Eigenschaften eines laufenden Prozesses
45. nd einige HPET Taktgeber k nnen unzuverl ssig sein Falls weder TSC noch HPET verf gbar sind so sind andere m gliche Optionen der ACPI Power Management Timer ACPI_PM der Programmable Interval Timer PIT und die Real Time Clock RTC Die letzten beiden Optionen sind sehr aufw ndig abzulesen bzw haben eine sehr niedrige Aufl sung Zeitgranularit t sie sind deshalb f r den Einsatz mit dem Realtime Kernel nur bedingt geeignet In der sys devices system clocksource clocksource0 available_clocksource Datei sehen Sie eine Liste aller verf gbaren Taktgeber auf Ihrem System cat sys devices system clocksource clocksource0 available_clocksource tsc hpet acpi_pm In dem Beispiel oben sind die TSC HPET und ACPI_PM Taktgeber verf gbar Den derzeit verwendeten T aktgeber finden Sie in der sys devices system clocksource clocksource current_clocksource Datei cat sys devices system clocksource clocksource current_clocksource tsc Es ist m glich einen anderen Taktgeber aus der Liste in der sys devices system clocksource clocksource available_clocksource Datei auszuw hlen Schreiben Sie dazu den Namen der Uhr in die sys devices system clocksource clocksource current_clocksource Datei Der folgende Befehl legt beispielsweise HPET als den zu verwendenden T aktgeber fest echo hpet gt sys devices system clocksource clocksource current_clocksource Wie OO Der Kernel w hlt aus den verf gbaren Taktgebern den best
46. ndern Um die Parameter eines bestimmten Prozesses zu berpr fen verwenden Sie die pid oder p Option allein um die Prozess ID PID anzugeben chrt p 468 pid 468 s current scheduling policy SCHED_FIFO pid 468 s current scheduling priority 85 chrt p 476 pid 476 s current scheduling policy SCHED_OTHER pid 476 s current scheduling priority 0 Um die Scheduling Richtlinie eines Prozesses einzustellen verwenden Sie die entsprechende Befehlsoption Tabelle 11 1 Richtlinienoptionen fir den chrt Befehl Kurze Option Lange Option Beschreibung Stellt Scheduler auf SCHED_FIFO ein Stellt Scheduler auf SCHED_OTHER ein Stellt Scheduler auf SCHED_RR ein Um die Priorit t eines Prozesses einzustellen geben Sie den Wert vor der PID des zu ndernden Prozesses an Der folgende Befehl setzt den Prozess mit PID 1000 auf SCHED_FIFO mit einer Priorit t von 50 chrt f p 50 1000 Der folgende Befehl setzt denselben Prozess PID 1000 auf SCHED_OTHER mit einer Priorit t von 0 chrt o p 1000 Um eine neue Applikation mit einer bestimmten Richtlinie und Priorit t zu starten geben Sie den Namen der Applikation und den Pfad falls n tig zusammen mit den Parametern an Der folgende Befehl startet Ibin my app mit einer Richtlinie von SCHED_FIFO und Priorit t 36 35 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch chrt f 36 bin my app Anmerkung Weitere Informationen diesbez glich
47. nderung von Attributen von Threads und Interrupts etwa Scheduling Richtlinie Scheduler Priorit t und Prozessoraffinit t verwendet werden Das Tool wurde f r die Verwendung auf einem laufenden System konzipiert und nderungen werden sofort wirksam Auf diese Weise kann jedes applikationsspezifische Mess Tool die Systemleistung sofort nach den vorgenommenen nderungen sehen und analysieren Informationen zur Installation und Verwendung von Tuna finden Sie im MRG Tuna Benutzerhandbuch 20 Kapitel 4 Threads und Prozesse Kapitel 4 Threads und Prozesse Zwar verwenden alle Programme Threads und Prozesse MRG Realtime handhabt diese jedoch auf andere Weise als standardm ige Red Hat Enterprise Linux Systeme Dieses Kapitel erl utert die MRG Realtime Handhabung von Threads und Prozessen Jeder CPU Kern unterliegt Beschr nkungen hinsichtlich der Menge an Arbeit die er durchf hren kann Um eine gr ere Effizienz zu erzielen k nnen Applikationen verschiedene Aufgaben simultan auf mehreren Kernen ausf hren Man spricht dann von Parallelisierung Programme k nnen mithilfe von Threads parallelisiert werden Allerdings werden Threads und Prozesse oft miteinander verwechselt daher ist es wichtig die Unterschiede dieser Begriffe zu verstehen Prozess Ein UNIX artiger Prozess ist ein Betriebssystemskonstrukt das Folgendes enth lt 1 Adresszuordnungen f r virtuellen Speicher 2 Einen Ausf hrungskontext PC Stack Registers 3 S
48. nel Befehlszeile gebootet werden 3 3 Non maskable Interrupts Ein Interrupt wird als maskiert bezeichnet wenn er deaktiviert wurde oder wenn die CPU angewiesen wurde ihn zu ignorieren Ein Non Maskable Interrupt nicht maskierbarer Interrupt kurz NMI kann nicht ignoriert werden und wird in der Regel nur f r kritische Hardware Fehler verwendet NMls werden normalerweise ber eine separate Interrupt Leitung gesendet Wird ein NMI von der CPU empfangen so zeigt dies an dass es zu einem kritischen Fehler gekommen ist und das System wahrscheinlich abst rzen wird Der NMI ist in der Regel die beste Indikation dar ber was das Problem verursacht haben k nnte Da NMls nicht ignoriert werden k nnen werden sie von von einigen Systemen als Hardware Monitor verwendet Das Ger t sendet eine Folge von NMis die von einem NMI Handler im Prozessor gepr ft werden Sind bestimmte Bedingungen erf llt wie etwa das Nichtausl sen eines Interrupts nach einer bestimmten Zeitdauer kann der NMI Handler eine Warnung und Informationen zur Fehlerbehebung generieren Dies hilft bei der Identifikation und Vorbeugung von System Lockups 3 4 System Management Interrupts System Management Interrupts SMIs werden f r erweiterte Funktionalit t verwendet wie etwa zur Emulation veralteter Hardware Ger te Sie k nnen auch f r Systemverwaltungsaufgaben eingesetzt werden SMis hneln NMIs insofern als sie ebenfalls eine eine spezielle elektrischen Leitung
49. nen W hlen Sie im Reiter Tasten auf das Auswahlk stchen Mit links bediente Maus und anschlie end auf Schlie en um die prim re Maustaste von der linken auf die rechte Seite zu ndern d h um die Maus auf Linksh nder anzupassen Um ein Sonderzeichen in eine gedit Datei einzuf gen w hlen Sie Anwendungen Zubeh r Zeichentabelle aus der Hauptmen leiste W hlen Sie als N chstes Suchen gt Suchen aus der Men leiste der Zeichentabelle geben Sie im Feld Suchbegriff den Namen des Zeichens ein und klicken Sie auf Weitersuchen Das gesuchte Zeichen wird daraufhin in der Zeichentabelle hervorgehoben Doppelklicken Sie auf dieses hervorgehobene Zeichen um es in das Feld Zu kopierender Text zu bernehmen und klicken Sie anschlie end auf die Schaltfl che Kopieren Gehen Sie nun zur ck in Ihr Dokument und w hlen Sie Bearbeiten Einf gen aus der gedit Men leiste Der oben aufgef hrte Text enth lt Applikationsnamen systemweite Men namen und elemente applikationsspezifische Men namen sowie Schaltfl chen und Text innerhalb einer grafischen Oberfl che Alle werden proportional fett dargestellt und sind anhand des Kontextes unterscheidbar Nichtproportional Fett Kursiv oder Proportional Fett Kursiv Sowohl bei nichtproportional fett als auch bei proportional fett weist ein zus tzlicher Kursivdruck auf einen ersetzbaren oder variablen Text hin Kursivdruck kennzeichnet Text der nicht w rtlich eingeben wird oder angezeigten Text
50. nforderungen gerecht wird MRG Realtime wird als Teil von Red Hat Enterprise MRG vertrieben und bietet eine nahtlose Integration mit Red Hat Enterprise Linux 6 Mit MRG Realtime haben Kunden die M glichkeit Latenzzeiten in ihrer Organisation zu messen zu konfigurieren und aufzeichnen 1 Dokumentkonventionen Dieses Handbuch verwendet mehrere Konventionen um bestimmte W rter und S tze hervorzuheben und Aufmerksamkeit auf bestimmte Informationen zu lenken Liberation Fonts Set wird auch f r HTML Ausgaben verwendet falls es auf Ihrem System installiert ist Falls nicht werden alternative aber quivalente Schriftbilder angezeigt Beachten Sie Red Hat Enterprise Linux 5 und die nachfolgende Versionen beinhalten das Liberation Fonts Set standardm ig 1 1 Typografische Konventionen Es werden vier typografische Konventionen verwendet um die Aufmerksamkeit auf bestimmte W rter und S tze zu lenken Diese Konventionen und die Umst nde unter denen sie auftreten sind folgende Nichtproportional Fett Dies wird verwendet um Systemeingaben hervorzuheben einschlie lich Shell Befehle Dateinamen und pfade Es wird ebenfalls zum Hervorheben von Tasten und Tastenkombinationen verwendet Zum Beispiel Um den Inhalt der Dateimy_next_bestselling_novel in Ihrem aktuellen Arbeitsverzeichnis zu sehen geben Sie den Befehl cat my_next_bestselling_novel Vorwort in den Shell Prompt ein und dr cken Sie Enter um den Befehl auszuf hren
51. nsamer Cache reduziert Speicherfehler indem gew hrleistet wird dass das Verfahren zum wechselseitigen Ausschluss Mutex Condvar oder hnliches und die Datenstruktur selbst denselben Cache verwenden 1 2 Interconnects Es ist wichtig die zwischen den Kernen vorkommenden Interconnects Zwischenverbindungen zu untersuchen Je mehr Kerne eine Maschine hat desto schwieriger und aufw ndiger wird es allen Kernen gleichbleibend schnellen Speicherzugriff zu gew hren Viele Hardware Anbieter bieten jetzt ein transparentes Netzwerk von Verbindungen zwischen Kernen und Speicher bekannt als NUMA Non Uniform Memory Access Architektur Bei NUMA Systemen gestattet es die Kenntnis der Verbindungstopologie h ufig interagierende Threads in aneinander grenzende Kerne zu platzieren 10 Kapitel 2 Speicherzuweisung Kapitel 2 Speicherzuweisung Linux basierte Betriebssysteme verwenden ein virtuelles Speichersystem Jede von einer User Space Applikation referenzierte Adresse muss in eine physische Adresse bersetzt werden Dies erfolgt durch eine Kombination von Seitentabellen und Hardware zur Adress bersetzung im zugrunde liegenden Computersystem Da der bersetzungsmechanismus zwischen einem Programm und dem tats chlichen Speicher untergebracht ist kann das Betriebssystem Seiten bei Bedarf stehlen Dies erfolgt indem ein zuvor verwendeter Seitentabelleneintrag als ung ltig markiert wird so dass das Betriebssystem selbst unter normaler
52. orit t Bibliotheksaufrufe werden zur Einstellung der Priorit t von nicht Echtzeit Prozessen verwendet Diese sind nice getpriority 36 Kapitel 11 Einstellen des Schedulers setpriority Diese Funktionen operieren durch Abruf und Anpassung des Nice Werts etwa Nettigkeitswert eines Prozesses Je netter ein Prozess ist desto niedriger ist dessen Priorit t Die Senkung des Nice Werts erh ht demnach die Priorit t Echtzeitprozesse verwenden einen anderen Satz von Bibliotheksaufrufen zur Steuerung von Richtlinie und Priorit t worauf wir in diesem Abschnitt noch n her eingehen Wichtig Die folgenden Funktionen erfordern alle den Einschluss einer sched h Header Datei Pr fen Sie stets die R ckgabecodes von Funktionen Die entsprechenden Handbuchseiten liefern Informationen zu den verschiedenen verwendeten Codes Weitere Informationsquellen Weitere Informationen diesbez glich finden Sie auf den folgenden Handbuchseiten nice 2 getpriority 2 setpriority 2 11 3 1 sched_getscheduler Die sched_getscheduler Funktion ruft die Scheduler Richtlinie f r eine bestimmte PID ab include lt sched h gt int policy policy sched_getscheduler pid_t pid Die Symbole SCHED_OTHER SCHED_RR und SCHED_FIFO sind ebenfalls in sched h definiert Sie k nnen zur Pr fung der definierten Richtlinie oder zur Einstellung der Richtlinie verwendet werden 37 Red Hat Enterprise M
53. plikationen im System CLOCK_REALT IME repr sentiert die Uhrzeit in der realen Welt auch oft tats chliche Zeit genannt Diese Uhr wird beim Generieren von Timestamps f r Ereignisse und bei der Interaktion mit dem Benutzer verwendet Sie kann von einem Benutzer mit den entsprechenden Berechtigungen ver ndert werden Allerdings ist bei nderungen durch den Benutzer Vorsicht geboten da es zu fehlerhaften Daten f hren kann wenn der Wert der Uhr zwischen zwei Ableseoperationen ver ndert wurde CLOCK_MONOTONIC repr sentiert die monoton fortschreitende Zeit seit dem Systemstart Diese Uhr kann von keinem Prozess ver ndert werden und ist der bevorzugte Zeitgeber zum Messen von Zeitabst nden zwischen Ereignissen Die nachfolgenden Beispiele in diesem Abschnitt nutzen CLOCK_MONOTONIC als POSIX Uhr K Amer U Mehr Informationen ber POSIX Uhren finden Sie auf der folgenden Handbuchseite und im folgenden Buch clock _gettime Linux System Programming von Robert Love Die Funktion zum Ablesen einer POSIX Uhr ist clock_gettime definiert unter lt time h gt Der clock_gettime Befehl akzeptiert zwei Parameter die ID der POSIX Uhr und eine timespec Struktur die mit der Zeitspanne gef llt wird die zum Ablesen der Uhr n tig ist Das folgende Beispiel zeigt die Funktion mit der der Zeitaufwand zum Ablesen der Uhr gemessen wird Beispiel 15 2 Verwenden von clock_gettime zum Messen des Zeitaufwands zum Ablesen von POSIX Uhren in
54. rnational Corp or its subsidiaries in the United States and or other countries MySQL is a registered trademark of MySQL AB in the United States the European Union and other countries Node js is an official trademark of Joyent Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node js open source or commercial project The OpenStack Word Mark and OpenStack Logo are either registered trademarks service marks or trademarks service marks of the OpenStack Foundation in the United States and other countries and are used with the OpenStack Foundation s permission We are not affiliated with endorsed or sponsored by the OpenStack Foundation or the OpenStack community All other trademarks are the property of their respective owners Zusammenfassung Dieses Buch enth lt Referenzmaterial f r die MRG Realtime Komponente von Red Hat Enterprise MRG der Plattform f r verteiltes Rechnen Installationsanweisungen finden Sie im MRG Realtime Installationshandbuch Informationen zur Optimierung finden Sie im MRG Realtime Optimierungshandbuch Inhaltsverzeichnis VOrWORT mr cite N MD aad od ae co Ik heh td ed AD heel chet at ate atte tte ete nc tee Ihe 1 Dokumentkonventionen 1 1 Typografische Konventionen 1 2 Konventionen f r Seitenansprachen 1 3 Anmerkungen und Warnungen 2 Hilfe bekommen und Feedback geben 2 1 Brauchen Sie Hilfe 2 2 Wir freuen uns auf Ihr Feedback Teill HardWare z
55. s 0 ccc cette eet n eens 11 1 Verwendung von chrt zum Einstellen des Schedulers 11 2 Preemption 11 3 Verwendung von Bibliotheksaufrufen zur Einstellung der Prioritat Red Hat Enterprise MRG 2 Realtime Referenzhandbuch 11 3 1 sched_getscheduler 11 3 2 sched_setscheduler 11 3 3 sched_getparam und sched_setparam 11 3 4 sched_get_priority_min und sched_get_priority_max 11 3 5 sched_rr_get_interval Kapitel 12 Erstellen von Threads und Prozessen 0 ccc cee ce cnet eens Kapitel 13 Mmap 3 4 sprp asia eka ap aoe de Ge aw GEE ee aS Kapitel 14 Systemaufrufe 1 0 Spip adrei rE EERE EE i 14 1 sched_yield 14 2 getrusage Kapitel 15 Timestamping 4 80 2 0 Bu RT Ren 15 1 Hardware Uhren 15 1 1 Ablesen von Hardware Uhren 15 2 POSIX Uhren 15 2 1 CLOCK_MONOTONIC_COARSE und CLOCK_REALTIME_COARSE 15 2 2 Verwenden von clock_getres zum Vergleich der Zeitaufl sung 15 2 3 Verwenden von C Code zum Vergleich der Zeitaufl sung 15 2 4 Verwenden des time Befehls zum Vergleich des Aufwands f r Ableseoperationen Kapitel 16 Weitere Informationen 0 0 unarna nananana 16 1 Melden von Fehlern 16 2 Weitere Informationsquellen Versionsgeschichte 41 42 ee dei ade eee eae ees en ais ded te ee 37 38 39 39 40 Inhaltsverzeichnis Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Vorwort Red Hat Enterprise MRG Dieses Buch enthalt grundlegende Informationen
56. scheduler SCHED_FIFO amp sp if ret 1 perror sched_setscheduler return 1 lt 11 3 3 sched_getparam und sched_setparam Die sched_setparam Funktion wird zur Einstellung der Scheduling Parameter eines bestimmten Prozesses verwendet Dies kann mittels sched_getparam Funktion verifiziert werden Anders als die sched_getscheduler Funktion die nur die Scheduling Richtlinie wiedergibt gibt die sched_getparam Funktion alle Scheduling Parameter f r den angegebenen Prozess aus Der folgende Codeausschnitt liest die Priorit t eines bestimmten Echtzeitprozesses und erh ht diese um zwei struct sched_param sp int ret A reads priority and increments it by 2 ret sched_getparam 0 amp sp sp sched_priority 2 sets the new priority ret sched_setparam amp sp W rde der Code oben in einer echten Applikation verwendet so m sste er auch die R ckgabewerte der Funktion pr fen und eventuelle Fehler entsprechend handhaben Seien Sie vorsichtig mit der Erh hung von Priorit ten Das kontinuierliche Erh hen um zwei in diesem Beispiel wird irgendwann zu einer ung ltigen Priorit t f hren 11 3 4 sched_get_priority_min und sched_get_priority_max Die sched_get_priority_min und sched_get_priority_max Funktionen werden zur Pr fung des g ltigen Priorit tsbereich f r eine bestimmte Sche
57. sec Felds in der timespec Struktur von Bedeutung Das obige Ergebnis kann also folgenderma en gelesen werden clock_test_coarse 218550 844 218550 844 218550 844 218550 845 218550 845 Die _COARSE Varianten der POSIX Uhren sind inbesondere in Situationen hilfreich in denen Timestamping mit Millisekundenaufl sung durchgef hrt werden kann Die Vorteile sind auf jenen Systemen deutlicher die bislang Hardware Uhren mit hohem Aufwand f r Ableseoperationen verwendeten wie z B ACPI_PM 15 2 4 Verwenden des time Befehls zum Vergleich des Aufwands f r Ableseoperationen Sie k nnen den Aufwand f r Ableseoperationen der CLOCK_MONOTONIC und CLOCK_MONOTONIC_COARSE Varianten der verf gbaren Hardware Uhren miteinander vergleichen indem Sie den time Befehl verwenden um den Taktgeber 10 Millionen Mal nacheinander abzulesen Das folgende Beispiel verwendet die TSC HPET und ACPI_PM Hardware Uhren Weitere Informationen 51 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Beispiel 15 5 Vergleich des Zeitaufwands zum Ablesen von POSIX Uhren TSC time clock_timing_monotonic real Om0 567s user 0m0 559s sys 0m0 002s time clock_timing_monotonic_coarse real 0m0 120s user 0m0 118s sys 0m0 001s HPET time clock_timing_monotonic real 0m12 257s user 0m12 179s sys 0m0 002s time clock_timing_monotonic_coarse real Om0 119s user 0m0 118s sys 0m0 000s ACPI_PM time clock_timing_monotonic real 0m2
58. sen sollten Sie den Hersteller auf das Problem aufmerksam machen 18 Kapitel 3 Hardware Interrupts OD Amen U Sie k nnen versuchen SMIs auf einem MRG Realtime System mithilfe des hwlatdetect Hilfsprogramms zu isolieren Dieses Hilfsprogramm steht im rt tests Paket zur Verf gung und wurde dazu entwickelt die Zeit zu messen die eine CPU von einer SMI Handling Routine in Beschlag genommen wird 3 5 Advanced Programmable Interrupt Controller Der Advanced Programmable Interrupt Controller APIC wurde von Intel entwickelt um eine hohe Anzahl von Interrupts verwalten zu k nnen so dass diese je nach Bedarf befehlsorientiert an einen bestimmten Satz verf gbarer CPUs geroutet werden k nnen um die Kommunikation zwischen CPUs zu unterst tzen und um zu vermeiden dass sich eine hohe Anzahl an Ger ten eine einzelne Interrupt Leitung teilen muss APIC steht f r eine Reihe von Ger ten und Technologien die zusammenarbeiten um eine hohe Anzahl an Hardware Interrupts zu generieren routen und handzuhaben Es verwendet eine Kombination aus einem lokalen APIC der in jede System CPU eingebaut ist sowie eine Reihe von Eingabe Ausgabe APICs die direkt mit Hardware Ger ten verbunden sind Generiert ein Hardware Ger t einen Interrupt so wird dies vom mit ihm verbundenen I O APIC aufgesp rt und dann ber den System APIC Bus an eine bestimmte CPU geroutet Das Betriebssystem wei aus einer Kombination von Informationsquellen welcher
59. tatus Accounting Informationen Linux Prozesse begannen als genau diese Art von Prozess Als das Konzept von mehr als einem Prozess in einem Adressbereich entwickelt wurde wendete sich Linux einer Prozessstruktur zu die einen Adressbereich mit anderen Prozessen teilt Dies funktioniert gut so lange die Prozessdatenstruktur gering gehalten wird F r den Rest dieses Dokuments gilt dass der Begriff Prozess sich auf einen unabh ngigen Adressbereich bezieht der m glicherweise mehrere Threads enth lt Thread Streng genommen handelt es sich bei einem Thread um eine terminierbare Einheit die Folgendes enth lt 1 Einen Programmz hler PC 2 Einen Register Kontext 3 Einen Stapelzeiger Innerhalb eines Prozesses k nnen mehrere Threads existieren Beim Programmieren auf einem MRG Realtime System gibt es zwei M glichkeiten Programme zu parallelisieren 1 Verwenden der fork und exec Funktionen zur Erstellung neuer Prozesse 2 Verwenden der Posix Threads pthreads Programmierschnittstelle zur Erstellung neuer Threads innerhalb eines bereits laufenden Prozesses 21 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Anmerkung Pr fen Sie wie die Komponenten untereinander interagieren ehe Sie entscheiden wie diese parallelisiert werden sollen Sind die Komponenten unabhangig voneinander und werden nur wenig oder gar nicht interagieren dann ist die Erstellung eines neuen Adressbereichs und die Ausf hrung als neuer Prozess in
60. ten sched_getaffinity 2 sched_setaffinity 2 26 Kapitel 7 Thread Synchronisation Kapitel 7 Thread Synchronisation Wenn Threads Zugriff auf gemeinsam verwendete Ressourcen ben tigen so wird dies mithilfe der Thread Synchronisation koordiniert Die drei Mechanismen zur Thread Synchronisation bei Linux sind 1 Mutexes 2 Barriers 3 Condvars 7 1 Mutexes Das Wort Mutex leitet sich vom englischen Begriff mutual exclusion wechselseitiger Ausschluss ab Ein Mutex ist ein POSIX Thread Konstrukt und wird mittels pthread_create_mutex Bibliothekaufruf erstellt Ein Mutex serialisiert Zugriff auf jeden Abschnitt von Code so dass zu jeder Zeit nur ein Thread einer Applikation den Code ausf hrt hnlich dem Mutex Verfahren ist das Futex Verfahren oder Fast User muTEX bei der es sich um einen internen Mechanismus zur Implementierung von Mutexes handelt Futexes verwenden gemeinsame Konventionen von Kernel und der C Bibliothek Dies gestattet die Sperrung oder Freigabe eines Mutexes im einfachsten Fall ohne Kontextwechsel zum Kernel Space 7 2 Barriers Barriers operieren auf g nzlich andere Weise als andere Thread Synchronisationsmethoden Statt den Zugriff auf Coderegionen zu serialisieren sperren Barriers alle Threads bis sich eine vorab festgelegte Anzahl an Threads angesammelt hat Die Barrier gestattet dann die Fortf hrung aller Threads Barriers kommen zum Einsatz wenn eine laufende Applikation sicher sein muss
61. ten sich eine einzige Interrupt Leitung zu teilen Hat die CPU ein Ger t angewiesen die Leitung freizugeben die Leitung bleibt jedoch aktiv so bedeutet das dass ein weiterer Interrupt aussteht Obwohl Level Signalled Interrupts ein hohes Ma an Hardware Logik sowohl auf den Ger ten als auch auf der CPU erfordern bieten sie auch eine Reihe von Vorteilen Sie k nnen von mehr als nur einem Ger t verwendet werden und verpassen so gut wie keine Interrupts 3 2 Message Signalled Interrupts Viele moderne Systeme verwenden Message Signalled Interrupts die die Signale als spezielle Nachricht ber einen Paket oder Nachrichten basierten elektrischen Bus versenden Ein g ngiges Beispiel f r diesen Bus Typ ist PCI Express Peripheral Component Interconnect Express 17 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch oder PCle Diese Gerate Ubermitteln eine Nachricht als einen Typ den der PCle Host Controller als Interrupt Nachricht interpretiert Der Host Controller schickt die Nachricht dann weiter an die CPU Je nach Hardware kann ein PCle System das Signal mittels spezieller Interrupt Leitung zwischen PCle Host Controller und der CPU senden oder es kann die Nachricht z B ber den CPU HyperTransport Bus verschicken Viele PCle Systeme k nnen auch im Legacy Modus laufen bei dem traditionelle Interrupt Leitungen implementiert sind um ltere Betriebssysteme zu unterst tzen oder Linux Kernels mit der Option pci nomsi an der Ker
62. timal ins Netzwerkpaket passen tcp_nodelay_client localhost 5001 10000 10000 packets of 30 bytes sent in 400129 781250 ms 0 749757 bytes ms Die zweite Variante verwendet nur TCP_NODELAY TCP wird dazu angewiesen keine kleinen Pakete zu zusammenzulegen sondern Puffer sofort zu verschicken Dies verbessert die Leistung ma geblich erstellt aber f r jedes logische Paket eine gro e Anzahl an Netzwerkpaketen tcp_nodelay_client localhost 5001 10000 no_delay 10000 packets of 30 bytes sent in 1649 771240 ms 181 843399 bytes ms using TCP_NODELAY Die dritte Variante verwendet nur TCP_CORK Es halbiert die erforderliche Zeit um dieselbe Anzahl logischer Pakete zu verschicken da TCP komplette logische Pakete in seinen Puffern zusammenlegt und insgesamt weniger Netzwerkpakete verschickt tcp_nodelay_client localhost 5001 10000 cork 10000 packets of 30 bytes sent in 850 796448 ms 352 610779 bytes ms using TCP_CORK Bei diesem Szenario ist TCP_CORK das beste Verfahren Es gestattet der Applikation exakt mitzuteilen dass ein Paket fertig ist und ohne Verz gerung verschickt werden muss Bei der Entwicklung von Programmen die gro e Mengen an Daten von einer Datei verschicken m ssen sollten Sie die Verwendung von TCP_CORK mit send file in Erw gung ziehen Kapitel 8 Sockets Anmerkung Weitere Informationen diesbez glich finden Sie auf der folgenden Handbuchseite und in folgenden Beispielapplikationen sendfile 2 gt
63. tion insgesamt niederschlagen Um den Kontextwechsel zum Kernel zu vermeiden und somit das Ablesen der Uhr zu beschleunigen wurde Unterst tzung f r die CLOCK_MONOTONIC_COARSE und CLOCK_REALTIME_COARSE POSIX Uhren in Form einer VDSO Bibliotheksfunktion hinzugef gt Die _COARSE Varianten sind schneller abzulesen und haben eine Genauigkeit Aufl sung von einer Millisekunde ms 15 2 2 Verwenden von clock_getres zum Vergleich der Zeitaufl sung Mithilfe der clock_getres Funktion k nnen Sie die Aufl sung einer POSIX Uhr pr fen clock_getres nutzt dieselben zwei Parameter wie clock_gettime die ID der POSIX Uhr und einen Verweis auf die timespec Struktur in der das Ergebnis ausgegeben wird Die folgende Funktion erm glicht es Ihnen die Aufl sung von CLOCK_MONOTONIC und CLOCK_MONOTONIC_COARSE miteinander zu vergleichen main int rc struct timespec res rc clock_getres CLOCK_MONOTONIC amp res if rc printf CLOCK_MONOTONIC ldns n res tv_nsec rc clock_getres CLOCK_MONOTONIC_COARSE amp res if rc printf CLOCK_MONOTONIC_COARSE ldns n res tv_nsec 49 Red Hat Enterprise MRG 2 Realtime Referenzhandbuch Beispiel 15 3 Beispielausgabe von clock_getres TSC clock_resolution CLOCK_MONOTONIC ins CLOCK_MONOTONIC_COARSE 999848ns about ims HPET clock_resolution CLOCK_MONOTONIC ins CLOCK_MONOTONIC_COARSE 999848ns about ims ACPI_PM clock_resolution CLOCK_MON
64. u ee re ae e Kapitel 1 Proz ssorkerne 2 u 34 224 Rohe ante deh ea ee Shee ARERR EEE RSS 1 1 Caches 1 2 Interconnects Kapitel 2 Speicherzuweisung 00 0c cect tet t et eens 2 1 Demand Paging 2 2 Die Verwendung von mlock zur Vermeidung von Speicherfehlern Kapitel 3 Hardware Interrupts 0 00 c ccc tte teen ees 3 1 Level Signalled Interrupts 3 2 Message Signalled Interrupts 3 3 Non maskable Interrupts 3 4 System Management Interrupts 3 5 Advanced Programmable Interrupt Controller Teil Il Applikationsarchitektur 0 0 teen ne tenn n ee nenas Kapitel 4 Threads und Prozesse 0 ete e tnt nen enennes Kapitel 5 Priorit ten und Richtlinien 0 0 00 ccc tent e eens Kapitel 6 Affinit t 22er rar aan ii a ee 2 6 1 Verwendung des taskset Befehls zur Einstellung der Prozessoraffinit t 6 2 Verwendung des sched_getaffinity Systemaufrufs zur Einstellung der Prozessoraffinit t Kapitel 7 Thread Synchronisation 0000s ccc tee tne een en nenn 7 1 Mutexes 7 2 Barriers 7 3 Condvars 7 4 Andere Synchronisationstypen Kapitel 8 Sockets araia a u eh ee ae oes eh a a ie ee RR ee A 8 1 Socket Optionen Kapitel 9 Gemeinsam verwendeter Speicher 0c ccc cece cette teens Kapitel 10 Gemeinsam verwendete Bibliotheken 0 0 0 cc cece eet eens Teil Ill Bibliotheksdienste 0 2 eect teen eee eens Kapitel 11 Einstellen des Scheduler
65. viele Kerne zur Ausf hrung der Applikation n tig sind um diese Kerne anschlie end zu isolieren Dies kann entweder mithilfe des Tuna Tools oder durch Verwendung von Shell Skripten zur Bearbeitung des Bitmasken Werts erfolgen Der taskset Befehl kann zur nderung der Affinit t eines Prozesses verwendet werden w hrend die Bearbeitung des proc Dateisystemeintrags die Affinit t eines Interrupts ndert 24 Kapitel 6 Affinitat OD aie U Weitere Informationen diesbez glich finden Sie in folgendem Handbuch bzw auf der folgenden Handbuchseite gt MRG Tuna Benutzerhandbuch taskset 1 6 1 Verwendung des taskset Befehls zur Einstellung der Prozessoraffinit t Der taskset Befehl setzt und pr ft Affinit tsinformationen f r einen bestimmten Prozess Das Tuna Tool kann zu diesem Zweck ebenfalls verwendet werden Verwenden Sie den taskset Befehl mit der p oder pid Option und der PID des zu pr fenden Prozesses c oder cpu list zeigen die Informationen als numerische Liste von Kernen statt als Bitmaske an Der folgende Befehl pr ft die Affinit t des Prozesses mit PID 1000 In diesem Fall darf PID 1000 entweder CPU 0 oder CPU 1 verwenden taskset p c 1000 pid 1000 s current affinity list 0 1 Die Affinitat kann eingestellt werden indem die Nummer der CPU angegeben wird an die der Prozess gebunden werden soll In diesem Beispiel konnte PID 1000 zuvor auf CPU O oder CPU 1 laufen doch die Affinit t wurde nun
66. zero 0 setsockopt descriptor SOL_TCP TCP_CORK amp zero sizeof zero Sobald der Socket entkorkt ist versendet TCP das akkumulierte logische Paket sofort ohne dass auf weitere Pakete der Applikation gewartet wird Red Hat Enterprise MRG 2 Rea gt Referenzhandbuch Beispiel 8 1 Verwendung von TCP_NODELAY und TCP_CORK Dieses Beispiel demonstriert die Auswirkungen auf die Leistung die TCP_NODELAY und TCP_CORK auf eine Applikation haben k nnen Der Server wartet auf Pakete von 30 Bytes und schickt dann ein 2 Byte gro es Paket als Antwort Definieren Sie f r den Anfang den TCP Port und die Anzahl an Paketen die verarbeitet werden soll In diesem Beispiel sind es 10 000 Pakete tcp_nodelay_server 5001 10000 Auf dem Server m ssen keine Socket Optionen eingestellt sein L uft der Client ohne jegliche Parameter so werden standardm ige Socket Optionen verwendet Verwenden Sie die no_delay Option zur Aktivierung der TCP_NODELAY Socket Optionen Verwenden Sie die cork Option zur Aktivierung des TCP_CORK In allen F llen sendet es 15 Pakete von jeweils zwei Bytes und wartet auf Antwort vom Server Dieses Beispiel verwendet eine Loopback Schnittstelle um drei Varianten zu veranschaulichen In der ersten Variante sind weder TCP_NODELAY noch TCP_CORK in Gebrauch Dies ist eine Messung der Ausgangswerte TCP legt Schreibvorg nge zusammen und muss warten um zu pr fen ob die Applikation ber mehr Daten verf gt als op
Download Pdf Manuals
Related Search
Related Contents
User Manual of W20-GSM indoor single band selective 2013年度 地球温暖化対策計画書(ドコモ0214ビル) ProPMS Clôture et Ouverture d`année scolaire Supermicro SuperServer 5015A-L Bedienungsanleitung User manual FL 40-3Liner FL 40 Samsung SC5350 Εγχειρίδιο χρήσης Approach® S2 - GPS Central Manual, vista explodida e relação de peças. IMD MD.2 User`s Manual 2005 MR-J2- A 仕様取扱説明書 - NI Discussion Forums Copyright © All rights reserved.
Failed to retrieve file