DE102018204859A1 - Dynamischer Lastenausgleich in Netzschnittstellenkarten für eine optimale Leistung auf Systemebene - Google Patents

Dynamischer Lastenausgleich in Netzschnittstellenkarten für eine optimale Leistung auf Systemebene Download PDF

Info

Publication number
DE102018204859A1
DE102018204859A1 DE102018204859.2A DE102018204859A DE102018204859A1 DE 102018204859 A1 DE102018204859 A1 DE 102018204859A1 DE 102018204859 A DE102018204859 A DE 102018204859A DE 102018204859 A1 DE102018204859 A1 DE 102018204859A1
Authority
DE
Germany
Prior art keywords
cpu core
receive queue
nic
overloaded
queue length
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102018204859.2A
Other languages
English (en)
Inventor
Ren Wang
Saikrishna Edupuganti
Tsung-Yuan Tai
Daniel Daly
Antoine Kaufmann
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102018204859A1 publication Critical patent/DE102018204859A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)

Abstract

Eine Netzwerkschnittstellenkarte (NIC) kann konfiguriert sein, um einen ersten Kern einer zentralen Verarbeitungseinheit (CPU) zu überwachen, der einer ersten Empfangswarteschlange, die eine Empfangswarteschlangenlänge aufweist, zugeordnet ist. Die NIC kann auch konfiguriert sein, um basierend auf der Empfangswarteschlangenlänge zu bestimmen, ob der CPU-Kern überlastet ist. Die NIC kann auch konfiguriert sein, um Datenpakete, die von der ersten Empfangswarteschlange an den ersten CPU-Kern adressiert wurden, in Reaktion auf eine Bestimmung, dass der CPU-Kern überlastet ist, zu einem zweiten CPU-Kern umzuleiten.

Description

  • 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.

Claims (21)

  1. Netzwerkschnittstellenkarte (Network Interface Card, NIC), 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, Datenpakete, die von der ersten Empfangswarteschlange an den ersten CPU-Kern adressiert waren, zu einem zweiten CPU-Kern umzuleiten.
  2. NIC nach Anspruch 1, die ferner konfiguriert ist, um zu bestimmen, dass der zweite CPU-Kern eine geringere Last als der erste CPU-Kern aufweist.
  3. NIC nach einem der Ansprüche 1-2, wobei die NIC konfiguriert ist, um zu bestimmen, ob der CPU-Kern überlastet ist, indem bestimmt wird, ob die Empfangswarteschlangenlänge einen ersten Schwellenwert überschreitet, und wobei die Bestimmung, dass der CPU-Kern überlastet ist, ferner zumindest teilweise auf einer Bestimmung basiert, dass die Empfangswarteschlangenlänge den ersten Schwellenwert überschreitet.
  4. NIC nach einem der Ansprüche 1-3, wobei die NIC ferner konfiguriert ist, zu bestimmen, ob der CPU-Kern überlastet ist, indem in Reaktion auf eine Bestimmung, dass die Empfangswarteschlangenlänge den ersten Schwellenwert nicht überschreitet, bestimmt wird, ob die Empfangswarteschlangenlänge einen zweiten Schwellenwert überschreitet, und wobei ferner die Bestimmung, dass der CPU-Kern überlastet ist, zumindest teilweise auf einer Bestimmung basiert, dass die Empfangswarteschlangenlänge den zweiten Schwellenwert überschreitet.
  5. NIC nach Anspruch 4, wobei das Umleiten probabilistisch durchgeführt wird.
  6. NIC nach einem der Ansprüche 1-5, wobei das Umleiten das Identifizieren von SYN-Paketen und das Umlenken neuer Datenflüsse zu mindestens dem zweiten CPU-Kern einschließt.
  7. NIC nach einem der Ansprüche 1-6, wobei die NIC ferner konfiguriert ist, um das Überwachen und Bestimmen fortlaufend zu wiederholen.
  8. NIC nach Anspruch 7, wobei die NIC ferner konfiguriert ist, das Empfangen und Bestimmen zu einem bestimmten Zeitintervall zu wiederholen.
  9. NIC nach einem der Ansprüche 1-8, wobei die NIC eine Ethernet-Karte ist.
  10. System zum Durchführen eines Datenverkehrslastenausgleichs in einer ersten Computervorrichtung, das System umfassend: eine Netzwerkschnittstellenkarte (NIC) der 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.
  11. System nach Anspruch 10, ferner umfassend einen zweiten CPU-Kern, der eine geringere Last als der erste CPU-Kern aufweist.
  12. System nach einem der Ansprüche 10-11, wobei die Hardware ferner konfiguriert ist, um veranlassen, dass Datenpakete, die für den ersten CPU-Kern adressiert wurden, zu dem zweiten CPU-Kern umgeleitet werden.
  13. System nach einem der Ansprüche 10-12, 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.
  14. System nach einem der Ansprüche 10-13, 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.
  15. System nach einem der Ansprüche 10-14, wobei die NIC eine Ethernet-Karte ist.
  16. Ein oder mehrere nicht vorübergehende, computerlesbare Medien, 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.
  17. Ein oder mehrere nicht vorübergehende, computerlesbare Medien nach Anspruch 16, wobei die Operationen ferner das Bestimmen umfassen, dass der zweite CPU-Kern eine geringere Last als der erste CPU-Kern aufweist.
  18. Ein oder mehrere nicht vorübergehende, computerlesbare Medien nach einem der Ansprüche 16-17, 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.
  19. Ein oder mehrere nicht vorübergehende, computerlesbare Medien nach einem der Ansprüche 16-18, 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.
  20. Ein oder mehrere nicht vorübergehende, computerlesbare Medien nach einem der Ansprüche 16-19, wobei das Umleiten probabilistisch durchgeführt wird.
  21. Ein oder mehrere nicht vorübergehende, computerlesbare Medien nach einem der Ansprüche 16-20, wobei die Operationen ferner das Wiederholen der Überwachung und das fortlaufende Bestimmen einschließen.
