-
GEBIET DER TECHNIK
-
Die offenbarte Technologie bezieht sich allgemein auf Netzwerkschnittstellenkarten (Network Interface Cards, NICs), die hierin auch als Host-Fabric-Schnittstellen (Host Fabric Interfaces, HFIs) bezeichnet werden, auf zentrale Verarbeitungseinheiten (Central Processing Units, CPUs)-Kerne und das CPU-Kern-Lastenausgleichsmanagement.
-
HINTERGRUND
-
1 ist ein funktionales Blockdiagramm, das ein Beispiel eines Systems 100 veranschaulicht, das eine Computervorrichtung 110 wie etwa eine Netzwerk-Appliance einschließt. In dem Beispiel schließt die Computervorrichtung 110 eine zentrale Verarbeitungseinheit (Central Processing Unit, CPU) 112 zum Ausführen von Befehlen sowie einen Speicher 114 zum Speichern solcher Befehle ein. Die CPU 112 hat n CPU-Kerne. Wie hierin verwendet, bezieht sich der Ausdruck Kern allgemein auf eine Basisrecheneinheit der CPU. Der Speicher 114 kann einen Direktzugriffsspeicher (Random Access Memory, RAM), Flash-Speicher, Festplatten, Solid-State-Festplatten, optische Platten oder eine beliebige geeignete Kombination davon einschließen.
-
Die Computervorrichtung 110 schließt auch eine Netzwerkschnittstellenkarte (NIC) 116 ein, die ermöglicht, dass die Computervorrichtung 110 mit mindestens einer anderen Computervorrichtung 120 kommunizieren kann, wie etwa einer externen oder anderweitig entfernten Vorrichtung, mittels eines Kommunikationsmediums, wie etwa beispielsweise ein drahtgebundenes oder drahtloses Paketnetzwerk. Die Computervorrichtung 110 kann somit Daten an und/oder Daten von der anderen Computervorrichtung mittels ihrer NIC 116 übertragen/empfangen. Beispielsweise weist die NIC 116 n Empfangswarteschlangen zum Empfangen von Daten auf, z. B. Eingangspakete von der/den anderen Computervorrichtung(en).
-
Im Allgemeinen können NICs Datenflüsse, z. B. Datenpakete, über eine einer Anzahl von Empfangswarteschlangen mittels empfangsseitiger Skalierung (Receive Side Scaling, RSS) oder Implementierung eines Flow Director lenken. Server machen im Allgemeinen von solchen Funktionen Gebrauch, um Verbindungen, z. B. Übertragungssteuerungsprotokoll (Transmission Control Protocol, TCP)-Verbindungen, zur Verarbeitung an verschiedene CPU-Kerne zu verteilen.
-
Die Verwendung von RSS schließt typischerweise die Anwendung eines Filters ein, der eine Hash-Funktion über die Paketkopfzeilen der empfangenen Datenpakete anwendet. Eine Indirektionstabelle kann dann verwendet werden, um jedes Datenpaket einer bestimmten Empfangswarteschlange zuzuordnen, z. B. basierend auf dem entsprechenden Hash-Wert. Die CPU-Kerne können dann zugewiesen werden, um eine oder mehrere spezifische Warteschlangen zu bearbeiten, um eine verteilte Verarbeitung zu ermöglichen.
-
Da RSS normalerweise die Zuordnung vieler Datenflüsse zu einer begrenzten Anzahl von Empfangswarteschlangen beinhaltet, die eine begrenzte Anzahl von CPU-Kernen adressieren, besteht typischerweise eine hohe Wahrscheinlichkeit eines Ungleichgewichts im Datenverkehr, bei dem ein oder mehrere CPU-Kerne in nachteiliger Weise eine größere Menge von Datenverkehr abwickeln müssen. Während solche CPU-Kerne Schwierigkeiten haben, mit eingehenden Datenpaketen mitzuhalten, bleiben andere CPU-Kerne relativ untätig. Solche Situationen sind ineffizient und für die systemweite Leistung nicht optimal.
-
Figurenliste
-
Die hierin beschriebenen Konzepte werden beispielhaft und nicht einschränkend in den beigefügten Figuren dargestellt. Zur Vereinfachung und Klarheit der Darstellung sind die in den Figuren dargestellten Elemente nicht maßstabsgerecht gezeichnet, sofern nicht anders angegeben.
- 1 ist ein funktionales Blockdiagramm, das ein Beispiel eines Systems mit einer Computervorrichtung veranschaulicht, die eine zentrale Verarbeitungseinheit (CPU), einen Speicher und eine Netzwerkschnittstellenkarte (NIC) einschließt.
- 2 ist ein funktionales Blockdiagramm, das ein erstes Beispiel eines Systems veranschaulicht, das eine Computervorrichtung aufweist, die eine Netzwerkschnittstellenkarte (NIC) und mindestens einen Kern einer zentralen Verarbeitungseinheit (CPU) in Übereinstimmung mit bestimmten Ausführungsformen der offenbarten Technologie einschließt.
- 3 ist ein Flussdiagramm, das ein Beispiel eines computerimplementierten Verfahrens zum Durchführen eines CPU-Kern-Lastenausgleichs in Übereinstimmung mit bestimmten Ausführungsformen der offenbarten Technologie veranschaulicht.
- 4 ist ein Flussdiagramm, das ein anderes Beispiel eines computerimplementierten Verfahrens zum Durchführen eines CPU-Kern-Lastenausgleichs in Übereinstimmung mit bestimmten Ausführungsformen der offenbarten Technologie veranschaulicht.
- 5 veranschaulicht ein Beispiel von mehreren Schwellenwerten für die Empfangswarteschlange in Übereinstimmung mit bestimmten Ausführungsformen der offenbarten Technologie.
-
AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
-
Obwohl die Konzepte der vorliegenden Offenbarung verschiedenen Modifizierungen und alternativen Formen unterliegen können, sind dennoch spezifische Ausführungsformen hierin beispielhaft in den Zeichnungen dargestellt und detailliert beschrieben. Es sollte jedoch beachtet werden, dass nicht beabsichtigt ist, die Konzepte der vorliegenden Offenbarung auf die bestimmten offenbarten Formen zu beschränken, sondern alle Modifikationen, Äquivalente und Alternativen abzudecken, die mit der vorliegenden Offenbarung und beigefügten Ansprüchen im Einklang stehen.
-
Die Bezugnahme in dieser Beschreibung auf „eine bestimmte Ausführungsform“ oder „eine Ausführungsform“ bedeutet, dass die Ausführungsform eine bestimmte Funktion, eine Struktur oder ein Merkmal einschließen kann, nicht aber jede Ausführungsform diese bestimmte Funktion, die Struktur oder das Merkmal notwendigerweise einschließen kann oder muss. Darüber hinaus beziehen sich solche Ausdrücke nicht notwendigerweise auf dieselbe Ausführungsform. Wenn ferner eine bestimmte Funktion, eine bestimmte Struktur oder ein bestimmtes Merkmal in Verbindung mit einer Ausführungsform beschrieben wird, kann eine solche Funktion, eine solche Struktur oder ein solches Merkmal in Verbindung mit einer anderen offenbarten Ausführungsform verwendet werden, unabhängig davon, ob eine solche Funktion explizit in Verbindung mit einer solchen anderen offenbarten Ausführungsform beschrieben wird.
-
Die offenbarten Ausführungsformen können in einigen Fällen in Hardware, Firmware, Software oder einer beliebigen Kombination davon implementiert sein. Die offenbarten Ausführungsformen können auch als Anweisungen (z. B. ein Computerprogrammprodukt) implementiert werden, die auf einem oder mehreren vorübergehenden oder nicht vorübergehenden maschinenlesbaren (z. B. computerlesbaren) Speichermedien getragen oder gespeichert werden, die von einem oder mehreren Prozessoren gelesen und ausgeführt werden können. Ein maschinenlesbares Speichermedium kann als eine beliebige Speichervorrichtung, Mechanismus oder andere physische Struktur zum Speichern oder Übertragen von Informationen in einer von einer Maschine lesbaren Form (z. B. ein flüchtiger oder nicht flüchtiger Speicher, eine Medienplatte oder andere Medienvorrichtung) verkörpert sein.
-
In den Zeichnungen können einige Struktur- oder Verfahrensmerkmale in spezifischen Anordnungen und/oder Sortierungen gezeigt werden. Es sollte jedoch erkannt werden, dass solche spezifischen Anordnungen und/oder Sortierungen möglicherweise nicht erforderlich sind. Vielmehr können solche Merkmale in einigen Ausführungsformen auf eine andere Art und/oder in einer anderen Reihenfolge als in den veranschaulichenden Figuren gezeigt angeordnet sein. Zusätzlich soll das Einbeziehen eines Struktur- oder Verfahrensmerkmals in einer bestimmten Figur nicht implizieren, dass ein solches Merkmal in allen Ausführungsformen erforderlich ist und in einigen Ausführungsformen nicht enthalten sein oder mit anderen Merkmalen kombiniert sein kann.
-
Ausführungsformen der offenbarten Technologie betreffen allgemein auf Netzwerkschnittstellenkarten (NIC) basierende adaptive Techniken zum Durchführen einer dynamischen Lastenverteilung zwischen mehreren CPU-Kernen. In solchen Ausführungsformen kann die NIC die Last des eingehenden Datenverkehrs effektiv und dynamisch ausgleichen und folglich die Leistung des gesamten Systems optimieren. Tatsächlich kann eine signifikante Verbesserung der Netzwerkverarbeitungsleistung mit vielen Arbeitslasten realisiert werden, ohne dass Softwareunterstützung erforderlich ist.
-
Ausführungsformen können sich sowohl mit verbindungsorientiertem als auch verbindungslosen Datenverkehr befassen. Ein solcher dynamischer Lastenausgleich in einer NIC schließt im Allgemeinen das Erkennen ein, ob einer oder mehrere der CPU-Kerne überlastet sind. Eine solche Erkennung kann beispielsweise durch Messen der CPU-Kern-Reaktionsgeschwindigkeit in Echtzeit unter Verwendung einer oder mehrerer Metriken, wie etwa der Empfangswarteschlangenlänge, erfolgen. Wenn eine Bestimmung vorgenommen wird, dass ein bestimmter CPU-Kern überlastet ist, kann ein Teil der Datenpakete, die ursprünglich an den CPU-Kern adressiert oder anderweitig zugeordnet wurden, woanders hingeleitet werden. Beispielsweise können die Datenpakete zu einem relativ untätigen CPU-Kern umgeleitet werden.
-
2 ist ein funktionales Blockdiagramm, das ein erstes Beispiel eines Systems 200 veranschaulicht, das eine Computervorrichtung 210 aufweist, die eine Netzwerkschnittstellenkarte (NIC) 216, wie etwa eine Ethernet-Karte, und mindestens einen Kern einer zentralen Verarbeitungseinheit (CPU) 230 in Übereinstimmung mit bestimmten Ausführungsformen der offenbarten Technologie einschließt. Es wird darauf hingewiesen, dass, wie hierin verwendet, die Begriffe NIC und Host-Fabric-Schnittstelle (Host Fabric Interface, HFI) austauschbar sind.
-
In dem Beispiel weist die NIC 216 n Empfangswarteschlangen, wie etwa Register oder andere geeignete Datenspeicherkomponenten, zum Empfangen von Datenpaketen von anderen Computervorrichtungen auf. Eine erste Empfangswarteschlange 217 der NIC 216 kann ein oder mehrere eingehende Datenpakete 205 empfangen, z. B. von einer separaten Computervorrichtung über eine drahtgebundene oder drahtlose Verbindung.
-
Jede der n Empfangswarteschlangen der NIC 216 kann auf einem oder mehreren CPU-Kernen zugeordnet werden. Diese Zuordnung kann z. B. abhängig von den Hardwarespezifikationen und/oder anderen Details der bestimmten Implementierung rekonfigurierbar sein. In dem Beispiel werden Datenpakete, die an die erste Empfangswarteschlange 217 und die n-te Empfangswarteschlange 218 gesendet werden, dem ersten CPU-Kern 230 zugeordnet.
-
In Reaktion auf eine Bestimmung, dass der erste CPU-Kern 230 überlastet ist, z. B. die Längen von einer oder beiden der ersten und n-ten Empfangswarteschlangen 217 und 218 einen bestimmten Schwellenwert überschreiten, können die Datenpakete von einer oder beiden der ersten und n-ten Empfangswarteschlangen 217 und 218 zu einem anderen CPU-Kern wie dem n-ten CPU-Kern 231 umgeleitet werden, z. B. neu zugeordnet werden. Der CPU-Kern, zu dem die Datenpakete umgeleitet werden, kann basierend auf einer Bestimmung ausgewählt werden, dass der CPU-Kern weniger ausgelastet ist als der erste CPU-Kern 230.
-
Bestimmte Ausführungsformen können einen NICbasierten Load Balancer einschließen, der konfiguriert ist, um während der Umleitung verschiedene Laufzeitsituationen zu berücksichtigen. Beispielsweise können in Bezug auf Situationen, die TCP-Verbindungen betreffen, SYN-Pakete (die typischerweise den Beginn eines neuen Datenflusses kennzeichnen) identifiziert und zu einem schwach belasteten CPU-Kern gelenkt werden, wenn das System bestimmt, dass der CPU-Kern, der den Datenverkehr abwickelt, überladen ist. Ein Flow Director kann eine exakte Übereinstimmungsregel, die diesen Datenfluss identifiziert, zusammen mit einer Aktion zum Umleiten der Pakete zu dem CPU-Kern mit einer geringeren Last implementieren. Dies hält vorteilhafterweise die Datenflussaffinität für nachfolgende Datenpakete aufrecht, die zu diesem Fluss gehören. Außerdem können bestehende Verbindungen weiterhin mit ihrer ursprünglichen CPU-Kernauswahl bedient werden.
-
In Bezug auf Situationen, die verbindungslose Arbeitslasten beinhalten, wie zum Beispiel diejenigen, die Schlüsselwertspeicher (Key-Value Store, KVS) (z. B. Memcached) beinhalten, kann ein Abschnitt des Schlüssels verwendet werden, um Datenpakete zu einem CPU-Lookup-Kern zu leiten, um kernübergreifende Snoop-Anfragen zu minimieren und auch die Systemleistung im Allgemeinen zu maximieren, da derselbe Schlüssel normalerweise auf denselben CPU-Kern für den Lookup verweist. Ausführungsformen können bewirken, dass die Datenpaketumleitung unmittelbar dann erfolgt, sobald eine CPU-Kernüberlastung erkannt wird, indem eine RSS-Indirektionstabelle abgeändert wird, um einige Hash-Werte auf Empfangswarteschlangen zu verweisen, die von CPU-Kernen mit geringerer Last bedient werden.
-
Aktuelle Lastenausgleichstechniken werden im Allgemeinen an einer dedizierten Appliance oder einem Server vor mehreren Servern durchgeführt, die auf der Knotenebene, jedoch nicht auf der CPU-Kernebene arbeiten können. Während andere Techniken in der Software implementiert werden können, wie etwa die Empfangspaketlenkung (Receive Packet Steering, RPS, eine Softwareimplementierung von RSS), und in Verbindung mit Dienstprogrammen verwendet werden können, die beim Überwachen der CPU-Last helfen, z. B. mpstat, führen solche Techniken in nachteiliger Weise zu zusätzlicher Latenz und belegen auch wertvolle CPU-Zyklen für die Lastausgleichsaufgaben. Im Gegensatz dazu ermöglichen Ausführungsformen der offenbarten Technologie in vorteilhafter Weise einer NIC, die Last in Echtzeit ohne Softwareinterferenz in dem kritischen Pfad transparent auszugleichen.
-
Ausführungsformen umfassen im Allgemeinen die Verwendung der Fähigkeit einer NIC, Datenpakete/Datenflüsse zu unterschiedlichen Empfangswarteschlangen zur Verarbeitung durch verschiedene CPU-Kerne zu lenken, was in vorteilhafter Weise zu Latenzverbesserungen, wie etwa das Vermeiden von Kern-Kern-Übertragungen für TCP-Verbindungen, und auch zu einem erhöhten Datendurchsatz führt. In bestimmten Situationen muss der dynamische Lastenausgleich möglicherweise erzwungen werden, um die Zuordnung von Datenpaketen zu CPU-Kernen zu ändern.
-
In bestimmten Ausführungsformen kann RSS verwendet werden, um eine Hash-Funktion auf der Datenpaketkopfzeile durchzuführen und Datenflüsse zu verschiedenen Empfangswarteschlangen zuzuordnen, die verschiedenen CPU-Kernen unter Verwendung einer entsprechenden Indirektionstabelle zugewiesen sind. Mehrere Datenwarteschlangen können demselben CPU-Kern zugeordnet werden, und dies kann von einem Benutzer konfiguriert werden.
-
Andere Ausführungsformen können einen Flow Director einschließen, der programmierbare Filter aufweist, die verwendet werden können, um beispielsweise spezifische Datenflüsse oder Sätze von Datenflüssen basierend auf einer genauen Übereinstimmung eines Abschnitts von Datenpaketen zu identifizieren und das/die Datenpaket(e) dann zu bestimmten Empfangswarteschleifen zu leiten, die z. B. spezifischen CPU-Kernen zugeordnet sind.
-
3 ist ein Flussdiagramm, das ein Beispiel eines computerimplementierten Verfahrens 300 zum Durchführen eines CPU-Kern-Lastenausgleichs in Übereinstimmung mit bestimmten Ausführungsformen der offenbarten Technologie veranschaulicht. Bei Block 302 wird ein bestimmter CPU-Kern durch die NIC überwacht. Beispielsweise kann die NIC die Warteschlangenlänge für eine Empfangswarteschlange überwachen, die dem CPU-Kern zugeordnet ist. Die Warteschlangenlänge für die Empfangswarteschlange kann eine quantifizierte Maßangabe dafür einschließen, wie viele Datenverarbeitungsaufgaben für die Empfangswarteschlange zu diesem bestimmten Zeitpunkt aufgereiht sind, z. B. die Anzahl ausstehender Empfangspakete, z. B. Datenpakete, die noch nicht von dem entsprechenden CPU-Kern verarbeitet wurden.
-
Bei Block 304 wird eine Bestimmung dahingehend vorgenommen, ob der CPU-Kern überlastet ist. Eine solche Bestimmung kann von der NIC zumindest zum Teil zum Beispiel basierend auf der Empfangswarteschlangenlänge vorgenommen werden. In Reaktion auf eine Bestimmung, dass der CPU-Kern überlastet ist, z. B. dass die Empfangswarteschlangenlänge zu groß ist, können Datenpakete, die an den CPU-Kern adressiert wurden, zu einem anderen CPU-Kern umgeleitet werden, wie bei Block 306 gezeigt, und die Verarbeitung kann zu Block 302 zurückkehren, andernfalls fährt die Verarbeitung einfach direkt zurück bei Block 302 fort.
-
Man wird erkennen, dass die nachfolgende Durchführung des Prozesses 300, beginnend bei Block 302, fortlaufend, in regelmäßigen Abständen oder in Reaktion auf ein bestimmtes Ereignis, wie beispielsweise eine Benutzeranfrage, vorgenommen werden kann. Man wird auch erkennen, dass die CPU-Kerne Teil derselben CPU oder separater CPUs sein können.
-
Es gibt eine Anzahl von Situationen, in denen aktuelle Versuche des RSS-basierten Lastenausgleichs die Leistungsanforderungen nicht erfüllen, wie etwa Situationen, in denen TCP-Flüsse einen bestimmten CPU-Kern überlasten. Mit RSS können Datenpaketkopfzeilen mit einem bestimmten Hash-Wert einem bestimmten CPU-Kern basierend auf der entsprechenden Indirektionstabelle zugeordnet werden. Wenn ein bestimmter CPU-Kern einige wenige große TCP-Flüsse abwickelt oder vorübergehend zu viele Flüsse erhält, wird dieser CPU-Kern überlastet. In solchen Situationen können neue Datenflüsse beispielsweise CPU-Kernen neu zugewiesen werden, die eine geringere Last haben.
-
In Situationen, die Arbeitslasten vom KVS-Typ beinhalten, führt eine Affinität auf Objektebene im Allgemeinen dazu, dass Anforderungen an entsprechende CPU-Kerne verteilt werden, die auf den Partitionen der Anwendung basieren, z. B. Schlüsselraumpartitionierung. Anforderungen, die denselben Schlüssel (oder denselben Schlüsselbereich) aufweisen, können zur Verarbeitung an denselben CPU-Kern gesendet werden, wodurch das kernübergreifende Kommunikationsaufkommen signifikant reduziert wird und die Leistung oftmals signifikant verbessert wird.
-
Um einen dynamischen Lastenausgleich durchzuführen, muss eine Überlastung eines CPU-Kerns erkannt werden. Dies kann erreicht werden, indem den CPU-Kernen ermöglicht wird, mit der NIC zu kommunizieren, z. B. unter Verwendung von Out-of-Band-Nachrichtenübermittlung über deren Auslastung. Alternativ kann die NIC die Länge der Empfangswarteschlange für einen bestimmten CPU-Kern beobachten. Wenn die NIC feststellt, dass eine bestimmte Empfangswarteschlangenlänge einen bestimmten Schwellenwert überschreitet, kann sie feststellen, dass gerade eine Überlastung auftritt, und den Datenverkehr anschließend an den CPU-Kern an einer anderen Stelle lenken.
-
Wie hierin verwendet, bezieht sich der Begriff Empfangswarteschlangenlänge allgemein auf eine quantifizierte Maßangabe dafür, wie viele Datenverarbeitungsaufgaben für eine bestimmte Empfangswarteschlange zu diesem bestimmten Zeitpunkt auf die Verarbeitung durch die NIC warten, z. B. die Anzahl ausstehender Empfangspakete, wie etwa Datenpakete, die noch nicht von dem entsprechenden CPU-Kern verarbeitet wurden.
-
4 ist ein Flussdiagramm, das ein anderes Beispiel eines computerimplementierten Verfahrens 400 zum Durchführen eines Lastenausgleichs in Übereinstimmung mit bestimmten Ausführungsformen der offenbarten Technologie veranschaulicht. Bei Block 402 wird die Warteschlangenlänge für eine bestimmte Empfangswarteschlange, z. B. eine Empfangswarteschlange einer NIC, die einem bestimmten CPU-Kern zugeordnet ist, von der NIC überwacht.
-
Bei Block 404 wird eine Bestimmung vorgenommen, ob die Empfangswarteschlangenlänge einen ersten Schwellenwert überschreitet. In Reaktion auf eine Bestimmung, dass die Empfangswarteschlangenlänge den ersten Schwellenwert überschreitet, können Datenpakete, die an den CPU-Kern adressiert wurden, zu einem anderen CPU-Kern umgeleitet werden, wie bei Block 406 gezeigt, und die Verarbeitung kann zu Block 402 zurückkehren, andernfalls fährt die Verarbeitung bei Block 408 fort.
-
Bei Block 408 wird eine Bestimmung vorgenommen, ob die Empfangswarteschlangenlänge einen zweiten Schwellenwert überschreitet. In Reaktion auf eine Bestimmung, dass die Empfangswarteschlangenlänge den zweiten Schwellenwert überschreitet, können Datenpakete, die an den CPU-Kern adressiert wurden, probabilistisch zu einem anderen CPU-Kern umgeleitet werden, wie bei Block 410 gezeigt, und die Verarbeitung kann zu Block 402 zurückkehren, andernfalls kehrt die Verarbeitung einfach zu Block 402 zurück.
-
In Situationen, in denen die Empfangswarteschlangenlänge den zweiten Schwellenwert, aber nicht den ersten Schwellenwert überschreitet, kann eine Bestimmung vorgenommen werden, wie nah die Empfangswarteschlangenlänge an dem ersten Schwellenwert liegt, wie schnell sich die Empfangswarteschlangenlänge an den ersten Schwellenwert annähert - oder sich davon entfernt -, welche Warteschlangenlänge anderer Empfangswarteschlangen dem CPU-Kern zugeordnet sind, oder eine beliebige Kombination davon.
-
5 veranschaulicht ein Beispiel 500 von mehreren Schwellenwerten für die Empfangswarteschlange in Übereinstimmung mit bestimmten Ausführungsformen der offenbarten Technologie. Das Beispiel 500 schließt einen ersten Schwellenwert 505 und einen zweiten Schwellenwert 510 ein, wie beispielsweise etwa den ersten und den zweiten Schwellenwert, die vorstehend in Verbindung mit 4 erörtert wurden.
-
In Situationen, die TCP-Verbindungen beinhalten, werden Datenpakete, die zu derselben Verbindung gehören, im Allgemeinen nicht an verschiedene CPU-Kerne gesendet. Wenn somit festgestellt wird, dass ein CPU-Kern überlastet ist, kann die NIC somit SYN-Pakete identifizieren und neue Datenflüsse zu anderen CPU-Kernen umlenken. In solchen Ausführungsformen kann der Flow Director Filter aufweisen, die früher in den Empfangspfad der NIC platziert wurden, und der Zielfluss kann dem Flow Director hinzugefügt werden, um nachfolgende Datenpakete dieses Flusses zu einem relativ untätigen CPU-Kern zu lenken. Wenn anschließend ein neues Datenpaket eingeht, kann die NIC zuerst eine Übereinstimmung mit den Flow Director-Filtern prüfen, und, wenn es eine Übereinstimmung gibt, kann das Datenpaket zu seinem neu ausgewählten CPU-Kern gelenkt werden; andernfalls kann das Datenpaket, z. B. standardmäßig, zu der RSS-Indirektionstabelle weitergegeben werden.
-
Für KVS-Arbeitslasten (z. B. Memcached) können die Daten partitioniert werden, z. B. als Shard, sodass jeder CPU-Kern exklusiv auf seine eigene Partition bei der Parallelverarbeitung ohne Zwischenkernkommunikation zugreifen kann. Die Kernaffinität auf Objektebene beinhaltet im Allgemeinen die Verteilung von Anforderungen an CPU-Kerne, die auf der Partitionierung der Anwendung basieren. Beispielsweise würden Anfragen, die den gleichen Schlüssel teilen, alle zu dem CPU-Kern gehen, der die Partition dieses Schlüssels abwickelt. Ausführungsformen können das Erkennen des überlasteten CPU-Kerns durch Überwachen der Empfangswarteschlangenlänge und das erneute Konfigurieren der RSS-Indirektionstabelle einschließen, sodass der gestaute CPU-Kern weniger Warteschlangen zugeordnet wird.
-
BEISPIELE
-
Veranschaulichende Beispiele der hierin offenbarten Technologien werden nachstehend bereitgestellt. Eine Ausführungsform der Technologien kann eines oder mehrere und eine beliebige Kombination der nachfolgend beschriebenen Beispiele einschließen.
-
Beispiel 1 schließt eine Netzwerkschnittstellenkarte (NIC) ein, die konfiguriert ist, um einen ersten Kern einer zentralen Verarbeitungseinheit (CPU) zu überwachen, der einer ersten Empfangswarteschlange, die eine Empfangswarteschlangenlänge aufweist, zugeordnet ist; zumindest teilweise auf der Empfangswarteschlangenlänge basierend zu bestimmen, ob der CPU-Kern überlastet ist; und in Reaktion auf eine Bestimmung, dass der CPU-Kern überlastet ist, die Datenpakete, die von der ersten Empfangswarteschlange an den ersten CPU-Kern adressiert wurden, zu einem zweiten CPU-Kern umzuleiten.
-
Beispiel 2 schließt den Gegenstand von Beispiel 1 ein, wobei die NIC ferner konfiguriert ist, um zu bestimmen, dass der zweite CPU-Kern eine geringere Last als der erste CPU-Kern aufweist.
-
Beispiel 3 schließt den Gegenstand eines der Beispiele 1 bis 2 ein, wobei das Bestimmen, ob der CPU-Kern überlastet ist, das Bestimmen einschließt, ob die Empfangswarteschlangenlänge einen ersten Schwellenwert überschreitet, wobei ferner die Bestimmung, dass der CPU-Kern überlastet ist, zumindest teilweise auf einer Bestimmung basiert, dass die Empfangswarteschlangenlänge den ersten Schwellenwert überschreitet.
-
Beispiel 4 schließt den Gegenstand eines der Beispiele 1 bis 3 ein, wobei das Bestimmen, ob der CPU-Kern überlastet ist, ferner das Bestimmen, in Reaktion auf eine Bestimmung, dass die Empfangswarteschlangenlänge den ersten Schwellenwert nicht überschreitet, einschließt, ob die Empfangswarteschlangenlänge einen zweiten Schwellenwert überschreitet, wobei ferner die Bestimmung, dass der CPU-Kern überlastet ist, zumindest teilweise auf einer Bestimmung basiert, dass die Empfangswarteschlangenlänge den zweiten Schwellenwert überschreitet.
-
Beispiel 5 schließt den Gegenstand von Beispiel 4 ein, und wobei das Umleiten probabilistisch durchgeführt wird.
-
Beispiel 6 schließt den Gegenstand eines der Beispiele 1 bis 5 ein, wobei das Umleiten einschließt, dass die NIC SYN-Pakete identifiziert und neue Datenflüsse zu mindestens dem zweiten CPU-Kern umlenkt.
-
Beispiel 7 schließt den Gegenstand eines der Beispiele 1 bis 6 ein, wobei die NIC ferner konfiguriert ist, um die Überwachung und Bestimmung fortlaufend zu wiederholen.
-
Beispiel 8 schließt den Gegenstand von Beispiel 7 ein, wobei die NIC ferner konfiguriert ist, um das Empfangen und Bestimmen zu einem bestimmten Zeitintervall zu wiederholen.
-
Beispiel 9 schließt den Gegenstand eines beliebigen der Beispiele 1 bis 8 ein, und wobei die NIC eine Ethernet-Karte ist.
-
Beispiel 10 schließt ein System ein, umfassend: eine Netzwerkschnittstellenkarte (NIC) einer ersten Computervorrichtung, wobei die NIC eine erste Empfangswarteschlange aufweist; einen ersten Kern einer zentralen Verarbeitungseinheit (CPU) der ersten Computervorrichtung, wobei der erste CPU-Kern der ersten Empfangswarteschlange zugeordnet wird; und Hardware, die konfiguriert ist, um zumindest teilweise auf der Empfangswarteschlangenlänge der Empfangswarteschlange basierend zu bestimmen, ob der erste CPU-Kern überlastet ist.
-
Beispiel 11 schließt den Gegenstand von Beispiel 10 ein, wobei das System ferner einen zweiten CPU-Kern mit einer geringeren Last als der erste CPU-Kern umfasst.
-
Beispiel 12 schließt den Gegenstand eines beliebigen der Beispiele 10 bis 11 ein, und wobei die Hardware ferner konfiguriert ist, um zu veranlassen, dass Datenpakete, die an den ersten CPU-Kern adressiert wurden, zu dem zweiten CPU-Kern umgeleitet werden.
-
Beispiel 13 schließt den Gegenstand eines beliebigen der Beispiele 10 bis 12 ein, und wobei die Hardware konfiguriert ist, um zu bestimmen, ob der erste CPU-Kern überlastet ist, indem bestimmt wird, dass eine Empfangswarteschlangenlänge der ersten Empfangswarteschlange einen ersten Schwellenwert überschreitet.
-
Beispiel 14 schließt den Gegenstand eines beliebigen der Beispiele 10 bis 13 ein, und wobei die Hardware konfiguriert ist, um zu bestimmen, ob der erste CPU-Kern überlastet ist, indem bestimmt wird, dass die Empfangswarteschlangenlänge der ersten Empfangswarteschlange nicht den ersten Schwellenwert, aber einen zweiten Schwellenwert überschreitet.
-
Beispiel 15 schließt den Gegenstand eines beliebigen der Beispiele 10 bis 14 ein, und wobei die NIC eine Ethernet-Karte ist.
-
Beispiel 16 schließt ein oder mehrere nicht vorübergehende, computerlesbare Medien ein, die Anweisungen umfassen, die bei Ausführung durch einen Prozessor den Prozessor veranlassen, Operationen zum Lastenausgleich in einer Netzwerkschnittstellenkarte (NIC) durchzuführen, wobei die Operationen Folgendes umfassen: Überwachen eines ersten Kerns einer zentralen Verarbeitungseinheit (CPU) der NIC, wobei der erste CPU-Kern einer ersten Empfangswarteschlange, die eine Empfangswarteschlangenlänge aufweist, zugeordnet ist; Bestimmen, zumindest teilweise auf der Empfangswarteschlangenlänge basierend, ob der CPU-Kern überlastet ist; und in Reaktion auf eine Bestimmung, dass der CPU-Kern überlastet ist, Umleiten von Datenpaketen, die von der ersten Empfangswarteschlange an den ersten CPU-Kern adressiert waren, zu einem zweiten CPU-Kern.
-
Beispiel 17 schließt den Gegenstand von Beispiel 16 ein, wobei die Operationen ferner das Bestimmen umfassen, dass der zweite CPU-Kern eine geringere Last als der erste CPU-Kern aufweist.
-
Beispiel 18 schließt den Gegenstand eines der Beispiele 16 bis 17 ein, und wobei das Bestimmen, ob der CPU-Kern überlastet ist, das Bestimmen einschließt, ob die Empfangswarteschlangenlänge einen ersten Schwellenwert überschreitet, wobei ferner die Bestimmung, dass der CPU-Kern überlastet ist, zumindest teilweise auf einer Bestimmung basiert, dass die Empfangswarteschlangenlänge den ersten Schwellenwert überschreitet.
-
Beispiel 19 schließt den Gegenstand eines der Beispiele 16 bis 18 ein, wobei das Bestimmen, ob der CPU-Kern überlastet ist, ferner das Bestimmen, in Reaktion auf eine Bestimmung, dass die Empfangswarteschlangenlänge den ersten Schwellenwert nicht überschreitet, einschließt, ob die Empfangswarteschlangenlänge einen zweiten Schwellenwert überschreitet, wobei die Bestimmung, dass der CPU-Kern überlastet ist, ferner zumindest teilweise auf einer Bestimmung basiert, dass die Empfangswarteschlangenlänge den zweiten Schwellenwert überschreitet.
-
Beispiel 20 schließt den Gegenstand eines beliebigen der Beispiele 16 bis 19 ein, und wobei das Umleiten probabilistisch durchgeführt wird.
-
Beispiel 21 schließt den Gegenstand eines beliebigen der Beispiele 16 bis 20 ein, wobei die Operationen ferner das Wiederholen der Überwachung und das fortlaufende Bestimmen einschließen.
-
Die oben beschriebenen Versionen des offenbarten Gegenstands haben viele Vorteile, die entweder beschrieben wurden oder für Fachleute auf dem Gebiet offensichtlich wären. Trotzdem sind nicht alle diese Vorteile oder Merkmale in allen Versionen der offenbarten Vorrichtung, Systeme oder Verfahren erforderlich.
-
Zusätzlich bezieht sich diese schriftliche Beschreibung auf bestimmte Merkmale. Es versteht sich, dass die Offenbarung in dieser Beschreibung alle möglichen Kombinationen dieser bestimmten Merkmale umfasst. Wenn beispielsweise ein bestimmtes Merkmal im Zusammenhang mit einem bestimmten Aspekt oder einer bestimmten Ausführungsform offenbart wird, kann dieses Merkmal weitestgehend auch im Kontext anderer Aspekte und Ausführungsformen verwendet werden.
-
Auch wenn in dieser Anmeldung auf ein Verfahren mit zwei oder mehr definierten Schritten oder Operationen Bezug genommen wird, können die definierten Schritte oder Operationen in beliebiger Reihenfolge oder gleichzeitig durchgeführt werden, sofern der Kontext diese Möglichkeiten nicht ausschließt.
-
Ausführungsformen der offenbarten Technologie können in verschiedenen Arten von Architekturen integriert sein. Beispielsweise können bestimmte Ausführungsformen als eines der Folgenden oder eine Kombination davon implementiert werden: ein oder mehrere Mikrochips oder integrierte Schaltungen, die unter Verwendung einer Hauptplatine, eines Grafik- und/oder Videoprozessors, eines Mehrkernprozessors, festverdrahteter Logik, von einer Speichervorrichtung gespeicherter und von einem Mikroprozessor ausgeführter Software, Firmware, einer anwendungsspezifischen integrierten Schaltung (Application Specific Integrated Circuit, ASIC) und/oder eines feldprogrammierbaren Gate-Array (Field Programmable Gate Array, FPGA) verbunden sind. Der Ausdruck „Logik“, wie hierin verwendet, kann beispielsweise Software, Hardware oder eine beliebige Kombination davon einschließen.
-
Obwohl hierin bestimmte Ausführungsformen dargestellt und beschrieben wurden, werden Fachleute auf dem Gebiet verstehen, dass eine Reihe verschiedener alternativer und/oder gleichwertiger Implementierungen statt der jeweils dargestellten und beschriebenen Ausführungsformen eingesetzt werden können, ohne vom Umfang der Ausführungsformen der offengelegten Technologie abzuweichen. Die vorliegende Anmeldung soll jegliche Anpassungen oder Varianten der hierin veranschaulichten und beschriebenen Ausführungsformen abdecken. Daher ist es klar beabsichtigt, dass Ausführungsformen der offenbarten Technologie nur durch die folgenden Ansprüche und deren Äquivalente beschränkt werden.