-
STAND DER TECHNIK
-
Typische Datenzentren können viele Typen von Netzwerkverkehr mit unterschiedlichen Prioritäten behandeln. Beispielsweise können Echtzeitkommunikationen, wie etwa „Voice over IP“ oder Videodaten eine andere Priorität als Dateidownloads haben. Als ein weiteres Beispiel können typische 4G-Drahtlosnetzwerke mehr als neun verschiedene Verkehrstypen umfassen. In aktuellen Systemen können E/A-Vorrichtungen, wie etwa Netzwerksteuerungen, Verkehrstypen unter Verwendung von Mechanismen, wie etwa IP ToS (Type of Service), DiffServ (Differentiated Services), Ethernet-Dienstklasse-Prioritätsbits (p-bits) oder MPLS-Label (Multiprotocol Label Switching) unterscheiden. Verarbeiten des Netzwerkverkehrs auf einer Vorrichtung wird typischerweise unter Verwendung eines Planungsalgorithmus, wie etwa strenge Priorität oder gewichteter Rundlauf, geplant.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die hier beschriebenen Konzepte werden in den beigefügten Figuren als Beispiel dargestellt, nicht als Einschränkung. Aus Gründen der Einfachheit und Klarheit der Darstellung sind in den Figuren dargestellte Elemente nicht notwendigerweise maßstabsgetreu gezeichnet. Wo als angemessen erachtet, wurden Bezugszeichen in den Figuren wiederholt, um entsprechende oder analoge Elemente anzuzeigen.
- 1 ist ein vereinfachtes Blockdiagramm von zumindest einer Ausführungsform einer Datenverarbeitungsvorrichtung zur leistungsbewussten Planung für Netzwerkpaketverarbeitung;
- 2 ist ein vereinfachtes Blockdiagramm von zumindest einer Ausführungsform einer Umgebung, die durch die Datenverarbeitungsvorrichtung aus 1 errichtet werden kann;
- 3 und 4 sind ein vereinfachtes Flussdiagramm von zumindest einer Ausführungsform eines Verfahrens zur leistungsbewussten Planung, das durch die Datenverarbeitungsvorrichtung aus 1-2 durchgeführt werden kann; und
- 5 ist ein vereinfachtes Flussdiagramm von zumindest einer Ausführungsform eines Verfahrens zur dynamischen Leistungs- und Performanceverwaltung, das durch die Datenverarbeitungsvorrichtung aus 1-2 durchgeführt werden kann.
-
AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
-
Während die Konzepte der vorliegenden Offenbarung empfänglich für verschiedene Modifikationen und alternative Formen sind, wurden verschiedene Ausführungsformen davon als Beispiel in den Zeichnungen gezeigt und werden hier ausführlich beschrieben. Es versteht sich allerdings, dass nicht die Absicht besteht, die Konzepte der vorliegenden Offenbarung auf die speziellen offenbarten Formen zu beschränken, sondern die Absicht ist, im Gegenteil, alle Modifikationen, Äquivalente und Alternativen, die mit der vorliegenden Offenbarung und den beigefügten Ansprüchen konsistent sind, abzudecken.
-
Bezugnahmen in der Spezifikation auf „eine Ausführungsform“, „eine beispielhafte Ausführungsform“ usw. zeigen an, dass die beschriebene Ausführungsform ein bestimmtes Merkmal, eine Struktur oder Charakteristik umfassen kann, aber jede Ausführungsform kann oder muss nicht notwendigerweise dieses spezielle Merkmal, diese Struktur oder Charakteristik umfassen. Darüber hinaus beziehen sich solche Phrasen nicht notwendigerweise auf die gleiche Ausführungsform. Ferner, wenn ein bestimmtes Merkmal, eine Struktur oder Charakteristik in Verbindung mit einer Ausführungsform beschrieben wird, wird davon ausgegangen, dass es im Wissen eines Fachmanns liegt, ein solches Merkmal, eine solche Struktur oder Charakteristik in Verbindung mit anderen Ausführungsformen umzusetzen, seien sie ausdrücklich beschrieben oder nicht. Zusätzlich versteht es sich, dass Elemente, die in einer Liste in der Form „zumindest eines aus A, B und C“ enthalten sind, (A); (B); (C); (A und B); (A und C), (B und C) oder (A, B und C) bedeuten können. In ähnlicher Weise können Elemente, die in einer Liste in der Form „zumindest eines aus A, B oder C“ enthalten sind, (A); (B); (C); (A und B); (A und C), (B und C) oder (A, B und C) bedeuten.
-
Die offenbarten Ausführungsformen können, in einigen Fällen, in Hardware, Firmware, Software oder einer beliebigen Kombination daraus umgesetzt sein. Die offenbarten Ausführungsformen können auch als Anweisungen umgesetzt sein, die von einem oder mehreren flüchtigen oder nicht-flüchtigen maschinenlesbaren (z. B. computerlesbaren) Speichermedien, die von einem oder mehreren Prozessoren gelesen und ausgeführt werden können, transportiert oder darauf gespeichert werden können. Ein maschinenlesbares Speichermedium kann als ein(e) beliebige(r) Speichervorrichtung, Mechanismus oder eine andere physische Struktur zum Speichern oder Senden von Informationen in einer durch eine Maschine (z. B. einen flüchtigen oder nicht-flüchtigen Speicher, eine Medienplatte oder eine andere Medienvorrichtung) lesbaren Form ausgeführt sein.
-
In den Zeichnungen können einige strukturelle oder Verfahrensmerkmale in spezifischen Anordnungen und/oder Reihenfolgen gezeigt sein. Allerdings versteht es sich, dass solche spezifischen Anordnungen und/oder Reihenfolgen nicht erforderlich sein müssen. Stattdessen können, in einigen Ausführungsformen, solche Merkmale in einer unterschiedlichen Weise und/oder Reihenfolge als der in den veranschaulichenden Figuren gezeigten angeordnet sein. Zusätzlich soll die Einbeziehung eines strukturellen oder Verfahrensmerkmals in einer bestimmten Figur nicht implizieren, dass ein solches Merkmal in allen Ausführungsformen erforderlich ist, und, in einigen Ausführungsformen, kann es nicht enthalten oder kann es mit anderen Merkmalen kombiniert sein.
-
Jetzt Bezug nehmend auf 1 führt in einer beispielhaften Ausführungsform eine Datenverarbeitungsvorrichtung 100 leistungsbewusste Planung für Verarbeitung von Netzwerkpaketen durch. In Verwendung, wie nachfolgend beschrieben wird, klassifiziert die Datenverarbeitungsvorrichtung 100 eingehenden Netzwerkverkehr basierend auf Priorität. Datenverarbeitungsvorrichtung 100 klassifiziert ferner die Netzwerkpakete in Performancegruppen („Bins“) basierend auf Performancekriterien, wie etwa Priorität und Prozessorarbeitslast. Datenverarbeitungsvorrichtung 100 wählt Performanceskalierung für eine oder mehrere Verarbeitungsengines (wie etwa Prozessorkerne) aus, um den höchsten Durchsatz und die niedrigste Latenz für die gruppierten Pakete zu erreichen. Datenverarbeitungsvorrichtung 100 plant dann die Netzwerkpakete für die Verarbeitungsengines zur Verarbeitung. Beispielsweise kann Netzwerkverkehr mit hoher Priorität für Verarbeitungsengines mit hoher Performance geplant werden. Die Verarbeitungsengines führen die Arbeitslast durch, die eine beliebige Paketverarbeitungsaufgabe umfassen kann, wie etwa Paketverschlüsselung oder -entschlüsselung, Paketkomprimierung für Netzwerkspeicheroperationen oder andere Operationen. Daher kann die Datenverarbeitungsvorrichtung 100 einen priorisierten Pfad durch den Prozessor für „Differentiated Services“ errichten und kann garantieren, dass Netzwerkverkehr mit hoher Priorität mit dem schnellsten verfügbaren Pfad und mit der niedrigsten verfügbaren Latenz verarbeitet wird. Datenverarbeitungsvorrichtung 100 führt so leistungsbewusste Planung durch, umfassend Pfadauswahl innerhalb einer Gruppe von Prozessorkernen und Zuweisung der Ressourcen auf diesem Pfad basierend auf Leistung. Entsprechend kann die Datenverarbeitungsvorrichtung 100 Durchsatz und Latenz im Vergleich zu typischen Systemen, die keine leistungsbewusste Planung verwenden, verbessern. Datenverarbeitungsvorrichtung 100 kann insbesondere die Performance für Operationen verbessern, die prozessorgebunden oder anderweitig von Prozessorperformance abhängig sind, wie etwa Paketverschlüsselungs- oder Komprimierungsoperationen. Beispielsweise kann eine Testdatenverarbeitungsvorrichtung 100 bestimmte Prozessorkerne umfassen, die eine bessere Performance haben als andere, beispielsweise einige Kerne mit Turbo-Boost-Technologie, die eine höhere Performance mit höherfrequenten Kernen bieten kann. Die hier beschriebenen Technologien können Netzwerkverkehr zu den besten verfügbaren Leistungsressourcen zuführen und dadurch eine Verbesserung der Performance bieten. Beispielsweise war bei einem Test die Datenverarbeitungsvorrichtung 100 in der Lage, für in Software auf einem Prozessorkern ausgeführte Verschlüsselungsoperationen eine Verbesserung von etwa 50 % beim Durchsatz und 20 % bei der Latenz zu erreichen.
-
Die Datenverarbeitungsvorrichtung 100 kann als ein beliebiger Typ von Berechnungs- oder Computervorrichtung ausgeführt sein, die in der Lage ist, die hier beschriebenen Funktionen durchzuführen, umfassend, unter anderem, einen Computer, einen Server, eine Workstation, einen Desktopcomputer, einen Laptopcomputer, einen Notebookcomputer, einen Tabletcomputer, eine mobile Datenverarbeitungsvorrichtung, eine tragbare Datenverarbeitungsvorrichtung, eine Netzwerkeinrichtung, eine Webeinrichtung, ein verteiltes Datenverarbeitungssystem, ein prozessorbasiertes System und/oder eine Verbraucherelektronikvorrichtung. Wie in 1 gezeigt, umfasst die Datenverarbeitungsvorrichtung 100 beispielhaft einen Prozessor 120, ein Eingabe/Ausgabe-Teilsystem 124, einen Speicher 126, eine Datenspeichervorrichtung 128 und ein Kommunikationsteilsystem 130 und/oder andere Komponenten und Vorrichtungen, die üblicherweise in einem Server oder einer ähnlichen Datenverarbeitungsvorrichtung anzutreffen sind. Natürlich kann, in anderen Ausführungsformen, die Datenverarbeitungsvorrichtung 100 andere oder zusätzliche Komponenten umfassen, wie etwa diejenigen, die üblicherweise in einer verwalteten Weiche anzutreffen sind (z. B. verschiedene Eingabe/Ausgabe-Vorrichtungen). Zusätzlich können, in einigen Ausführungsformen, eine oder mehrere der beispielhaften Komponenten in eine andere Komponente integriert sein oder anderweitig einen Teil derselben bilden. Beispielsweise kann, in einigen Ausführungsformen, der Speicher 126, oder Teile davon, in den Prozessor 120 integriert sein.
-
Der Prozessor 120 kann als ein beliebiger Typ von Prozessor ausgeführt sein, der in der Lage ist, die hier beschriebenen Funktionen durchzuführen. Der Prozessor 120 ist beispielhaft ein Mehrkernprozessor, allerdings kann der Prozessor 120, in anderen Ausführungsformen, als ein Einzel- oder Mehrkernprozessor, ein Digitalsignalprozessor, ein Mikrocontroller oder ein anderer Prozessor oder eine Verarbeitungs-/Steuerungsschaltung ausgeführt sein. Wie gezeigt, umfasst der beispielhafte Prozessor 120 zwei Prozessorkerne 122, von denen jeder eine unabhängige, universelle Verarbeitungseinheit ist, die in der Lage ist, programmierte Befehle auszuführen. Beispielsweise kann jeder Prozessorkern 122 Befehle aus einer universellen Befehlssatzarchitektur (ISA, Instruction Set Architecture) wie etwa IA-32 oder Intel® 64 ausführen. Obwohl als zwei Prozessorkerne 122 umfassend dargestellt, kann der Prozessor 120, in einigen Ausführungsformen, eine größere Anzahl von Prozessorkernen 122 umfassen, beispielsweise vierzehn Prozessorkerne 122, achtundzwanzig Prozessorkerne 122 oder eine andere Anzahl. In der dargestellten Ausführungsform sind alle Prozessorkerne 122 identisch; allerdings können die Prozessorkerne 122, in einigen Ausführungsformen, heterogen sein, umfassend Kerne 122 mit hoher Performance und Kerne 122 mit geringerer Performance. In einigen Ausführungsformen kann der Prozessor 120 einen oder mehrere Hardwarebeschleuniger für bestimmte Verarbeitungsaufgaben (z. B. kryptografische Beschleuniger, Komprimierungsbeschleuniger oder andere Beschleuniger) umfassen. Die Beschleuniger können als feldprogrammierbare Gate-Arrays (FPGAs), anwendungsspezifische integrierte Schaltungen (ASICs, Application-Specific Integrated Circuits) oder andere Logikblöcke ausgeführt sein und können in den Prozessorkernen 120 oder außerhalb der Prozessorkerne 120 (d. h. im Nicht-Kern des Prozessors 120) enthalten sein. Zusätzlich kann, obwohl als einen einzelnen Prozessor 120 umfassend dargestellt, die Datenverarbeitungsvorrichtung 100 in einigen Ausführungsformen als ein Mehrfachsocket-Server mit mehreren Prozessoren 120 ausgeführt sein.
-
Der Speicher 126 kann als ein beliebiger Typ von flüchtigem oder nicht-flüchtigem Speicher oder Datenspeicher ausgeführt sein, der in der Lage ist, die hier beschriebenen Funktionen durchzuführen. Im Betrieb kann der Speicher 126 verschiedene Daten und Software, die während des Betriebs der Datenverarbeitungsvorrichtung 100 verwendet werden, wie etwa Betriebssysteme, Anwendungen, Programme, Bibliotheken und Treiber, speichern. Der Speicher 126 ist über das E/A-Teilsystem 124, das als Schaltungsanordnung und/oder Komponenten ausgeführt sein kann, um Eingabe-/Ausgabevorgänge mit dem Prozessor 120, dem Speicher 126 und anderen Komponenten der Datenverarbeitungsvorrichtung 100 zu erleichtern, kommunikativ mit dem Prozessor 120 gekoppelt. Beispielsweise kann das E/A-Teilsystem 124 als Speichersteuerungsknoten, Eingabe/Ausgabe-Steuerungsknoten, Plattformsteuerungsknoten, integrierte Steuerschaltungsanordnungen, Firmwarevorrichtungen, Kommunikationsverbindungen (d. h. Punkt-zu-Punkt-Verbindungen, Busverbindungen, Drähte, Kabel, Lichtführungen, Leiterbahnen auf Leiterplatten usw.) und/oder andere Komponenten und Teilsysteme zum Erleichtern der Eingabe-/Ausgabevorgänge ausgeführt sein oder anderweitig solche umfassen. In einigen Ausführungsformen kann das E/A-Teilsystem 124 einen Teil eines Systems-on-a-Chip (SoC) bilden und, zusammen mit dem Prozessor 120, dem Speicher 126 und anderen Komponenten der Datenverarbeitungsvorrichtung 100, auf einem einzelnen integrierten Schaltungschip integriert sein.
-
Die Datenspeichervorrichtung 128 kann als beliebiger Typ von Vorrichtung oder Vorrichtungen ausgeführt sein, die für kurzfristige oder langfristige Speicherung von Daten ausgelegt ist bzw. sind, wie etwa, beispielsweise, Speichervorrichtungen und -schaltungen, Speicherkarten, Festplattenlaufwerke, Festkörperlaufwerke oder andere Datenspeichervorrichtungen. Das Kommunikationsteilsystem 130 der Datenverarbeitungsvorrichtung 100 kann als eine beliebige Kommunikationsschaltung, Vorrichtung oder Sammlung davon ausgeführt sein, die in der Lage ist, Kommunikationen zwischen der Datenverarbeitungsvorrichtung 100 und anderen abgesetzten Vorrichtungen über ein Netzwerk zu ermöglichen. Das Kommunikationsteilsystem 130 kann dazu ausgelegt sein, eine beliebige oder mehrere Kommunikationstechnologien (z. B. drahtlose oder drahtgebundene Kommunikationen) und dazugehörige Protokolle (z. B. Ethernet, InfiniBand®, Bluetooth®, Wi-Fi®, WiMAX usw.) zu verwenden, um eine solche Kommunikation umzusetzen. Das Kommunikationsteilsystem 130 umfasst beispielhaft eine Netzwerkschnittstellensteuerung (NIC, Network Interface Controller) 130.
-
Wie gezeigt, kann die Datenverarbeitungsvorrichtung 100 ferner eine oder mehrere periphere Vorrichtungen 134 umfassen. Die peripheren Vorrichtungen 134 können eine beliebige Anzahl von zusätzlichen Eingabe/Ausgabe-Vorrichtungen, Schnittstellenvorrichtungen, Beschleunigervorrichtungen und/oder anderen peripheren Vorrichtungen umfassen. Beispielsweise können, in einigen Ausführungsformen, die peripheren Vorrichtungen 134 eine Anzeige, einen Touchscreen, Grafikschaltungsanordnungen, FPGAs, ASICs, Koprozessoren, Tastatur, Maus, Lautsprechersystem, Mikrofon, Netzwerkschnittstelle und/oder andere Eingabe/Ausgabe-Vorrichtungen, Schnittstellenvorrichtungen und/oder periphere Vorrichtungen umfassen.
-
Jetzt Bezug nehmend auf 2 baut, in einer beispielhaften Ausführungsform, die Datenverarbeitungsvorrichtung 100 eine Umgebung 200 während des Betriebs auf. Die beispielhafte Umgebung 200 umfasst einen Empfänger 204, einen Paketklassifizierer 206, einen Bin-Sortierer 208, einen leistungsbewussten Planer 210, eine Leistungsverwaltung 212, mehrere Verarbeitungsengines 214 und einen Sender 216. Die verschiedenen Komponenten der Umgebung 200 können als Hardware, Firmware, Software oder eine Kombination daraus ausgeführt sein. Daher können, in einigen Ausführungsformen, eine oder mehrere Komponenten der Umgebung 200 als Schaltungsanordnung oder Sammlung von elektrischen Vorrichtungen ausgeführt sein (z. B. Empfängerschaltunganordnung 204, Paketklassifiziererschaltungsanordnung 206, Bin-Sortiererschaltungsanordnung 208, leistungsbewusste Planerschaltungsanordnung 210, Leistungsverwaltungsschaltungsanordnung 212, Verarbeitungsengineschaltungsanordnung 214 und/oder Senderschaltungsanordnung 216). Es versteht sich, dass, in solchen Ausführungsformen, eine oder mehrere aus der Empfängerschaltungsanordnung 204, der Paketklassifiziererschaltungsanordnung 206, der Bin-Sortiererschaltungsanordnung 208, der leistungsbewussten Planerschaltungsanordnung 210, der Leistungsverwaltungsschaltungsanordnung 212, der Verarbeitungsengineschaltungsanordnung 214 und/oder der Senderschaltungsanordnung 216 einen Teil von einem oder mehreren aus dem Prozessor 120, dem E/A-Teilsystem 124, dem Kommunikationsteilsystem 130 und/oder anderen Komponenten der Datenverarbeitungsvorrichtung 100 bilden können. Zusätzlich können, in einigen Ausführungsformen, eine oder mehrere der beispielhaften Komponenten einen Teil einer anderen Komponente bilden, und/oder eine oder mehrere beispielhafte Komponenten können unabhängig voneinander sein.
-
Der Empfänger 204 ist ausgelegt zum Empfangen von Netzwerkpaketen 202, beispielsweise empfangen durch das Kommunikationsteilsystem 128. Der Paketklassifizierer 206 ist ausgelegt zum Bestimmen eines Prioritätsniveaus für jedes Netzwerkpaket 202. Das Prioritätsniveau kann ein oder mehrere hohe Prioritätsniveaus (z. B. garantierte Dienstgüte) und ein oder mehrere niedrigere Prioritätsniveaus (z. B. „Best-Effort-Priorität“) umfassen. Das Prioritätsniveau für jedes Netzwerkpaket 202 kann basierend auf einer Differentiated-Service-Kennzeichnung des Netzwerkpakets 202, wie etwa IP TOS, DiffServ, Ethernet p-bits, MPLS Labels, Header, die eine Dienstkette identifizieren, wie etwa NSH (Network Services Headers) oder LTE-Verkehrsklasse bestimmt werden.
-
Der Bin-Sortierer 208 ist ausgelegt zum Zuweisen jedes Netzwerkpakets 202 zu einer von mehreren Performancegruppen basierend auf einem oder mehreren Performancekriterien jedes Netzwerkpakets 202. Die Performancekriterien umfassen das Prioritätsniveau und können andere Kriterien bezüglich der Verarbeitungsintensität umfassen. Beispielsweise können die Performancekriterien ferner einen Verschlüsselungsalgorithmus und eine Paketlänge des Netzwerkpakets 202 umfassen.
-
Der leistungsbewusste Planer 210 ist ausgelegt zum Planen der der jeweiligen Performancegruppe zugewiesenen Netzwerkpakete 202 zum Verarbeiten durch eine Verarbeitungsengine 214 der Datenverarbeitungsvorrichtung 100. Wie nachfolgend beschrieben, hat jede der Verarbeitungsengines 214 ein Performanceniveau. Die Netzwerkpakete 202, die einer Performancegruppe mit einem hohen Prioritätsniveau zugewiesen sind, werden zum Verarbeiten durch eine Verarbeitungsengine 214 mit einem hohen Performanceniveau geplant.
-
Der leistungsbewusste Planer 210 kann ferner ausgelegt sein zum Bestimmen einer Verarbeitungsarbeitslast für jede Performancegruppe. Die Verarbeitungsarbeitslast kann die Verarbeitungskosten im Zusammenhang mit den Netzwerkpaketen 202 der Performancegruppe anzeigen. Beispielsweise kann die Verarbeitungsarbeitslast als eine Funktion eines Verschlüsselungsalgorithmus (z. B. Prozessorzyklen pro Byte für diesen Algorithmus) und einer Paketlänge bestimmt werden. In einigen Ausführungsformen kann die Verarbeitungsarbeitslast auch als eine Funktion von Kosten zum Abladen des Verarbeitens auf einen Hardwarebeschleuniger bestimmt werden (z. B. damit verbundene Latenz). Der leistungsbewusste Planer 210 kann ferner ausgelegt sein zum Bestimmen des Performanceskalierungsniveaus für jede Verarbeitungsengine 214 basierend auf der Verarbeitungsarbeitslast für jede Performancegruppe. Bestimmen des Performanceskalierungsniveaus kann Bestimmen einer Frequenz jeder Verarbeitungsengine 214 oder Bestimmen, ob die Verarbeitungsengine 214 aktiviert werden soll (d. h. eines Aktivierungszustands jeder Verarbeitungsengine 214), umfassen. In einigen Ausführungsformen kann das Performanceskalierungsniveau durch Auswählen einer Verarbeitungsengine 214 mit einem vorbestimmten Performanceniveau bestimmt werden oder dynamisch basierend auf einer Verarbeitungsarbeitslast bestimmt werden.
-
Die Leistungsverwaltung 212 ist ausgelegt zum Anwenden eines ausgewählten Performanceskalierungsniveaus auf jede Verarbeitungsengine 214. Die Leistungsverwaltung 212 kann, beispielsweise, als eine Leistungssteuereinheit (PCU, Power Control Unit), die in dem Nicht-Kern des Prozessors 120 enthalten ist, oder als eine beliebige andere Hardware-, Firmware- und/oder Softwarevorrichtung, die Performanceskalierung der Verarbeitungsengines 214 steuert, ausgeführt sein.
-
Jede Verarbeitungsengine 214 ist ausgelegt zum Durchführen einer Verarbeitungsarbeitslast für jedes der Netzwerkpakete 202 in Reaktion auf Planen der Netzwerkpakete 202. Die Verarbeitungsarbeitslast kann, beispielsweise, eine Verschlüsselungsoperation oder eine Komprimierungsoperation umfassen. Jede Verarbeitungsengine 214 kann, beispielsweise, als ein Prozessorkern 122 des Prozessors 120, ein Hardwarebeschleuniger oder eine andere Verarbeitungsressource der Datenverarbeitungsvorrichtung 100 ausgeführt sein. Der Sender 216 ist ausgelegt zum Senden der Netzwerkpakete 202 in Reaktion auf Durchführen der Verarbeitungsarbeitslast.
-
Jetzt Bezug nehmend auf 3 und 4, kann die Datenverarbeitungsvorrichtung 100, in Verwendung, ein Verfahren 300 zum leistungsbewussten Planen von Netzwerkpaketverarbeitung ausführen. Es versteht sich, dass, in einigen Ausführungsformen, die Operationen des Verfahrens 300 durch eine oder mehrere Komponenten der Umgebung 200 der Datenverarbeitungsvorrichtung 100 durchgeführt werden können, wie in 2 gezeigt. Das Verfahren 300 beginnt bei Block 302, in dem die Datenverarbeitungsvorrichtung 100 eingehende Netzwerkpakete 202 empfängt. Die Netzwerkpakete 202 können, beispielsweise, als eingehende Ethernet-Rahmen oder andere Netzwerkdatenpakete, empfangen durch das Kommunikationsteilsystem 128 der Datenverarbeitungsvorrichtung 100, ausgeführt sein. Die Netzwerkpakete 202 können von einer Eingabequelle, wie etwa einer NIC 130, einem Hardwarebeschleuniger für Netzwerkdaten oder einer Hardwareverkehrsverteilungsfunktion empfangen werden.
-
In Block 304 klassifiziert die Datenverarbeitungsvorrichtung 100 die Netzwerkpakete 202 basierend auf Priorität. Die Datenverarbeitungsvorrichtung 100 kann die Netzwerkpakete als hohe Priorität (z. B. garantierte Dienstgüte) oder eine niedrigere Priorität (z. B. „Best-Effort-Priorität“) klassifizieren. Die Datenverarbeitungsvorrichtung 100 kann die Netzwerkpakete 202 durch Analysieren der Pakete 202 und Lesen bestimmter Felder, Kennzeichen oder Prioritätsindikationen klassifizieren. Beispielsweise kann die Datenverarbeitungsvorrichtung 100 eine oder mehrere im Netzwerkpaket 202 enthaltene Differentiated-Service-Kennzeichnungen, wie etwa IP TOS, DiffServ, Ethernet p-bits, MPLS Label, NSH-Headers oder LTE-Verkehrsklasse, evaluieren.
-
In Block 306 klassifiziert die Datenverarbeitungsvorrichtung 100 die Netzwerkpakete 202 basierend auf Performancekriterien in Performancegruppen (Bins). Die Performancekriterien können eine beliebige Charakteristik der Netzwerkpakete 202 umfassen, die indikativ für die Berechnungsintensität oder andere Kosten im Zusammenhang mit dem Verarbeiten der Netzwerkpakete 202 sind. Die Datenverarbeitungsvorrichtung 100 kann die Netzwerkpakete 202 in Bins von Paketen mit ähnlichen Performancekriterien sortieren. In einigen Ausführungsformen kann die Datenverarbeitungsvorrichtung 100 in Block 308 die Netzwerkpakete 202 basierend auf dem Prioritätsniveau, einem durchzuführenden kryptografischen Algorithmus und einer Paketlänge einem Bin zuordnen. Beispielsweise können Pakete mit kurzer Länge mit anderen Paketen mit kurzer Länge gruppiert werden; die in eine unterschiedliche Gruppe von Paketen mit langer Länge sortiert wurden. Paketlänge kann Verkehrstyp anzeigen. Beispielsweise können in dieser Ausführungsform kurze Pakete VoIP-Pakete mit höherer Priorität umfassen, während lange Pakete Dateidownloadpakete mit niedrigerer Priorität umfassen können. In einigen Ausführungsformen kann ein Bereich von Paketlängen zum Klassifizieren von Paketen in Bins verwendet werden. Die Datenverarbeitungsvorrichtung 100 kann einen Cache von bereits in Bins einsortierten Paketen 202 umsetzen, um Mehraufwand im Zusammenhang mit bereits in Bins einsortierten Paketen 202 zu verhindern.
-
In Block 310 wählt die Datenverarbeitungsvorrichtung 100 ein Performanceskalierungsniveau für eine oder mehrere Verarbeitungsengines 214 basierend auf den bereits in Bins einsortierten Netzwerkpaketen 202 aus. Die Datenverarbeitungsvorrichtung 100 kann ein Performanceskalierungsniveau basierend auf der Gesamtverarbeitungsarbeitslast für Prioritätsnetzwerkpakete 202 (z. B. in Bins mit hohen Prioritätsniveaus sortierte Netzwerkpakete, Anzahl von Bins oder ein anderes Maß für die Arbeitslast) auswählen. Die Verarbeitungsarbeitslast kann basierend auf den Prozessorzyklen oder einer anderen für jedes Netzwerkpaket 202 erforderlichen Verarbeitungszeit bestimmt werden. Beispielsweise kann die Verarbeitungsarbeitslast als eine Funktion des kryptografischen Algorithmus, der auf jedem Netzwerkpaket 202 durchzuführen ist (z. B. der Prozessorzyklen pro Byte zum Durchführen des kryptografischen Algorithmus), und der Paketlänge bestimmt werden. Die Datenverarbeitungsvorrichtung 100 kann das Performanceskalierungsniveau auswählen, das Bandbreite und Latenz für das aktuelle Volumen an Prioritätsnetzwerkpaketen 202 optimiert.
-
In einigen Ausführungsformen kann, in Block 312, die Datenverarbeitungsvorrichtung 100 Performanceskalierung von einer oder mehreren reservierten Verarbeitungsengines mit hoher Performance 214 auswählen. Beispielsweise können, in einigen Ausführungsformen, ein oder mehrere Prozessorkerne 122 als Kerne mit hoher Performance 122 reserviert sein. In diesen Ausführungsformen können die Kerne mit hoher Performance 122 mit einer höheren Betriebsfrequenz im Vergleich zu anderen Kernen 122 des Prozessors 120 ausgelegt sein. Zusätzlich oder alternativ dazu kann der Prozessor 120, in einigen Ausführungsformen, heterogene Prozessorkerne 122 mit unterschiedlichen Performancecharakteristiken umfassen, und ein oder mehrere Kerne mit hoher Performance 122 können für Netzwerkpakete mit hoher Priorität 202 reserviert sein.
-
In einigen Ausführungsformen kann, in Block 314, die Datenverarbeitungsvorrichtung 100 dynamisch Performanceskalierung für eine oder mehrere Verarbeitungsengines 114 auswählen. Die Performanceskalierung kann basierend auf Bedarf skaliert werden. Die Datenverarbeitungsvorrichtung 100 kann eine Hysterese mit Verzögerung oder eine andere Dämpfung verwenden, um Springen von hoher auf niedrige Frequenz zu verhindern, wenn der Verkehr schnell zwischen Verkehr mit hoher und niedriger Priorität alterniert. Eine potenzielle Ausführungsform eines Verfahrens für bedarfsbasierte Performanceskalierung wird nachfolgend in Verbindung mit 5 beschrieben. In einigen Ausführungsformen können reservierte und bedarfsbasierte Skalierung kombiniert werden. Beispielsweise können Netzwerkpakete mit höherer Priorität 202 für vorab zugeordnete Verarbeitungsengines mit hoher Performance 214 ausgewählt werden, und Netzwerkpakete mit niedrigerer Priorität (z. B. „Best Effort“) können für bedarfsbasierte Skalierung verwendet werden.
-
In Block 316 wendet die Datenverarbeitungsvorrichtung 100 die ausgewählte Performanceskalierung auf die Verarbeitungsengines 214 an. Die Datenverarbeitungsvorrichtung 100 kann eine beliebige Technik zum Einstellen der Performance der Verarbeitungsengines 214 verwenden. In einigen Ausführungsformen kann, in Block 318, die Datenverarbeitungsvorrichtung 100 die Frequenz- oder Leistungsskalierung von einem oder mehreren Prozessorkernen 122 dynamisch steuern. Beispielsweise kann die Datenverarbeitungsvorrichtung 100 die Grundfrequenz, Verstärkungsfrequenz, den Frequenzmultiplikator oder einen anderen Frequenzskalierungsfaktor des Prozessorkerns 122 steuern. Die Datenverarbeitungsvorrichtung 100 kann auch andere Leistungs-/Performancecharakteristiken des Prozessorkerns 122 einstellen, wie etwa eine Vektorbefehlsbreite (z. B. AVX-Breite), Ruhezustand, Leerlaufzustand (z. B. C-Zustand), Leistungszustand (z. B. P-Zustand) oder andere Leistungs-/Performancecharakteristiken. In einigen Ausführungsformen kann, in Block 320, die Datenverarbeitungsvorrichtung 100 einen oder mehrere Hardwarebeschleuniger aktivieren oder deaktivieren. Die Hardwarebeschleuniger können innerhalb des Prozessors 120 oder außerhalb (z. B. PCIe-Vorrichtungen) sein. Beispielsweise können Hardwarebeschleuniger aktiviert werden, wenn der Berechnungsbedarf über eine Schwelle ansteigt.
-
In Block 322 plant die Datenverarbeitungsvorrichtung 100 die Bins der Netzwerkpakete 202 für die Verarbeitungsengines 214. In Block 324 plant die Datenverarbeitungsvorrichtung 100 Pakete mit hoher Priorität 202 für eine oder mehrere Verarbeitungsengines mit hoher Performance 214. Beispielsweise können die Pakete mit hoher Priorität 202 für Prozessorkerne mit hoher Frequenz 122 oder für einen oder mehrere Hardwarebeschleuniger geplant werden. In Block 326 kann die Datenverarbeitungsvorrichtung 100 Pakete mit niedrigerer Priorität 202 für eine oder mehrere Verarbeitungsengines mit niedriger Performance 214. Die Pakete mit niedrigerer Priorität 202 können unter Verwendung von strenger Priorität, gewichtetem Rundlauf oder anderen Planungsalgorithmen geplant werden.
-
In Block 328, gezeigt in 4, führt die Datenverarbeitungsvorrichtung 100 die Verarbeitungsarbeitslast für die geplanten Netzwerkpakete 202 mit den Verarbeitungsengines 214 durch. Die Datenverarbeitungsvorrichtung 100 kann eine beliebige Paketverarbeitungsarbeitlast durchführen, wie etwa Verschlüsselung, Entschlüsselung, Komprimierung, Dekomprimierung oder andere Operationen. In einigen Ausführungsformen kann die Datenverarbeitungsvorrichtung 100 in Block 330 das Netzwerkpaket 202 unter Verwendung einer Verarbeitungsengine 214 mit der ausgewählten Performanceskalierung verschlüsseln. Beispielsweise können Pakete mit hoher Priorität 202 unter Verwendung von Prozessorkernen mit hoher Frequenz 122 verschlüsselt werden. In einigen Ausführungsformen können die Netzwerkpakete 202 in Block 332 an einen Prozessorkern 122 zur Softwareverarbeitung weitergeleitet werden. Die Softwareverarbeitung kann einen oder mehrere spezialisierte Befehlssätze verwenden, um die Verarbeitung zu beschleunigen. Beispielsweise kann der Prozessorkern 122 in einigen Ausführungsformen SIMD-Befehle (Single Instruction Multiple Data; ein Befehl, mehrere Daten), wie etwa Intel-AVX-Befehle, verwenden. Als ein weiteres Beispiel kann der Prozessorkern 122 in einigen Ausführungsformen spezialisierte kryptografische Befehle, wie etwa AES-NI, verwenden. In einigen Ausführungsformen können die Netzwerkpakete 202 in Block 334 an einen Hardwarebeschleuniger, wie etwa einen kryptografischen Beschleuniger, weitergeleitet werden.
-
In Block 336 werden die Netzwerkpakete 202 nach der Verarbeitung an ihr Ziel weitergeleitet. Beispielsweise können die Netzwerkpakete 202 an eine Ziel-NIC 130, einen Hardwarebeschleuniger für ein Netzwerk oder eine Hardwareverkehrsverteilerfunktion weitergeleitet werden. Nach Senden der Netzwerkpakete 202 springt das Verfahren 300 zurück zu Block 302, gezeigt in 3, um mit dem Verarbeiten eingehender Netzwerkpakete 202 fortzufahren.
-
Jetzt Bezug nehmend auf 5 kann die Datenverarbeitungsvorrichtung 100, in Verwendung, ein Verfahren 500 für dynamische Leistungs- und Performanceverwaltung ausführen. Es versteht sich, dass, in einigen Ausführungsformen, die Operationen des Verfahrens 500 durch eine oder mehrere Komponenten der Umgebung 200 der Datenverarbeitungsvorrichtung 100 durchgeführt werden können, wie in 2 gezeigt. Das Verfahren 500 beginnt bei Block 502, in dem die Datenverarbeitungsvorrichtung 100 eine Arbeitslast für kryptografische Verarbeitung von Netzwerkpaketen 202 bestimmt. Die Netzwerkpakete 202 können vorab in eine Performancegruppe sortiert worden sein, wie oben in Verbindung mit Block 306 aus 3 beschrieben. In Block 504 bestimmt die Datenverarbeitungsvorrichtung 100 eine Prozessorarbeitslast für die Netzwerkpakete 202 basierend auf dem zu verwendenden kryptografischen Algorithmus und der Paketlänge. Die Prozessorarbeitslast kann, beispielsweise, indikativ für die Anzahl der Prozessorzyklen sein, die erforderlich sind, um die Netzwerkpakete 202 mit dem ausgewählten kryptografischen Algorithmus zu verschlüsseln. In Block 506 führt die Datenverarbeitungsvorrichtung 100 die kryptografische Arbeitslast auf den Netzwerkpaketen 202 durch die ausgewählten Prozessorkerne 122 durch.
-
In Block 508 bestimmt die Datenverarbeitungsvorrichtung 100, ob eine Aufskalierungszeitspanne abgelaufen ist. Die Aufskalierungszeitspanne kann eine Verzögerung oder eine andere Zeitspanne sein, die zum Dämpfen von Frequenzänderungen für die Prozessorkerne 122 verwendet wird. Die Datenverarbeitungsvorrichtung 100 kann parallel zum Durchführen der kryptografischen Arbeitslasten oder seriell (beispielsweise durch Unterbrechen der kryptografischen Arbeitslast) bestimmen, ob die Aufskalierungszeitspanne abgelaufen ist. Wenn die Aufskalierungszeitspanne nicht abgelaufen ist, springt das Verfahren 500 nach vom zu Block 516, wie nachfolgend beschrieben. Wenn die Aufskalierungszeitspanne abgelaufen ist, fährt das Verfahren 500 mit Block 510 fort.
-
In Block 510 bestimmt die Datenverarbeitungsvorrichtung 100, ob die ausstehende kryptografische Arbeitslast aktuelle Verarbeitungsfähigkeiten überschreitet. Beispielsweise kann die Datenverarbeitungsvorrichtung 100 bestimmen, ob die aktuelle kryptografische Arbeitslast durch den Prozessorkern 122 bei seiner aktuellen Frequenz innerhalb einer vorbestimmten Zeit abgeschlossen werden kann. In Block 512 prüft die Datenverarbeitungsvorrichtung 100, ob die aktuellen Verarbeitungsfähigkeiten überschritten werden. Wenn das nicht der Fall ist, springt das Verfahren 500 nach vom zu Block 516, was nachfolgend beschrieben wird. Wenn die aktuellen Verarbeitungsfähigkeiten überschritten werden, fährt das Verfahren 500 mit Block 514 fort, in dem die Datenverarbeitungsvorrichtung 100 Leistungs- oder Frequenzskalierung für einen oder mehrere Prozessorkerne 122 erhöht. Nach Erhöhen der Kernfrequenzskalierung springt das Verfahren 500 zurück zu Block 502, um mit dem Verarbeiten von Netzwerkpaketen 202 fortzufahren.
-
Wenn, wieder Bezug nehmend auf Blöcke 508, 512, die Aufskalierungszeitspanne nicht abgelaufen ist oder die aktuellen Verarbeitungsfähigkeiten nicht überschritten werden, verzweigt das Verfahren 500 zu Block 516, in dem die Datenverarbeitungsvorrichtung 100 bestimmt, ob eine Herabskalierungszeitspanne abgelaufen ist. Ähnlich wie die Aufskalierungszeitspanne kann die Herabskalierungszeitspanne eine Verzögerung oder eine andere Zeitspanne sein, die zum Dämpfen von Frequenzänderungen für die Prozessorkerne 122 verwendet wird. Die Datenverarbeitungsvorrichtung 100 kann parallel zum Durchführen der kryptografischen Arbeitslasten oder seriell (beispielsweise durch Unterbrechen der kryptografischen Arbeitslast) bestimmen, ob die Herabskalierungszeitspanne abgelaufen ist. Wenn die Herabskalierungszeitspanne nicht abgelaufen ist, springt das Verfahren 500 zurück zu Block 502, um mit dem Verarbeiten von Netzwerkpaketen 202 fortzufahren. Wenn die Herabskalierungszeitspanne abgelaufen ist, fährt das Verfahren 500 mit Block 518 fort.
-
In Block 518 bestimmt die Datenverarbeitungsvorrichtung 100, ob die ausstehende kryptografische Arbeitslast kleiner als die aktuellen Verarbeitungsfähigkeiten ist. Beispielsweise kann die Datenverarbeitungsvorrichtung 100 bestimmen, ob die aktuelle kryptografische Arbeitslast durch den Prozessorkern 122 bei seiner aktuellen Frequenz in weniger als der vorbestimmten Zeit abgeschlossen werden kann. In Block 520 prüft die Datenverarbeitungsvorrichtung 100, ob die ausstehende Arbeitslast kleiner als die aktuellen Verarbeitungsfähigkeiten ist. Wenn das nicht der Fall ist, kehrt das Verfahren 500 zu Block 502 zurück, um das Verarbeiten von Netzwerkpaketen 202 fortzusetzen. Wenn die aktuelle Arbeitslast kleiner als die aktuellen Verarbeitungsfähigkeiten ist, fährt das Verfahren 500 mit Block 522 fort, in dem die Datenverarbeitungsvorrichtung 100 Leistungs- oder Frequenzskalierung für einen oder mehrere Prozessorkerne 122 verringert. Daher kann die Datenverarbeitungsvorrichtung 100 Stromverbrauch verringern oder anderweitig Leistung und Performance basierend auf aktuellen Netzwerkverkehrsbedingungen optimieren. Nach Verringern der Kernfrequenzskalierung springt das Verfahren 500 zurück zu Block 502, um mit dem Verarbeiten von Netzwerkpaketen 202 fortzufahren.
-
Es versteht sich, dass, in einigen Ausführungsformen, die Verfahren 300 und/oder 500 als verschiedene, auf einem computerlesbaren Medium gespeicherte Anweisungen ausgeführt sein können, die durch den Prozessor 120, das E/A-Teilsystem 124, das Kommunikationsteilsystem 130 und/oder andere Komponenten der Datenverarbeitungsvorrichtung 100 ausgeführt werden können, um die Datenverarbeitungsvorrichtung 100 zu veranlassen, das jeweilige Verfahren 300 und/oder 500 durchzuführen. Das computerlesbare Medium kann als ein beliebiger Typ von Medium ausgeführt sein, das durch die Datenverarbeitungsvorrichtung 100 gelesen werden kann, einschließlich, unter anderem, dem Speicher 126, der Datenspeichervorrichtung 128, Firmwarevorrichtungen und/oder anderer Medien.
-
BEISPIELE
-
Veranschaulichende Beispiele der hier offenbarten Technologien werden nachfolgend bereitgestellt. Eine Ausführungsform der Technologien kann eines oder mehrere, und eine beliebige Kombination, der nachfolgend beschriebenen Beispiele umfassen.
-
Beispiel 1 umfasst eine Datenverarbeitungsvorrichtung für Netzwerkpaketverarbeitung, wobei die Datenverarbeitungsvorrichtung Folgendes umfasst: einen Empfänger zum Empfangen von mehreren Netzwerkpaketen; einen Paketklassifizierer zum Bestimmen eines Prioritätsniveaus für jedes Netzwerkpaket der mehreren Netzwerkpakete, wobei das Prioritätsniveau ein hohes Prioritätsniveau oder ein niedrigeres Prioritätsniveau umfasst; einen Bin-Sortierer zum Zuordnen jedes Netzwerkpakets der mehreren Netzwerkpakete zu einer Performancegruppe von mehreren Performancegruppen basierend auf einem oder mehreren Performancekriterien jedes Netzwerkpakets, wobei das eine oder die mehreren Performancekriterien das Prioritätsniveau des Netzwerkpakets umfassen; und einen leistungsbewussten Planer zum Planen der den einzelnen Performancegruppen zugeordneten Netzwerkpakete zum Verarbeiten durch eine Verarbeitungsengine von mehreren Verarbeitungsengines der Datenverarbeitungsvorrichtung, wobei jede der Verarbeitungsengines ein Performanceniveau hat und wobei Netzwerkpakete, die einer Performancegruppe mit dem hohen Prioritätsniveau zugeordnet sind, für Verarbeitung durch eine Verarbeitungsengine mit einem hohen Performanceniveau geplant sind.
-
Beispiel 2 umfasst den Gegenstand aus Beispiel 1, und wobei das eine oder die mehreren Performancekriterien ferner einen Verschlüsselungsalgorithmus und eine Paketlänge des Netzwerkpakets umfassen.
-
Beispiel 3 umfasst den Gegenstand aus einem der Beispiele 1 und 2, und wobei die Datenverarbeitungsvorrichtung einen Prozessor umfasst, und wobei jede Verarbeitungsengine einen Prozessorkern des Prozessors umfasst.
-
Beispiel 4 umfasst den Gegenstand nach einem der Beispiele 1-3, und wobei die Prozessorkerne heterogene Prozessorkerne umfassen, und wobei die Verarbeitungsengine mit einem hohen Performanceniveau einen Prozessorkern mit hoher Performance umfasst.
-
Beispiel 5 umfasst den Gegenstand aus einem der Beispiele 1-4, und wobei die mehreren Verarbeitungsengines einen oder mehrere Hardwarebeschleuniger umfassen.
-
Beispiel 6 umfasst den Gegenstand aus einem der Beispiele 1-5, und wobei der leistungsbewusste Planer ferner dient zum: Bestimmen einer Verarbeitungsarbeitslast für jede Performancegruppe der mehreren Performancegruppen in Reaktion auf Zuordnen jedes Netzwerkpakets zu einer Performancegruppe; und Bestimmen des Performanceskalierungsniveaus für jede Verarbeitungsengine der mehreren Verarbeitungsengines basierend auf der Verarbeitungsarbeitslast für jede Performancegruppe; wobei Planen der Netzwerkpakete Planen der Netzwerkpakete in Reaktion auf eine Bestimmung des Performanceskalierungsniveaus umfasst.
-
Beispiel 7 umfasst den Gegenstand aus einem der Beispiele 1-6, und wobei Bestimmen der Verarbeitungsarbeitslast Bestimmen der Verarbeitungsarbeitslast als eine Funktion eines Verschlüsselungsalgorithmus und einer Paketlänge umfasst.
-
Beispiel 8 umfasst den Gegenstand aus einem der Beispiele 1-7, und wobei Bestimmen der Verarbeitungsarbeitslast Bestimmen der Verarbeitungsarbeitslast als eine Funktion von Prozessorzyklen pro Byte für den Verschlüsselungsalgorithmus umfasst.
-
Beispiel 9 umfasst den Gegenstand aus einem der Beispiele 1-8, und wobei Bestimmen des Performanceskalierungsniveaus für jede Verarbeitungsengine Bestimmen einer Frequenz jeder Verarbeitungsengine umfasst.
-
Beispiel 10 umfasst den Gegenstand aus einem der Beispiele 1-9, und wobei Bestimmen des Performanceskalierungsniveaus für jede Verarbeitungsengine Bestimmen eines Aktivierungszustands jeder Verarbeitungsengine umfasst.
-
Beispiel 11 umfasst den Gegenstand aus einem der Beispiele 1-10, und wobei Bestimmen des Performanceskalierungsniveaus für jede Verarbeitungsengine Auswählen einer Verarbeitungsengine mit einem vorbestimmten Performanceniveau umfasst.
-
Beispiel 12 umfasst den Gegenstand aus einem der Beispiele 1-11, und wobei Bestimmen des Performanceskalierungsniveaus für jede Verarbeitungsengine dynamisches Bestimmen des Performanceskalierungsniveau für jede Verarbeitungsengine basierend auf der Verarbeitungsarbeitslast der Verarbeitungsgruppe in Verbindung mit der entsprechenden Verarbeitungsengine umfasst.
-
Beispiel 13 umfasst den Gegenstand aus einem der Beispiele 1-12, und wobei dynamisches Bestimmen des Performanceskalierungsniveaus Folgendes umfasst: Bestimmen, ob die Verarbeitungsarbeitslast eine aktuelle Verarbeitungsfähigkeit der Verarbeitungsengine überschreitet; Erhöhen des Performanceniveaus in Reaktion auf eine Bestimmung, dass die Verarbeitungsarbeitslast die aktuelle Verarbeitungsfähigkeit überschreitet; und Verringern des Performanceniveaus in Reaktion auf eine Bestimmung, dass die Verarbeitungsarbeitslast die aktuelle Verarbeitungsfähigkeit nicht überschreitet.
-
Beispiel 14 umfasst den Gegenstand aus einem der Beispiele 1-13, und ferner umfassend eine Leistungsverwaltung zum Anwenden des Performanceskalierungsniveaus auf jede Verarbeitungsengine der mehreren Verarbeitungsengines in Reaktion auf eine Bestimmung, des Performanceskalierungsniveaus; wobei Planen der Netzwerkpakete Planen der Netzwerkpakete in Reaktion auf Anwendung des Performanceskalierungsniveaus umfasst.
-
Beispiel 15 umfasst den Gegenstand aus einem der Beispiele 1-14, und wobei die mehreren Verarbeitungsengines dazu dienen, eine Verarbeitungsarbeitslast für jedes der mehreren Netzwerkpakete durch die mehreren Verarbeitungsengines in Reaktion auf Planen der Netzwerkpakete durchzuführen.
-
Beispiel 16 umfasst den Gegenstand aus einem der Beispiele 1-15, und wobei Durchführen der Verarbeitungsarbeitslast Durchführen einer Verschlüsselungsoperation für jedes der mehreren Netzwerkpakete umfasst.
-
Beispiel 17 umfasst den Gegenstand aus einem der Beispiele 1-16, und wobei Durchführen der Verarbeitungsarbeitslast Durchführen einer Komprimierungsoperation für jedes der mehreren Netzwerkpakete umfasst.
-
Beispiel 18 umfasst den Gegenstand aus einem der Beispiele 1-17, und ferner umfassend einen Sender zum Senden der mehreren Netzwerkpakete in Reaktion auf Durchführung der Verarbeitungsarbeitslast.
-
Beispiel 19 umfasst den Gegenstand aus einem der Beispiele 1-18, und wobei Bestimmen des Prioritätsniveaus für jedes Netzwerkpaket Bestimmen des Prioritätsniveaus basierend auf einer Differentiated-Services-Kennzeichnung des Netzwerkpakets umfasst.
-
Beispiel 20 umfasst ein Verfahren für Netzwerkpaketverarbeitung, wobei das Verfahren Folgendes umfasst: Empfangen, durch eine Datenverarbeitungsvorrichtung, von mehreren Netzwerkpaketen; Bestimmen, durch die Datenverarbeitungsvorrichtung, eines Prioritätsniveaus für jedes Netzwerkpaket der mehreren Netzwerkpakete, wobei das Prioritätsniveau ein hohes Prioritätsniveau oder ein niedrigeres Prioritätsniveau umfasst; Zuordnen, durch die Datenverarbeitungsvorrichtung, jedes Netzwerkpakets der mehreren Netzwerkpakete zu einer Performancegruppe von mehreren Performancegruppen basierend auf einem oder mehreren Performancekriterien jedes Netzwerkpakets, wobei das eine oder die mehreren Performancekriterien das Prioritätsniveau des Netzwerkpakets umfassen; und Planen, durch die Datenverarbeitungsvorrichtung, der den einzelnen Performancegruppen zugeordneten Netzwerkpakete zum Verarbeiten durch eine Verarbeitungsengine von mehreren Verarbeitungsengines der Datenverarbeitungsvorrichtung, wobei jede der Verarbeitungsengines ein Performanceniveau hat und wobei Netzwerkpakete, die einer Performancegruppe mit dem hohen Prioritätsniveau zugeordnet sind, für Verarbeitung durch eine Verarbeitungsengine mit einem hohen Performanceniveau geplant sind.
-
Beispiel 21 umfasst den Gegenstand aus Beispiel 20, und wobei das eine oder die mehreren Performancekriterien ferner einen Verschlüsselungsalgorithmus und eine Paketlänge des Netzwerkpakets umfassen.
-
Beispiel 22 umfasst den Gegenstand aus einem der Beispiele 20 und 21, und wobei die Verarbeitungsengine einen Prozessorkern eines Prozessors der Datenverarbeitungsvorrichtung umfasst.
-
Beispiel 23 umfasst den Gegenstand nach einem der Beispiele 20-22, und wobei die Prozessorkerne heterogene Prozessorkerne umfassen, und wobei die Verarbeitungsengine mit einem hohen Performanceniveau einen Prozessorkern mit hoher Performance umfasst.
-
Beispiel 24 umfasst den Gegenstand aus einem der Beispiele 20-23, und wobei die mehreren Verarbeitungsengines einen oder mehrere Hardwarebeschleuniger umfassen.
-
Beispiel 25 umfasst den Gegenstand aus einem der Beispiele 20-24, und ferner umfassend: Bestimmen, durch die Datenverarbeitungsvorrichtung, einer Verarbeitungsarbeitslast für jede Performancegruppe der mehreren Performancegruppen in Reaktion auf Zuordnen jedes Netzwerkpakets zu einer Performancegruppe; und Bestimmen, durch die Datenverarbeitungsvorrichtung, des Performanceskalierungsniveaus für jede Verarbeitungsengine der mehreren Verarbeitungsengines basierend auf der Verarbeitungsarbeitslast für jede Performancegruppe; wobei Planen der Netzwerkpakete Planen der Netzwerkpakete in Reaktion auf Bestimmen des Performanceskalierungsniveaus umfasst.
-
Beispiel 26 umfasst den Gegenstand aus einem der Beispiele 20-25, und wobei Bestimmen der Verarbeitungsarbeitslast Bestimmen der Verarbeitungsarbeitslast als eine Funktion eines Verschlüsselungsalgorithmus und einer Paketlänge umfasst.
-
Beispiel 27 umfasst den Gegenstand aus einem der Beispiele 20-26, und wobei Bestimmen der Verarbeitungsarbeitslast Bestimmen der Verarbeitungsarbeitslast als eine Funktion von Prozessorzyklen pro Byte für den Verschlüsselungsalgorithmus umfasst.
-
Beispiel 28 umfasst den Gegenstand aus einem der Beispiele 20-27, und wobei Bestimmen des Performanceskalierungsniveaus für jede Verarbeitungsengine Bestimmen einer Frequenz jeder Verarbeitungsengine umfasst.
-
Beispiel 29 umfasst den Gegenstand aus einem der Beispiele 20-28, und wobei Bestimmen des Performanceskalierungsniveaus für jede Verarbeitungsengine Bestimmen eines Aktivierungszustands jeder Verarbeitungsengine umfasst.
-
Beispiel 30 umfasst den Gegenstand aus einem der Beispiele 20-29, und wobei Bestimmen des Performanceskalierungsniveaus für jede Verarbeitungsengine Auswählen einer Verarbeitungsengine mit einem vorbestimmten Performanceniveau umfasst.
-
Beispiel 31 umfasst den Gegenstand aus einem der Beispiele 20-30, und wobei Bestimmen des Performanceskalierungsniveaus für jede Verarbeitungsengine dynamisches Bestimmen des Performanceskalierungsniveaus für jede Verarbeitungsengine basierend auf der Verarbeitungsarbeitslast der Verarbeitungsgruppe in Verbindung mit der entsprechenden Verarbeitungsengine umfasst.
-
Beispiel 32 umfasst den Gegenstand aus einem der Beispiele 20-31, und wobei dynamisches Bestimmen des Performanceskalierungsniveaus Folgendes umfasst: Bestimmen, ob die Verarbeitungsarbeitslast eine aktuelle Verarbeitungsfähigkeit der Verarbeitungsengine überschreitet; Erhöhen des Performanceniveaus in Reaktion auf Bestimmen, dass die Verarbeitungsarbeitslast die aktuelle Verarbeitungsfähigkeit überschreitet; und Verringern des Performanceniveaus in Reaktion auf Bestimmen, dass die Verarbeitungsarbeitslast die aktuelle Verarbeitungsfähigkeit nicht überschreitet.
-
Beispiel 33 umfasst den Gegenstand aus einem der Beispiele 20-32, und ferner umfassend: Anwenden, durch die Datenverarbeitungsvorrichtung, des Performanceskalierungsniveaus auf jede Verarbeitungsengine der mehreren Verarbeitungsengines in Reaktion auf Bestimmen des Performanceskalierungsniveaus; wobei Planen der Netzwerkpakete Planen der Netzwerkpakete in Reaktion auf Anwenden des Performanceskalierungsniveaus umfasst.
-
Beispiel 34 umfasst den Gegenstand aus einem der Beispiele 20-33, und ferner umfassend Durchführen, durch die Datenverarbeitungsvorrichtung, einer Verarbeitungsarbeitslast für jedes der mehreren Netzwerkpakete durch die mehreren Verarbeitungsengines in Reaktion auf Planen der Netzwerkpakete.
-
Beispiel 35 umfasst den Gegenstand aus einem der Beispiele 20-34, und wobei Durchführen der Verarbeitungsarbeitslast Durchführen einer Verschlüsselungsoperation für jedes der mehreren Netzwerkpakete umfasst.
-
Beispiel 36 umfasst den Gegenstand aus einem der Beispiele 20-35, und wobei Durchführen der Verarbeitungsarbeitslast Durchführen einer Komprimierungsoperation für jedes der mehreren Netzwerkpakete umfasst.
-
Beispiel 37 umfasst den Gegenstand aus einem der Beispiele 20-36, und ferner umfassend Senden, durch die Datenverarbeitungsvorrichtung, der mehreren Netzwerkpakete in Reaktion auf Durchführung der Verarbeitungsarbeitslast.
-
Beispiel 38 umfasst den Gegenstand aus einem der Beispiele 20-37, und wobei Bestimmen des Prioritätsniveaus für jedes Netzwerkpaket Bestimmen des Prioritätsniveaus basierend auf einer Differentiated-Services-Kennzeichnung des Netzwerkpakets umfasst.
-
Beispiel 39 umfasst ein oder mehrere computerlesbare Speichermedien, umfassend mehrere darauf gespeicherte Befehle, die, in Reaktion darauf, dass sie ausgeführt werden, eine Datenverarbeitungsvorrichtung veranlassen zum: Empfangen von mehreren Netzwerkpaketen; Bestimmen eines Prioritätsniveaus für jedes Netzwerkpaket der mehreren Netzwerkpakete, wobei das Prioritätsniveau ein hohes Prioritätsniveau oder ein niedrigeres Prioritätsniveau umfasst; Zuordnen jedes Netzwerkpakets der mehreren Netzwerkpakete zu einer Performancegruppe von mehreren Performancegruppen basierend auf einem oder mehreren Performancekriterien jedes Netzwerkpakets, wobei das eine oder die mehreren Performancekriterien das Prioritätsniveau des Netzwerkpakets umfassen; und Planen der den einzelnen Performancegruppen zugeordneten Netzwerkpakete zum Verarbeiten durch eine Verarbeitungsengine von mehreren Verarbeitungsengines der Datenverarbeitungsvorrichtung, wobei jede der Verarbeitungsengines ein Performanceniveau hat und wobei Netzwerkpakete, die einer Performancegruppe mit dem hohen Prioritätsniveau zugeordnet sind, für Verarbeitung durch eine Verarbeitungsengine mit einem hohen Performanceniveau geplant sind.
-
Beispiel 40 umfasst den Gegenstand aus Beispiel 39, und wobei das eine oder die mehreren Performancekriterien ferner einen Verschlüsselungsalgorithmus und eine Paketlänge des Netzwerkpakets umfassen.
-
Beispiel 41 umfasst den Gegenstand aus einem der Beispiele 39 und 40, und wobei jede Verarbeitungsengine einen Prozessorkern eines Prozessors der Datenverarbeitungsvorrichtung umfasst.
-
Beispiel 42 umfasst den Gegenstand nach einem der Beispiele 39-41, und wobei die Prozessorkerne heterogene Prozessorkerne umfassen, und wobei die Verarbeitungsengine mit einem hohen Performanceniveau einen Prozessorkern mit hoher Performance umfasst.
-
Beispiel 43 umfasst den Gegenstand aus einem der Beispiele 39-42, und wobei die mehreren Verarbeitungsengines einen oder mehrere Hardwarebeschleuniger umfassen.
-
Beispiel 44 umfasst den Gegenstand aus einem der Beispiele 39-43, und ferner umfassend mehrere darauf gespeicherte Befehle, die, in Reaktion darauf, dass sie ausgeführt werden, die Datenverarbeitungsvorrichtung veranlassen zum: Bestimmen einer Verarbeitungsarbeitslast für jede Performancegruppe der mehreren Performancegruppen in Reaktion auf Zuordnen jedes Netzwerkpakets zu einer Performancegruppe; und Bestimmen des Performanceskalierungsniveaus für jede Verarbeitungsengine der mehreren Verarbeitungsengines basierend auf der Verarbeitungsarbeitslast für jede Performancegruppe; wobei Planen der Netzwerkpakete Planen der Netzwerkpakete in Reaktion auf Bestimmen des Performanceskalierungsniveaus umfasst.
-
Beispiel 45 umfasst den Gegenstand aus einem der Beispiele 39-44, und wobei Bestimmen der Verarbeitungsarbeitslast Bestimmen der Verarbeitungsarbeitslast als eine Funktion eines Verschlüsselungsalgorithmus und einer Paketlänge umfasst.
-
Beispiel 46 umfasst den Gegenstand aus einem der Beispiele 39-45, und wobei Bestimmen der Verarbeitungsarbeitslast Bestimmen der Verarbeitungsarbeitslast als eine Funktion von Prozessorzyklen pro Byte für den Verschlüsselungsalgorithmus umfasst.
-
Beispiel 47 umfasst den Gegenstand aus einem der Beispiele 39-46, und wobei Bestimmen des Performanceskalierungsniveaus für jede Verarbeitungsengine Bestimmen einer Frequenz jeder Verarbeitungsengine umfasst.
-
Beispiel 48 umfasst den Gegenstand aus einem der Beispiele 39-47, und wobei Bestimmen des Performanceskalierungsniveaus für jede Verarbeitungsengine Bestimmen eines Aktivierungszustands jeder Verarbeitungsengine umfasst.
-
Beispiel 49 umfasst den Gegenstand aus einem der Beispiele 39-48, und wobei Bestimmen des Performanceskalierungsniveaus für jede Verarbeitungsengine Auswählen einer Verarbeitungsengine mit einem vorbestimmten Performanceniveau umfasst.
-
Beispiel 50 umfasst den Gegenstand aus einem der Beispiele 39-49, und wobei Bestimmen des Performanceskalierungsniveaus für jede Verarbeitungsengine dynamisches Bestimmen des Performanceskalierungsniveau für jede Verarbeitungsengine basierend auf der Verarbeitungsarbeitslast der Verarbeitungsgruppe in Verbindung mit der entsprechenden Verarbeitungsengine umfasst.
-
Beispiel 51 umfasst den Gegenstand aus einem der Beispiele 39-50, und wobei dynamisches Bestimmen des Performanceskalierungsniveaus Folgendes umfasst: Bestimmen, ob die Verarbeitungsarbeitslast eine aktuelle Verarbeitungsfähigkeit der Verarbeitungsengine überschreitet; Erhöhen des Performanceniveaus in Reaktion auf Bestimmen, dass die Verarbeitungsarbeitslast die aktuelle Verarbeitungsfähigkeit überschreitet; und Verringern des Performanceniveaus in Reaktion auf Bestimmen, dass die Verarbeitungsarbeitslast die aktuelle Verarbeitungsfähigkeit nicht überschreitet.
-
Beispiel 52 umfasst den Gegenstand aus einem der Beispiele 39-51, und ferner umfassend mehrere darauf gespeicherte Befehle, die, in Reaktion darauf, dass sie ausgeführt werden, die Datenverarbeitungsvorrichtung veranlassen zum: Anwenden des Performanceskalierungsniveaus auf jede Verarbeitungsengine der mehreren Verarbeitungsengines in Reaktion auf Bestimmen des Performanceskalierungsniveaus; wobei Planen der Netzwerkpakete Planen der Netzwerkpakete in Reaktion auf Anwenden des Performanceskalierungsniveaus umfasst.
-
Beispiel 53 umfasst den Gegenstand aus einem der Beispiele 39-52, und ferner umfassend mehrere darauf gespeicherte Befehle, die, in Reaktion darauf, dass sie ausgeführt werden, die Datenverarbeitungsvorrichtung veranlassen zum: Durchführen einer Verarbeitungsarbeitslast für jedes der mehreren Netzwerkpakete durch die mehreren Verarbeitungsengines in Reaktion auf Planen der Netzwerkpakete.
-
Beispiel 54 umfasst den Gegenstand aus einem der Beispiele 39-53, und wobei Durchführen der Verarbeitungsarbeitslast Durchführen einer Verschlüsselungsoperation für jedes der mehreren Netzwerkpakete umfasst.
-
Beispiel 55 umfasst den Gegenstand aus einem der Beispiele 39-54, und wobei Durchführen der Verarbeitungsarbeitslast Durchführen einer Komprimierungsoperation für jedes der mehreren Netzwerkpakete umfasst.
-
Beispiel 56 umfasst den Gegenstand aus einem der Beispiele 39-55, und ferner umfassend mehrere darauf gespeicherte Befehle, die, in Reaktion darauf, dass sie ausgeführt werden, die Datenverarbeitungsvorrichtung veranlassen zum: Senden der mehreren Netzwerkpakete in Reaktion auf Durchführung der Verarbeitungsarbeitslast.
-
Beispiel 57 umfasst den Gegenstand aus einem der Beispiele 39-56, und wobei Bestimmen des Prioritätsniveaus für jedes Netzwerkpaket Bestimmen des Prioritätsniveaus basierend auf einer Differentiated-Services-Kennzeichnung des Netzwerkpakets umfasst.