DE102018204859.2A 2017-03-31 2018-03-29 Dynamischer Lastenausgleich in Netzschnittstellenkarten für eine optimale Leistung auf Systemebene Pending DE102018204859A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/476,379 US20180285151A1 (en) 2017-03-31 2017-03-31 Dynamic load balancing in network interface cards for optimal system level performance
US15/476,379 2017-03-31

Publications (1)

Publication Number Publication Date
DE102018204859A1 true DE102018204859A1 (de) 2018-10-04

Family

ID=63525260

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018204859.2A Pending DE102018204859A1 (de) 2017-03-31 2018-03-29 Dynamischer Lastenausgleich in Netzschnittstellenkarten für eine optimale Leistung auf Systemebene

Country Status (3)

Country Link
US (2) US20180285151A1 (de)
CN (1) CN108694087A (de)
DE (1) DE102018204859A1 (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10439930B2 (en) * 2017-04-26 2019-10-08 Futurewei Technologies, Inc. Packet batch processing with graph-path based pre-classification
US10802885B2 (en) * 2017-05-17 2020-10-13 Samsung Electronics Co., Ltd. Method and apparatus for data processing based on multicore
US10572400B2 (en) * 2017-06-15 2020-02-25 Mellanox Technologies, Ltd. Shared processing of a packet flow by multiple cores
US11593134B2 (en) 2018-01-26 2023-02-28 Nicira, Inc. Throttling CPU utilization by implementing a rate limiter
US11646980B2 (en) 2018-03-30 2023-05-09 Intel Corporation Technologies for packet forwarding on ingress queue overflow
US20190319933A1 (en) * 2018-04-12 2019-10-17 Alibaba Group Holding Limited Cooperative tls acceleration
US10476801B1 (en) * 2018-04-27 2019-11-12 Nicira, Inc. Dynamic distribution of RSS engines to virtual machines based on flow data
US10834005B2 (en) * 2018-07-23 2020-11-10 Dell Products L.P. Buffer shortage management system
US10686716B2 (en) 2018-07-23 2020-06-16 Vmware, Inc. Dynamic processing of packets using multiple receive queue features
US11025546B2 (en) * 2018-07-25 2021-06-01 Vmware, Inc. Selection of paired transmit queue
CN109450816B (zh) * 2018-11-19 2022-08-12 迈普通信技术股份有限公司 一种队列调度方法、装置、网络设备及存储介质
US11182205B2 (en) * 2019-01-02 2021-11-23 Mellanox Technologies, Ltd. Multi-processor queuing model
US10721186B1 (en) * 2019-03-30 2020-07-21 Fortinet, Inc. Packet processing with per-CPU (central processing unit) flow tables in a network device
CN115174482B (zh) * 2019-05-21 2023-06-02 超聚变数字技术有限公司 网络设备的报文分流方法和装置
WO2021050951A1 (en) * 2019-09-11 2021-03-18 Intel Corporation Hardware queue scheduling for multi-core computing environments
CN110618880B (zh) * 2019-09-19 2022-05-27 中国银行股份有限公司 一种跨系统数据传递系统和方法
CN110688229B (zh) * 2019-10-12 2022-08-02 阿波罗智能技术(北京)有限公司 任务处理方法和装置
US11483246B2 (en) 2020-01-13 2022-10-25 Vmware, Inc. Tenant-specific quality of service
US20210224138A1 (en) * 2020-01-21 2021-07-22 Vmware, Inc. Packet processing with load imbalance handling
US11599395B2 (en) * 2020-02-19 2023-03-07 Vmware, Inc. Dynamic core allocation
US11343152B2 (en) * 2020-04-07 2022-05-24 Cisco Technology, Inc. Traffic management for smart network interface cards
CN111314249B (zh) * 2020-05-08 2021-04-20 深圳震有科技股份有限公司 一种5g数据转发平面的避免数据包丢失的方法和服务器
US11876885B2 (en) * 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
CN112073327B (zh) * 2020-08-19 2023-02-24 广东省新一代通信与网络创新研究院 一种抗拥塞的软件分流方法、装置及存储介质
US11539633B2 (en) 2020-08-31 2022-12-27 Vmware, Inc. Determining whether to rate limit traffic
US20220269424A1 (en) * 2021-02-19 2022-08-25 Vast Data Ltd. Resource allocation in a storage system
US11799784B2 (en) 2021-06-08 2023-10-24 Vmware, Inc. Virtualized QoS support in software defined networks
CN114553678B (zh) * 2022-02-09 2024-02-13 紫光云(南京)数字技术有限公司 一种云网络软slb流量问题的诊断方法
WO2024069219A1 (en) * 2022-09-30 2024-04-04 Telefonaktiebolaget Lm Ericsson (Publ) Receive side application auto-scaling
CN115858152B (zh) * 2022-11-27 2024-05-28 北京泰策科技有限公司 一种基于单端口的dns负载均衡性能优化方案
US11973693B1 (en) * 2023-03-13 2024-04-30 International Business Machines Corporation Symmetric receive-side scaling (RSS) for asymmetric flows

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6760775B1 (en) * 1999-03-05 2004-07-06 At&T Corp. System, method and apparatus for network service load and reliability management
US20050033809A1 (en) * 2003-08-08 2005-02-10 Teamon Systems, Inc. Communications system providing server load balancing based upon weighted health metrics and related methods
US7499399B2 (en) * 2003-12-12 2009-03-03 Intel Corporation Method and system to determine whether a circular queue is empty or full
US7715428B2 (en) * 2007-01-31 2010-05-11 International Business Machines Corporation Multicore communication processing
US8346999B2 (en) * 2009-12-15 2013-01-01 Intel Corporation Dynamic receive queue balancing with high and low thresholds
US8565092B2 (en) * 2010-11-18 2013-10-22 Cisco Technology, Inc. Dynamic flow redistribution for head of line blocking avoidance
US8762534B1 (en) * 2011-05-11 2014-06-24 Juniper Networks, Inc. Server load balancing using a fair weighted hashing technique
US9602437B1 (en) * 2012-10-03 2017-03-21 Tracey M. Bernath System and method for accelerating network applications using an enhanced network interface and massively parallel distributed processing
US9621633B2 (en) * 2013-03-15 2017-04-11 Intel Corporation Flow director-based low latency networking
US9497281B2 (en) * 2013-04-06 2016-11-15 Citrix Systems, Inc. Systems and methods to cache packet steering decisions for a cluster of load balancers
US9450881B2 (en) * 2013-07-09 2016-09-20 Intel Corporation Method and system for traffic metering to limit a received packet rate
US9515823B2 (en) * 2013-08-30 2016-12-06 L-3 Communications Corporation Cryptographic device with detachable data planes
KR101583325B1 (ko) * 2014-08-12 2016-01-07 주식회사 구버넷 가상 패킷을 처리하는 네트워크 인터페이스 장치 및 그 방법
US10079740B2 (en) * 2014-11-04 2018-09-18 Fermi Research Alliance, Llc Packet capture engine for commodity network interface cards in high-speed networks
US10148575B2 (en) * 2014-12-22 2018-12-04 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive load balancing in packet processing
US9678806B2 (en) * 2015-06-26 2017-06-13 Advanced Micro Devices, Inc. Method and apparatus for distributing processing core workloads among processing cores
US10996724B2 (en) * 2015-07-21 2021-05-04 Hewlett Packard Enterprise Development Lp Providing power to a server
US10079877B2 (en) * 2016-02-04 2018-09-18 Citrix Systems, Inc. System and method for cloud aware application delivery controller
CN106506393A (zh) * 2016-02-05 2017-03-15 华为技术有限公司 一种数据流处理方法、装置和系统
CN106527653A (zh) * 2016-10-12 2017-03-22 东软集团股份有限公司 调整cpu频率的方法及装置
US10341241B2 (en) * 2016-11-10 2019-07-02 Hughes Network Systems, Llc History-based classification of traffic into QoS class with self-update
US10511708B2 (en) * 2017-03-15 2019-12-17 Citrix Systems, Inc. Systems and methods for quality of experience for interactive application in hybrid wan
US10050884B1 (en) * 2017-03-21 2018-08-14 Citrix Systems, Inc. Method to remap high priority connection with large congestion window to high latency link to achieve better performance

Also Published As

Publication number Publication date
CN108694087A (zh) 2018-10-23
US20210141676A1 (en) 2021-05-13
US20180285151A1 (en) 2018-10-04

Similar Documents

Publication Publication Date Title
DE102018204859A1 (de) Dynamischer Lastenausgleich in Netzschnittstellenkarten für eine optimale Leistung auf Systemebene
DE60016283T2 (de) Arbeitsbelastungsverwaltung in einer rechnerumgebung
DE602005003142T2 (de) Vorrichtung und verfahren zur unterstützung von verbindungsherstellung in einem offload der netzwerkprotokollverarbeitung
DE60030767T2 (de) Datenzuweisung zu threads in einem multi-threaded netzwerkprozessor
DE102019105193A1 (de) Technologien zum beschleunigen von edge-vorrichtungsarbeitslasten
US8325761B2 (en) System and method for establishing sufficient virtual channel performance in a parallel computing network
DE102016100902A1 (de) Verfahren zum dynamischen Zuteilen von Ressourcen von konfigurierbaren Datenverarbeitungsressourcen
DE102008055892A1 (de) Abspeichern von Abschnitten eines Datenübertragungsdeskriptors in einem gecachten und einem nicht gecachten Adressbereich
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE112005002364T5 (de) Heterogene Prozessoren mit gemeinsamem Cache
DE112012006642T5 (de) Bandbreitengarantie und Arbeitskonservierung
DE102014000372A1 (de) Verbesserte steuerung des prefetch-traffics
DE602005006338T2 (de) Vorrichtung und Verfahren zur Datenübertragungsverarbeitung
DE112011103498T5 (de) Verhaltensgestützte Client-Auswahl für unterschiedliche Behandlung
DE112018006769T5 (de) Erweiterte zwischenspeicherzuweisung basierend auf virtuellen knotenressourcen
DE112017001654T5 (de) Technologien für regionsgerichtete cacheverwaltung
DE102020119682A1 (de) System, einrichtung und verfahren zum erhöhen der effizienz von streckenübermittlungen
DE102018204577A1 (de) Techniken zum Erfüllen von Dienstgüteanforderungen für eine Fabric-Punkt-zu-Punkt-Verbindung
DE102020103521A1 (de) Minimieren der Nutzung von Hardware-Zählern bei getriggerten Operationen für kollektive Kommunikation
DE102012219705B4 (de) Datenpaketverarbeitung im netzwerk
DE202017105777U1 (de) System für hardwareunabhängigen RDMA
DE202014009422U1 (de) NOC-Elektronikelement
DE102009056282A1 (de) Technik zum Steuern von Verarbeitungsressourcen
DE112021004473T5 (de) Lastausgleich auf speicherebene
DE112016007292T5 (de) Technologien für paravirtualisierte netzwerkvorrichtungswarteschlangen und speicherverwaltung