Simultanes Multithreading
Simultanes Multithreading ist die Fähigkeit eines einzelnen physischen Prozessors, Anweisungen aus mehreren Hardware-Thread-Kontexten gleichzeitig zuzuteilen. Da auf einem physischen Prozessor jeweils zwei Hardware-Threads vorhanden sind, können zeitgleich zusätzliche Anweisungen ausgeführt werden.
Simultanes Multithreading ermöglicht es Ihnen, die superskalare Natur des Prozessors zu nutzen, indem Sie zwei Anwendungen gleichzeitig auf demselben Prozessor planen. Keine einzelne Anwendung kann den Prozessor vollständig sättigen.
Vorteile von Simultanes Multithreading
Dies ist vor allem in kommerziellen Umgebungen von Vorteil, in denen die Geschwindigkeit einer einzelnen Transaktion nicht so wichtig ist wie die Gesamtzahl der ausgeführten Transaktionen. Simultanes Multithreading wird erwartet, um den Durchsatz von Workloads mit großen oder häufig wechselnden Arbeitssets, wie z. B. Datenbankserver und Web-Server, zu erhöhen.
Workloads mit dem größten Vorteil von simultanem Multithreading sind Workloads mit einer hohen Anzahl von Zyklen pro Anweisung (CPI). Diese Workloads neigen dazu, Prozessor-und Speicherressourcen schlecht zu nutzen. Große Wettbewerbspreisindizes werden normalerweise durch hohe Cachefehlerraten aus einem großen Arbeitsbereich verursacht. Große kommerzielle Workloads hängen etwas davon ab, ob die beiden Hardware-Threads Anweisungen oder Daten gemeinsam nutzen oder ob die Hardware-Threads völlig unterschiedlich sind. Große kommerzielle Workloads weisen normalerweise dieses Merkmal auf. Workloads, die Anweisungen oder Daten gemeinsam nutzen, einschließlich solcher, die umfangreich im Betriebssystem oder in einer einzelnen Anwendung ausgeführt werden, haben möglicherweise größere Vorteile durch simultanes Multithreading.
Workloads, die nicht viel von simultanem Multithreading profitieren, sind diejenigen, in denen die Mehrheit der einzelnen Software-Threads eine große Menge an Ressourcen im Prozessor oder Speicher verwendet. Beispielsweise gewinnen Workloads, die Gleitkomma-intensiv sind, wahrscheinlich nur wenig von simultanem Multithreading und verlieren am wahrscheinlichsten die Leistung. Diese Workloads belegen stark entweder die Gleitkommaeinheiten oder die Speicherbandbreite. Workloads mit niedrigen CPI-und Cachefehlerraten können einen kleinen Vorteil erzielen.
Messungen auf einer dedizierten Partition mit kommerziellen Workloads ergaben eine Durchsatzsteigerung von 25% bis 40%. Simultanes Multithreading sollte die Verarbeitung von Partitionen mit gemeinsam genutzten Prozessoren unterstützen. Die zusätzlichen Threads geben der Partition einen Boost, nachdem simultanes Multithreading zugeteilt wurde, da die Partition ihren Arbeitsbereich schneller wiederherstellt. Anschließend werden die Threads wie in einer dedizierten Partition ausgeführt. Obwohl es möglicherweise etwas kontraintuitiv ist, funktioniert das simultane Multithreading am besten, wenn die Leistung des Cache am schlechtesten ist.
Modus mit dem Befehl smtctl festlegen
AIX® können Sie den Modus der Partition für gleichzeitiges Multithreading mit dem Befehl ' smtctl steuern. Mit diesem Befehl können Sie simultanes Multithreading systemweit aktivieren oder inaktivieren, entweder sofort oder beim nächsten Booten des Systems. Der Modus simultanes Multithreading bleibt bei Systemboots bestehen. Standardmäßig aktiviert AIX simultanes Multithreading.
smtctl [ -m { off | on } [ { -boot | -now } ] ]Hardware Management Console Konfiguration für Simultanes Multithreading
Wenn Sie Partitionen mit gemeinsam genutzten Prozessoren auf der Hardware Management Console (HMC) konfigurieren, geben Sie die minimale, gewünschte und maximale Anzahl virtueller Prozessoren an. Für dedizierte Partitionen geben Sie denselben Parametertyp an, aber die Prozessorterminologie ist anders. Bei dedizierten Partitionen werden die Prozessoren immer als Prozessoren bezeichnet.
Für beide Partitionierungsmodelle müssen Sie einen Bereich von Prozessoren angeben, die die Boot-und Laufzeitzuordnung von Prozessoren zu der Partition steuern. Wenn möglich, wird die gewünschte Prozessoreinstellung beim Systemstart erteilt. Ist dies nicht möglich, wählt der POWER Hypervisor einen anderen Wert basierend auf der Gruppe der verfügbaren Ressourcen aus, der größer-gleich dem Mindestwert ist.
Die Anzahl der auf der HMC angegebenen Prozessoren wirkt sich auf die Anzahl der logischen Prozessoren aus, die AIX zuordnet. Wenn die Partition simultanes Multithreadingunterstützt, AIX ordnet doppelt so viele logische Prozessoren als maximalen Prozessorwert zu, da es zwei Hardware-Threads pro Prozessor gibt und AIX jeden Hardware-Thread als separaten logischen Prozessor konfiguriert. Auf diese Weise kann AIX simultanes Multithreading aktivieren oder inaktivieren, ohne die Partition erneut zu booten.
Dynamische logische Partitionierung für Simultanes Multithreading
Während eine Partition aktiv ist, können Sie die Anzahl der Prozessoren ändern, die einer Partition überDLPAR-Prozeduren ( Dynamic Logical Partitioning ) auf der HMC zugeordnet sind. Sie können Prozessoren innerhalb der Einschränkungen des für die Partition definierten Prozessorbereichs hinzufügen oder entfernen. Wenn ein Prozessor zu einer Partition hinzugefügt wird, die für simultanes Multithreadingaktiviert ist, startet AIX beide Hardware-Threads und zwei logische Prozessoren werden online geschaltet. Wenn ein Prozessor aus einer Partition entfernt wird, die für simultanes Multithreadingaktiviert ist, stoppt AIX sowohl Hardware-Threads als auch zwei logische Prozessoren werden offline geschaltet.
Zwei DLPAR-Ereignisse werden generiert, wenn simultanes Multithreading aktiviert ist. Für jeden hinzugefügten oder entfernten logischen Prozessor wird ein Ereignis generiert. Die API für DLPAR-Scripts basiert auf logischen Prozessoren, sodass die Anzahl der DLPAR-Ereignisse dem Hinzufügen und Entfernen logischer Prozessoren entspricht. Wenn simultanes Multithreading in der Partition nicht aktiviert ist, gibt es nur ein DLPAR-Ereignis. AIX setzt die von der HMC gesendete DLPAR-Anforderung automatisch in die entsprechende Anzahl von DLPAR-Ereignissen um, die DLPAR-fähigen Anwendungen präsentiert werden.
Micro-Partitioning® und gleichzeitiges Multithreading
Der POWER Hypervisor™ speichert und stellt alle erforderlichen Prozessorstatus wieder her, wenn virtuelle Prozessoren zurückgestellt oder zugeteilt werden. Für Prozessoren, die für simultanes Multithreadingaktiviert sind, bedeutet dies zwei aktive Threadkontexte. Jeder Hardware-Thread wird von AIXals separater logischer Prozessor unterstützt. Aus diesem Grund wird eine dedizierte Partition, die mit einem physischen Prozessor erstellt wird, von AIX als logischer 2-Wege-Prozessor konfiguriert. Da dies unabhängig vom Partitionstyp ist, Eine gemeinsam genutzte Partition mit zwei virtuellen Prozessoren wird von AIX als logischer 4-Wege-Prozessor und eine gemeinsam genutzte Partition mit vier virtuellen Prozessoren von AIX als logischer 8-Wege-Prozessor konfiguriert. Paarweise verbundene Threads werden immer gleichzeitig in derselben Partition terminiert.
Gemeinsam genutzte Prozessorkapazität wird immer in Form von ganzen physischen Prozessoren bereitgestellt. Ohne simultanes Multithreadingkonfiguriert AIX eine 4-Wege-Partition für virtuelle Prozessoren mit 200 Einheiten Prozessorberechtigung als 4-Wege-Partition für logische Prozessoren, wobei jeder logische Prozessor die Leistung von 50% eines physischen Prozessors hat. Beim simultanen Multithreadingwird die 4-Wege-Partition des logischen Prozessors zu einer 8-Wege-Partition des logischen Prozessors, wobei jeder logische Prozessor ungefähr 25% der Leistung eines physischen Prozessors hat. Bei simultanem Multithreadinggelten Latenzprobleme, die normalerweise der Bruchkapazität eines virtuellen Prozessors zugeordnet sind, jedoch nicht linear für die Threads. Da beide Threads zusammen zugeteilt werden, sind sie für die Dauer eines Zuteilungsfensters von 50% aktiv und nutzen den zugrunde liegenden physischen Prozessor gemeinsam, um die logischen 25% zu erreichen. Dies bedeutet, dass jeder der logischen Prozessoren in der Lage ist, Interrupts doppelt so lange zu Feld, wie ihre individuellen Kapazitäten zulassen.
Prioritäten für Hardware-Threads
Der Prozessor ermöglicht die Zuordnung von Prioritäten zu Hardware-Threads. Die Differenz in der Priorität zwischen gleichgeordneten Threads bestimmt das Verhältnis der Slots für die Decodierung physischer Prozessoren, die jedem Thread zugeordnet sind. Mehr Slots bieten eine bessere Threadleistung. Normalerweise verwaltet AIX gleichgeordnete Threads mit derselben Priorität, erhöht oder senkt jedoch Threadprioritäten an wichtigen Stellen, um die Leistung zu optimieren. AIX verringert beispielsweise die Threadprioritäten, wenn der Thread nicht produktive Arbeit in der inaktiven Schleife oder in einer Kernelsperre ausführt. Threadprioritäten werden ausgelöst, wenn ein Thread eine kritische Kernelsperre hält. Diese Prioritätsanpassungen bleiben im Benutzermodus nicht bestehen. AIX berücksichtigt nicht die Zuteilungspriorität eines Software-Threads, wenn die Hardware-Threadpriorität ausgewählt wird.
Die Arbeit wird auf alle primären Threads verteilt, bevor sie an sekundäre Threads verteilt wird. Die Leistung eines Threads ist am besten, wenn sein paarweise verbundener Thread inaktiv ist. Die Threadaffinität wird auch beim Stehlen im Leerlauf und beim regelmäßigen Lastausgleich in der Ausführungswarteschlange berücksichtigt.