DE112020006967T5 - Performanceüberwachung für kurzlebige funktionen - Google Patents

Performanceüberwachung für kurzlebige funktionen Download PDF

Info

Publication number
DE112020006967T5
DE112020006967T5 DE112020006967.2T DE112020006967T DE112020006967T5 DE 112020006967 T5 DE112020006967 T5 DE 112020006967T5 DE 112020006967 T DE112020006967 T DE 112020006967T DE 112020006967 T5 DE112020006967 T5 DE 112020006967T5
Authority
DE
Germany
Prior art keywords
execution
memory
sled
function
resources
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
DE112020006967.2T
Other languages
English (en)
Inventor
Francesc Guim Bernat
Steven BRISCOE
Karthik Kumar
Alexander Bachmutsky
Timothy Verrall
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 DE112020006967T5 publication Critical patent/DE112020006967T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • 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/3419Recording 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 by assessing time
    • 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/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Cooling Or The Like Of Electrical Apparatus (AREA)

Abstract

Die hier beschriebenen Beispiele beziehen sich auf eine Vorrichtung, die einen Speicher und mindestens einen Prozessor umfasst, wobei der mindestens eine Prozessor eine Konfiguration zum Gewinnen von Performancedaten für eine Funktion von einer oder mehreren Plattformen empfangen und während der Ausführung der Funktion Performancedaten für die Funktion sammeln und die Performancedaten nach Beendigung der Ausführung der Funktion speichern soll. Einige Beispiele umfassen eine Schnittstelle, die mit dem mindestens einen Prozessor verbunden ist und wobei die Schnittstelle empfangen soll aus: einem Identifizierer einer Funktion, Ressourcen, die als Teil der Funktionsausführung verfolgt werden sollen, eine Liste von Vorrichtungen, die als Teil der Funktionsausfiihrung verfolgt werden sollen, eine Art der Überwachung der Funktionsausführung oder Metadaten, die angeben sollen, wann die Funktion abgeschlossen ist. Es kann auf Performancedaten zugegriffen werden, um die Performance mehrerer Ausführungen der kurzlebigen Funktion zu ermitteln.

Description

  • INANSPRUCHNAHME DER PRIORITÄT
  • Diese Anmeldung beansprucht gemäß 35 U.S.C. § 365(c) Priorität für die am 25. März 2020 eingereichte US-Anmeldung Nr. 16/829,935 mit dem Titel „PERFORMANCE MONITORING FOR SHORT-LIVED FUNCTIONS“, die hiermit in vollem Umfang aufgenommen wird.
  • Beschreibung
  • Rechenzentren stellen den Nutzern umfangreiche Verarbeitungs-, Speicherungs- und Netzwerkressourcen bereit. So können Klienten-Vorrichtungen beispielsweise Rechenzentren nutzen, um Bildverarbeitung, Berechnungen, Datenspeicherung und Datenwiedergewinnung durchzuführen. Ein Klient kann z.B. ein Smartphone, eine Internet der Dinge (IoT; Internet of Things) -kompatible Vorrichtung, ein Smart Home, Haustechnik (z.B. Kühlschrank, Licht, Kamera oder Schloss), eine tragbare Vorrichtung (z.B. Gesundheitsmonitor, Smart Watch, Smart Glasses), ein verbundenes Fahrzeug (z.B. selbstfahrendes Auto oder fliegendes Fahrzeug) und ein Smart City Sensor (z.B. Verkehrssensor, Parksensor, Energieverbrauchssensor) sein. Darüber hinaus können Prozesse, die auf Rechenressourcen innerhalb eines Rechenzentrums ausgeführt werden, die Nutzung von Prozessen anfordern, die auf anderen Rechenressourcen, Beschleunigern und anderen von einem Rechenzentrum bereitgestellten Vorrichtungen ausgeführt werden.
  • Figurenliste
    • 1 ist ein vereinfachtes Diagramm von zumindest einem Ausführungsbeispiel eines Rechenzentrums für ein Ausführen von Arbeitslasten mit disaggregierten Ressourcen.
    • 2 ist ein vereinfachtes Diagramm von zumindest einem Ausführungsbeispiel eines Pods, der in einem Rechenzentrum umfasst sein kann.
    • 3 ist eine Perspektivansicht von zumindest einem Ausführungsbeispiel eines Racks, das in einem Pod umfasst sein kann.
    • 4 ist eine Seitenansicht eines Racks.
    • 5 ist eine Perspektivenansicht eines Racks, das einen darin befestigten Schlitten aufweist.
    • 6 ist ein vereinfachtes Blockdiagramm von zumindest einem Ausführungsbeispiel einer Oberseite eines Schlittens.
    • 7 ist ein vereinfachtes Blockdiagramm von zumindest einem Ausführungsbeispiel einer Unterseite eines Schlittens.
    • 8 ist ein vereinfachtes Blockdiagramm von zumindest einem Ausführungsbeispiel eines Rechenschlittens.
    • 9 ist eine perspektivische Draufsicht von zumindest einem Ausführungsbeispiel eines Rechenschlittens.
    • 10 ist ein vereinfachtes Blockdiagramm von zumindest einem Ausführungsbeispiel eines Beschleunigerschlittens, der in einem Rechenzentrum verwendbar ist.
    • 11 ist eine perspektivische Draufsicht von zumindest einem Ausführungsbeispiel eines Beschleunigerschlittens.
    • 12 ist ein vereinfachtes Blockdiagramm von zumindest einem Ausführungsbeispiel eines Speicherungsschlittens, der in einem Rechenzentrum verwendbar ist.
    • 13 ist eine perspektivische Draufsicht von zumindest einem Ausführungsbeispiel eines Speicherungsschlittens.
    • 14 ist ein vereinfachtes Blockdiagramm von zumindest einem Ausführungsbeispiel eines Speicherschlittens, der in einem Rechenzentrum verwendbar ist.
    • 15 zeigt ein System zur Ausführung einer oder mehrerer Arbeitslasten.
    • 16 zeigt ein Beispiel für mehrere FaaS für verschiedene Videoanalysefunktionen.
    • 17 zeigt ein Beispiel für die Latenz von FaaS für ein Videoanalyseszenario.
    • 18 zeigt einen Überblick eines Systems gemäß einigen Ausführungsbeispielen.
    • 19 zeigt eine Architektur, die eine feinkörnige zustandslose Funktionstelemetriearchitektur implementieren kann.
    • 20 zeigt einen Prozess.
    • 21 zeigt ein System.
  • DETAILLIERTE BESCHREIBUNG
  • 1 zeigt ein Rechenzentrum, in dem disaggregierte Ressourcen kooperativ eine oder mehrere Arbeitslasten (z.B. Anwendungen im Namen von Kunden) ausführen können, mehrere Pods 110, 120, 130, 140 umfassen, von denen jeder eine oder mehrere Reihen von Racks umfasst. Obwohl das Rechenzentrum 100 mit mehreren Pods dargestellt ist, kann das Rechenzentrum 100 bei einigen Ausführungsbeispielen natürlich als ein einzelner Pod ausgeführt sein. Wie hierin detaillierter beschrieben, häust jedes Rack mehrere Schlitten, von denen jeder primär mit einer bestimmten Art von Ressource ausgestattet sein kann (z.B. Speichervorrichtungen, Datenspeicherungsvorrichtungen, Beschleunigervorrichtungen, Allzweckprozessoren), d.h. Ressourcen, die logisch gekoppelt werden können, um einen zusammengesetzten Knoten zu bilden, der beispielsweise als ein Server agieren kann. Bei dem darstellenden Ausführungsbeispiel sind die Schlitten in jedem Pod 110, 120, 130, 140 mit mehreren Pod-Schaltern (z.B. Schalter, die Datenkommunikationen zu und von Schlitten innerhalb des Pod routen) verbunden. Die Pod-Schalter verbinden wiederum mit Spine-Schaltern 150, die Kommunikationen unter Pods (z.B. den Pods 110, 120, 130, 140) in dem Rechenzentrum 100 schalten. Bei einigen Ausführungsbeispielen können die Schlitten mit einer Struktur unter Verwendung von Intel Omni-Path Technologie verbunden sein. Bei anderen Ausführungsbeispielen können die Schlitten mit anderen Strukturen, wie beispielsweise InfiniBand oder Ethernet, verbunden sein. Wie hierin detaillierter beschrieben ist, können Ressourcen innerhalb von Schlitten in dem Rechenzentrum 100 einer Gruppe (hierin als ein „verwalteter Knoten“ bezeichnet) zugeordnet werden, die Ressourcen von einem oder mehreren Schlitten umfasst, die bei der Ausführung einer Arbeitslast gemeinschaftlich genutzt werden sollen. Die Arbeitslast kann ausgeführt werden, als ob die Ressourcen, die zu dem verwalteten Knoten gehören, auf demselben Schlitten positioniert sind. Die Ressourcen in einem verwalteten Knoten können zu Schlitten gehören, die zu unterschiedlichen Racks und sogar zu unterschiedlichen Pods 110, 120, 130, 140 gehören. Somit können einige Ressourcen eines einzelnen Schlittens zu einem verwalteten Knoten zugeordnet sein, während andere Ressourcen desselben Schlittens zu einem unterschiedlichen verwalteten Knoten (z. B. ein Prozessor ist einem verwalteten Knoten zugewiesen und ein anderer Prozessor desselben Schlittens ist einem unterschiedlichen verwalteten Knoten zugewiesen) zugeordnet sind.
  • Ein Rechenzentrum, umfassend disaggregierte Ressourcen, wie z. B. das Rechenzentrum 100, kann in einer breiten Vielzahl von Kontexten verwendet werden, wie z. B. Unternehmen, Regierung, Cloud-Dienstanbieter und Kommunikationsdienst-Anbieter (z. B. Telcos), sowie in einer breiten Vielzahl von Größen, von Mega-Rechenzentren von Cloud-Dienstanbietern, die über 10.000 Quadratmeter verbrauchen, bis hin zu Einzel- oder Mehrfach-Rack-Installationen zur Verwendung in Basisstationen.
  • Das Disaggregieren von Ressourcen zu Schlitten, überwiegend umfassend einen einzigen Ressourcentyp (z. B. Rechenschlitten, die primär Rechenressourcen umfassen, Speicherschlitten, die primär Speicherressourcen umfassen), und das selektive Allokieren und De-Allokieren der disaggregierten Ressourcen, um einen verwalteten Knoten zu bilden, der zugewiesen ist, um eine Arbeitslast auszuführen, verbessert den Betrieb und die Ressourcennutzung des Rechenzentrums 100 im Vergleich zu typischen Datenzentren, die hyperkonvergente Server aufweisen, die Rechen-, Speicher- (memory), Speicherungs- (storage) und möglicherweise zusätzliche Ressourcen in einem einzelnen Gehäuse umfassen. Da Schlitten beispielsweise überwiegend Ressourcen eines bestimmten Typs umfassen, können Ressourcen eines gegebenen Typs unabhängig von anderen Ressourcen upgegradet werden. Zusätzlich, da unterschiedliche Ressourcentypen (Prozessoren, Speicherung, Beschleuniger etc.) üblicherweise unterschiedliche Aktualisierungsraten aufweisen, können eine größere Ressourcennutzung und reduzierte Gesamtbetriebskosten erreicht werden. Beispielsweise kann ein Rechenzentrumsbetreiber die Prozessoren in seiner gesamten Anlage upgraden, indem er nur die Rechenschlitten auslagert. In einem solchen Fall werden Beschleuniger- und Speicherungsressourcen möglicherweise nicht gleichzeitig upgegradet, sondern es kann ihnen vielmehr erlaubt werden, so lange weiterzuarbeiten, bis die eigene Aktualisierung dieser Ressourcen vorgesehen ist. Auch die Ressourcennutzung kann zunehmen. Wenn verwaltete Knoten beispielsweise basierend auf Anforderungen der Arbeitslasten zusammengesetzt sind, die auf ihnen ausgeführt werden, ist es wahrscheinlicher, dass Ressourcen innerhalb eines Knotens vollständig verwendet werden. Eine solche Nutzung kann es erlauben, dass mehr verwaltete Knoten in einem Rechenzentrum mit einem gegebenen Satz von Ressourcen ausgeführt werden oder dass ein Rechenzentrum, von dem erwartet wird, dass es einen gegebenen Satz von Arbeitslasten ausführt, unter Verwendung von weniger Ressourcen gebaut wird.
  • 2 zeigt einen Pod. Ein Pod kann einen Satz von Reihen 200, 210, 220, 230 von Racks 240 umfassen. Jedes Rack 240 kann mehrere Schlitten (z.B. sechzehn Schlitten) häusen und den gehäusten Schlitten Leistung und Datenverbindungen bereitstellen, wie hierin detaillierter beschrieben ist. Bei dem darstellenden Ausführungsbeispiel sind die Racks in jeder Reihe 200, 210, 220, 230 mit mehreren Pod-Schaltern 250, 260 verbunden. Der Pod-Schalter 250 umfasst einen Satz von Ports 252, mit denen die Schlitten der Racks des Pods 110 verbunden sind, und einen anderen Satz von Ports 254, die den Pod 110 mit den Spine-Schaltern 150 verbinden, um Konnektivität zu anderen Pods in dem Rechenzentrum 100 bereitzustellen. Ähnlich umfasst der Pod-Schalter 260 einen Satz von Ports 262, mit dem die Schlitten der Racks des Pods 110 verbunden sind, und einen Satz von Ports 264, die den Pod 110 mit den Spine-Schaltern 150 verbinden. Somit stellt die Verwendung des Paares von Schaltern 250, 260 dem Pod 110 einen Redundanzbetrag bereit. Zum Beispiel, falls irgendeiner der Schalter 250, 260 ausfällt, können die Schlitten in dem Pod 110 immer noch eine Datenkommunikation mit dem Rest des Rechenzentrums 100 (z.B. Schlitten anderer Pods) durch den anderen Schalter 250, 260 aufrechterhalten. Ferner können die Schalter 150, 250, 260 in dem darstellenden Ausführungsbeispiel als Dual-Mode- optische Schalter verkörpert sein, die sowohl in der Lage sind, Ethernet-Protokoll-Kommunikationen, die Internet-Protocol (IP) -Pakete tragen, als auch Kommunikationen gemäß einem zweiten, Hochperformance-Link-Layer-Protokoll (z. B. PCI Express) über optische Signalisierungsmedien einer optischen Struktur zu routen.
  • Es wird darauf hingewiesen, dass jeder der anderen Pods 120, 130, 140 (sowie irgendwelche zusätzlichen Pods des Rechenzentrums 100) ähnlich strukturiert sein können wie und Komponenten aufweisen können, die ähnlich sind wie der Pod 110, der Bezug nehmend auf 2 gezeigt und beschrieben ist (z.B. jeder Pod kann Reihen von Racks aufweisen, die mehrere Schlitten häusen, wie vorangehend beschrieben ist). Zusätzlich, obwohl zwei Pod-Schalter 250, 260 gezeigt sind, sollte es sich verstehen, dass bei anderen Ausführungsbeispielen jeder Pod 110, 120, 130, 140 mit einer unterschiedlichen Anzahl von Pod-Schaltern, die noch mehr Failover-Kapazität bereitstellen, verbunden sein kann. Natürlich können bei anderen Ausführungsbeispielen die Pods unterschiedlich angeordnet sein als die in 1-2 gezeigte Reihen-von-Racks-Konfiguration. Beispielsweise kann ein Pod als mehrere Sätze von Racks verkörpert sein, in denen jeder Satz von Racks radial angeordnet ist, d. h. die Racks sind äquidistant von einem mittleren Schalter.
  • Bezug nehmend nun auf 3-5 umfasst jedes darstellende Rack 240 des Rechenzentrums 100 zwei längliche Stützpfosten 302, 304, die vertikal angeordnet sind. Zum Beispiel können sich die länglichen Stützpfosten 302, 304 von einem Boden des Rechenzentrums 100 nach oben erstrecken, wenn sie eingesetzt werden. Das Rack 240 umfasst auch ein oder mehrere horizontale Paare 310 länglicher Stützarme 312 (in 3 über eine gestrichelte Ellipse identifiziert), die ausgebildet sind, um einen Schlitten des Rechenzentrums 100 wie nachfolgend beschrieben zu stützten. Ein länglicher Stützarm 312 des Paares von länglichen Stützarmen 312 erstreckt sich von dem länglichen Stützpfosten 302 nach außen und der andere längliche Stützarm 312 erstreckt sich von dem länglichen Stützpfosten 304 nach außen.
  • Bei den darstellenden Ausführungsbeispielen ist jeder Schlitten des Rechenzentrums 100 als ein gehäuseloser Schlitten ausgeführt. Das heißt, jeder Schlitten weist ein gehäuseloses (kein Chassis) Schaltungsplatinensubstrat auf, auf dem physische Ressourcen (z.B. Prozessoren, Speicher, Beschleuniger, Speicherung, etc.) befestigt sind, wie nachfolgend detaillierter erörtert wird. Somit ist das Rack 240 ausgebildet, um die gehäuselosen Schlitten zu empfangen. Beispielsweise definiert jedes Paar 310 länglicher Stützarme 312 einen Schlitten-Slot 320 des Racks 240, der ausgebildet ist, um einen entsprechenden gehäuselosen Schlitten zu empfangen. Zu diesem Zweck umfasst jeder darstellende, längliche Stützarm 312 eine Schaltungsplatinenftihrung 330, die ausgebildet ist, um das gehäuselose Schaltungsplatinensubstrat des Schlittens zu empfangen. Jede Schaltungsplatinenführung 330 ist an einer Oberseite 332 des entsprechenden länglichen Stützarms 312 befestigt oder anderweitig angebracht. Zum Beispiel, bei dem darstellenden Ausführungsbeispiel ist jede Schaltungsplatinenführung 330 an einem distalen Ende des entsprechenden länglichen Stützarmes 312 relativ zu dem entsprechenden länglichen Stützpfosten 302, 304 befestigt. Der Klarheit der Figuren halber wird sich möglicherweise nicht in jeder Figur auf jede Schaltungsplatinenführung 330 bezogen.
  • Jede Schaltungsplatinenführung 330 umfasst eine innere Wand, die einen Schaltungsplatinen-Slot 380 definiert, der ausgebildet ist, um das gehäuselose Schaltungsplatinensubstrat eines Schlittens 400 zu empfangen, wenn der Schlitten 400 in dem entsprechenden Schlitten-Slot 320 des Racks 240 empfangen wird. Dazu richtet, wie in 4 gezeigt ist, ein Benutzer (oder Roboter) das gehäuselose Schaltungsplatinensubstrat eines darstellenden gehäuselosen Schlittens 400 zu einem Schlitten-Slot 320 aus. Der Benutzer oder Roboter kann dann das gehäuselose Schaltungsplatinensubstrat vorwärts in den Schlitten-Slot 320 schieben, so dass jeder Seitenrand 414 des gehäuselosen Schaltungsplatinesubstrats in einem entsprechenden Schaltungsplatinen-Slot 380 der Schaltungsplatinenführungen 330 des Paares 310 länglicher Stützarme 312 empfangen wird, die den entsprechenden Schlitten-Slot 320 definieren, wie in 4 gezeigt ist. Durch ein Aufweisen von robotisch zugänglichen und robotisch manipulierbaren Schlitten, die disaggregierte Ressourcen aufweisen, kann irgendeine Art von Ressource unabhängig voneinander und mit ihrer eigenen optimierten Aktualisierungsrate upgegradet werden. Ferner sind die Schlitten ausgebildet, um blind mit Leistungs- und Datenkommunikationskabeln in jedem Rack 240 zusammenzupassen, was ihre Fähigkeit verbessert, schnell entfernt, upgegradet, neu installiert und/oder ersetzt werden zu können. Somit kann das Rechenzentrum 100 bei einigen Ausführungsbeispielen ohne menschliche Beteiligung vor Ort in dem Rechenzenftrum arbeiten (z.B. Ausführen von Arbeistlasten, Durchführen von Wartung und/oder Upgrades, etc.). Bei anderen Ausführungsbeispielen kann ein Mensch eine oder mehrere Wartungs- oder Upgrade-Operationen in dem Rechenzentrum 100 erleichtern.
  • Es wird darauf hingewiesen, dass jede Schaltungsplatinenftihrung 330 doppelseitig ist. Das heißt, jede Schaltungsplatinenftihrung 330 umfasst eine innere Wand, die einen Schaltungsplatinen-Slot 380 auf jeder Seite der Schaltungsplatinenführung 330 definiert. Auf diese Weise kann jede Schaltungsplatinenführung 330 ein gehäuseloses Schaltungsplatinensubstrat auf beiden Seiten stützen. Somit kann dem Rack 240 ein einzelner zusätzlicher länglicher Stützpfosten dazugefügt werden, um das Rack 240 in eine Zwei-Rack-Lösung umzubauen, die doppelt so viele Schlitten-Slots 320 halten kann, wie in 3 gezeigt ist. Das darstellende Rack 240 umfasst sieben Paare 310 länglicher Stützarme 312, die entsprechende sieben Schlitten-Slots 320 definieren, die jeweils ausgebildet sind, um einen entsprechenden Schlitten 400 wie vorangehend erörtert ist, zu empfangen und zu stützen. Natürlich kann bei anderen Ausführungsbeispielen das Rack 240 zusätzliche oder weniger Paare 310 länglicher Stützarme 312 (d.h. zusätzliche oder weniger Schlitten-Slots 320) umfassen. Es wird darauf hingewiesen, dass, da der Schlitten 400 gehäuselos ist, der Schlitten 400 eine Gesamthöhe aufweisen kann, die unterschiedlich ist als typische Server. Somit kann bei einigen Ausführungsbeispielen die Höhe jedes Schlitten-Slots 320 niedriger sein als die Höhe eines typischen Servers (z.B. niedriger als eine einzelne Rangeinheit, „1U“). Das heißt, die vertikale Distanz zwischen jedem Paar 310 länglicher Stützarme 312 kann geringer sein als eine Standard-Rack-Einheit „1U“. Zusätzlich kann aufgrund der relativen Verringerung der Höhe der Schlitten-Slots 320 die Gesamthöhe des Racks 240 bei einigen Ausführungsbeispielen niedriger sein als die Höhe traditioneller Rack-Einhäusungen. Zum Beispiel, bei einigen Ausführungsbeispielen kann jeder der länglichen Stützpfosten 302, 304 eine Länge von sechs Fuß oder weniger aufweisen. Bei anderen Ausführungsbeispielen kann das Rack 240 wiederum unterschiedliche Dimensionen aufweisen. Zum Beispiel kann bei einigen Ausführungsbeispielen die vertikale Distanz zwischen jedem Paar 310 länglicher Stützarme 312 größer sein als ein Standard-Rack bis „1U“. Bei solchen Ausführungsbeispielen ermöglicht die erhöhte vertikale Distanz zwischen den Schlitten ein Anbringen größerer Wärmesenken an den physischen Ressourcen und ein Verwenden größerer Lüfter (z. B. in dem nachfolgend beschriebenen Lüfter-Array 370) zum Kühlen jedes Schlittens, was es wiederum erlauben kann, dass die physischen Ressourcen bei höheren Leistungspegeln arbeiten. Ferner wird darauf hingewiesen, dass das Rack 240 keine Wände, Einhäusungen oder ähnliches umfasst. Vielmehr ist das Rack 240 ein einhäusungsloses Rack, das zu der lokalen Umgebung geöffnet ist. Natürlich kann in einigen Fällen eine Endplatte an einem der länglichen Stützpfosten 302, 304 angebracht sein, in diesen Situationen, in denen das Rack 240 ein Ende-der-Reihe-Rack in dem Rechenzentrum 100 bildet.
  • Bei einigen Ausführungsbeispielen können verschiedene Verbindungen durch die länglichen Stützpfosten 302, 304 nach oben oder unten geroutet sein. Um ein solches Routing zu ermöglichen, umfasst jeder längliche Stützpfosten 302, 304 eine innere Wand, die eine innere Kammer definiert, in der Verbindungen positioniert sein können. Die Verbindungen, die durch die länglichen Stützpfosten 302, 304 geroutet sind, können als irgendeine Art von Verbindungen verkörpert sein, umfassend, aber nicht beschränkt auf Daten- oder Kommunikationsverbindungen, um jedem Schlitten-Slot 320 Kommunikationsverbindungen bereitzustellen, Leistungsverbindungen, um jedem Schlitten-Slot 320 Leistung bereitzustellen, und/oder andere Arten von Verbindungen.
  • Das Rack 240, bei dem darstellenden Ausfuhrungsbeispiel, umfasst eine Stützplattform, auf der ein entsprechender optischer Datenverbinder (nicht gezeigt) befestigt ist. Jeder optische Datenverbinder ist einem entsprechenden Schlitten-Slot 320 zugeordnet und ist ausgebildet, um mit einem optischen Datenverbinder eines entsprechenden Schlittens 400 zusammenzupassen, wenn der Schlitten 400 in dem entsprechenden Schlitten-Slot 320 empfangen wird. Bei einigen Ausführungsbeispielen werden optische Verbindungen zwischen Komponenten (z.B. Schlitten, Racks und Schalter) in dem Rechenzentrum 100 mit einer blind zusammenpassenden optischen Verbindung hergestellt. Beispielsweise kann eine Tür an jedem Kabel verhindern, dass Staub die Faser im Inneren des Kabels verunreinigt. Bei dem Prozess eines Verbindens mit einem blind zusammenpassenden optischen Verbindermechanismus wird die Tür aufgeschoben, wenn das Ende des Kabels sich dem Verbindermechanismus nähert oder in diesen eindringt. Anschließend kann die optische Faser innerhalb des Kabels in ein Gel innerhalb des Verbindermechanismus eindringen und die optische Faser eines Kabels kommt in Kontakt mit der optischen Faser eines anderen Kabels innerhalb des Gels innerhalb des Verbindermechanismus.
  • Das darstellende Rack 240 umfasst auch ein Lüfterarray 370, das mit den Quer-Stützarmen des Racks 240 gekoppelt ist. Das Lüfterarray 370 umfasst eine oder mehrere Reihen von kühlenden Lüftern 372, die in einer horizontalen Linie zwischen den länglichen Stützpfosten 302, 304 ausgerichtet sind. Bei dem darstellenden Ausführungsbeispiel umfasst das Lüfterarray 370 eine Reihe von kühlenden Lüftern 372 für jeden Schlitten-Slot 320 des Racks 240. Wie vorangehend erörtert wurde, umfasst jeder Schlitten 400 bei dem darstellenden Ausführungsbeispiel nicht irgendein eingebautes Kühlsystem, und somit stellt das Lüfterarray 370 für jeden in dem Rack 240 empfangenen Schlitten 400 Kühlung bereit. Jedes Rack 240 umfasst bei dem darstellenden Ausführungsbeispiel auch eine Leistungsversorgung, die jedem Schlitten-Slot 320 zugeordnet ist. Jede Leistungsversorgung ist an einem der länglichen Stützarme 312 des Paares 310 von länglichen Stützarmen 312, die den entsprechenden Schlitten-Slot 320 definieren, befestigt. Zum Beispiel kann das Rack 240 eine Leistungsversorgung umfassen, die mit jedem länglichem Stützarm 312, der sich von dem länglichen Stützpfosten 302 erstreckt, gekoppelt oder an demselben befestigt ist. Jede Leistungsversorgung umfasst einen Leistungsverbinder, der ausgebildet ist, um mit einem Leistungsverbinder des Schlittens 400 zusammenzupassen, wenn der Schlitten 400 in dem entsprechenden Schlitten-Slot 320 empfangen wird. Bei dem darstellenden Ausführungsbeispiel umfasst der Schlitten 400 nicht irgendeine eingebaute Leistungsversorgung, und somit versorgen die Leistungsversorgungen, die in dem Rack 240 bereitgestellt sind, die entsprechenden Schlitten 400 mit Leistung, wenn sie an dem Rack 240 befestigt sind. Jede Leistungsversorgung ist ausgebildet, um die Leistungsanforderungen für ihren zugeordneten Schlitten zu erfüllen, die von Schlitten zu Schlitten variieren können. Zusätzlich können die in dem Rack 240 bereitgestellten Leistungsversorgungen unabhängig voneinander arbeiten. Das heißt, innerhalb eines einzelnen Racks kann eine erste Leistungsversorgung, die einem Rechenschlitten Leistung bereitstellt, Leistungspegel bereitstellen, die sich von den Leistungspegeln unterscheiden, die durch eine zweite Leistungsversorgung geliefert werden, die einem Beschleunigerschlitten Leistung bereitstellt. Die Leistungsversorgungen können auf Schlittenebene oder Rackebene steuerbar sein und können lokal durch Komponenten auf dem zugeordneten Schlitten oder aus der Ferne gesteuert werden, wie beispielsweise durch einen anderen Schlitten oder einen Orchestrator.
  • Bezug nehmend nun auf 6 ist der Schlitten 400 bei dem darstellenden Ausführungsbeispiel ausgebildet, um in einem entsprechenden Rack 240 des Rechenzentrums 100 befestigt zu werden, wie vorangehend erörtert wurde. Bei einigen Ausführungsbeispielen kann jeder Schlitten 400 für ein Ausführen bestimmter Aufgaben, wie beispielsweise Rechenaufgaben, Beschleunigungsaufgaben, Datenspeicherungsaufgaben etc. optimiert oder anderweitig ausgebildet sein. Zum Beispiel kann der Schlitten 400 ausgeführt sein als ein Rechenschlitten 800, wie nachfolgend Bezug nehmend auf 8-9 erörtert ist, als ein Beschleunigerschlitten 1000, wie nachfolgend Bezug nehmend auf 10-11 erörtert ist, als ein Speicherungsschlitten (storage sled) 1200, wie nachfolgend Bezug nehmend auf 12-13 erörtert ist, oder als ein Schlitten, der optimiert oder anderweitig ausgebildet ist, um andere spezialisierte Aufgaben auszuführen, wie beispielsweise ein Speicherschlitten (memory sled) 1400, wie nachfolgend Bezug nehmend auf 14 erörtert ist.
  • Wie vorangehend erörtert wurde, umfasst der darstellende Schlitten 400 ein gehäuseloses Schaltungsplatinensubstrat 602, das verschiedene physische Ressourcen (z.B. elektrische Komponenten) stützt, die darauf befestigt sind. Es wird darauf hingewiesen, dass das Schaltungsplatinensubstrat 602 insofern „gehäuselos“ ist, als der Schlitten 400 kein Gehäuse oder keine Einhäusung umfasst. Vielmehr ist das gehäuselose Schaltungsplatinensubstrat 602 offen für die lokale Umgebung. Das gehäuselose Schaltungsplatinensubstrat 602 kann aus irgendeinem Material gebildet werden, das in der Lage ist, die verschiedenen elektrischen Komponenten zu stützen, die darauf befestigt sind. Beispielsweise wird bei einem darstellenden Ausführungsbeispiel das gehäuselose Schaltungsplatinensubstrat 602 aus einem FR-4 glasverstärkten Epoxid-Laminatmaterial gebildet.
  • Natürlich können bei anderen Ausführungsbeispielen andere Materialien verwendet werden, um das gehäuselose Schaltungsplatinensubstrat 602 zu bilden.
  • Wie nachfolgend detaillierter erörtert ist, umfasst das gehäuselose Schaltungsplatinensubstrat 602 mehrere Merkmale, die die thermischen Kühlcharakteristika der verschiedenen elektrischen Komponenten, die auf dem gehäuselosen Schaltungsplatinensubstrat 602 befestigt sind, verbessern. Wie bereits erörtert, umfasst das gehäuselose Schaltungsplatinensubstrat 602 kein Gehäuse oder keine Einhäusung, was den Luftstrom über die elektrischen Komponenten des Schlittens 400 verbessern kann, indem es diese Strukturen reduziert, die einen Luftstrom behindern können. Zum Beispiel, da das gehäuselose Schaltungsplatinensubstrat 602 nicht in einem einzelnen Gehäuse oder einer Einhäusung positioniert ist, gibt es keine vertikal angebrachte Rückwand (z.B. eine Rückplatte des Gehäuses), angebracht an dem gehäuselosen Schaltungsplatinensubstrat 602, die einen Luftstrom über die elektrischen Komponenten behindern könnte. Zusätzlich weist das gehäuselose Schaltungsplatinensubstrat 602 eine geometrische Form auf, die ausgebildet ist, um die Länge des Luftstrompfades über die elektrischen Komponenten, die auf dem gehäuselosen Schaltungsplatinensubstrat 602 befestigt sind, zu reduzieren. Beispielsweise weist das darstellende gehäuselose Schaltungsplatinensubstrat 602 eine Breite 604 auf, die größer ist als eine Tiefe 606 des gehäuselosen Schaltungsplatinensubstrats 602. Bei einem bestimmten Ausführungsbeispiel, zum Beispiel, weist das gehäuselose Schaltungsplatinensubstrat 602 eine Breite von etwa 21 Zoll und eine Tiefe von etwa 9 Zoll auf, im Vergleich zu einem typischen Server, der eine Breite von etwa 17 Zoll und eine Tiefe von etwa 39 Zoll aufweist. Somit weist ein Luftstrompfad 608, der sich von einem vorderen Rand 610 des gehäuselosen Schaltungsplatinensubstrats 602 in Richtung eines hinteren Rands 612 erstreckt, relativ zu typischen Servern eine kürzere Distanz auf, was die thermischen Kühlcharakteristika des Schlittens 400 verbessern kann. Ferner, obgleich in 6 nicht dargestellt, sind die verschiedenen physischen Ressourcen, die auf dem gehäuselosen Schaltungsplatinensubstrat 602 befestigt sind, an entsprechenden Stellen befestigt, so dass sich keine zwei im Wesentlichen wärmeproduzierenden elektrischen Komponenten gegenseitig beschatten, wie nachfolgend detaillierter erörtert wird. Das heißt, keine zwei elektrischen Komponenten, die während des Betriebs merkliche Wärme produzieren (d.h. größer als eine Nennwärme, die ausreicht, um die Kühlung einer anderen elektrischen Komponente nachteilig zu beeinflussen), sind auf dem gehäuselosen Schaltungsplatinensubstrat 602 linear in Reihe zueinander entlang der Richtung des Luftstrompfads 608 (d. h. entlang einer Richtung, die sich von dem vorderen Rand 610 zu dem hinteren Rand 612 des gehäuselosen Schaltungsplatinensubstrats 602 erstreckt) befestigt.
  • Wie vorangehend erörtert wurde, umfasst der darstellende Schlitten 400 eine oder mehrere physische Ressourcen 620, die auf einer Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt sind. Obwohl zwei physische Ressourcen 620 in 6 gezeigt sind, wird darauf hingewiesen, dass der Schlitten 400 bei anderen Ausführungsbeispielen ein, zwei oder mehr physische Ressourcen 620 umfassen kann. Die physischen Ressourcen 620 können als irgendeine Art von Prozessor, Steuerung oder andere Rechenschaltung verkörpert sein, der/die in der Lage ist, verschiedene Aufgaben wie beispielsweise Rechenfunktionen und/oder ein Steuern der Funktionen des Schlittens 400 auszuführen, abhängig von, zum Beispiel, dem Typ oder der beabsichtigten Funktionalität des Schlittens 400. Zum Beispiel können, wie nachfolgend detaillierter erörtert, die physischen Ressourcen 620 ausgeführt sein als Hochperformance-Prozessoren bei Ausführungsbeispielen, bei denen der Schlitten 400 ausgeführt ist als ein Rechenschlitten, als Beschleuniger-Co-Prozessoren oder Schaltungen bei Ausführungsbeispielen, bei denen der Schlitten 400 ausgeführt ist als ein Beschleunigerschlitten, Speicherungssteuerungen bei Ausführungsbeispielen, bei denen der Schlitten 400 ausgeführt ist als ein Speicherungsschlitten, oder ein Satz von Speichervorrichtungen bei Ausführungsbeispielen, bei denen der Schlitten 400 als Speicherschlitten ausgeführt ist.
  • Der Schlitten 400 umfasst auch eine oder mehrere zusätzliche physische Ressourcen 630, die auf der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt sind. Bei dem darstellenden Ausführungsbeispiel umfassen die zusätzlichen physischen Ressourcen eine Netzwerkschnittstellensteuerung (NIC; Network Interface Controller), wie nachfolgend detaillierter erörtert wird. Natürlich können abhängig von der Art und Funktionalität des Schlittens 400 die physischen Ressourcen 630 bei anderen Ausführungsbeispielen zusätzliche oder andere elektrische Komponenten, Schaltungen und/oder Vorrichtungen umfassen.
  • Die physischen Ressourcen 620 sind mit den physischen Ressourcen 630 über ein Eingang/Ausgang (I/O; input/output) -Teilsystem 622 kommunikativ gekoppelt. Das I/O-Teilsystem 622 kann als eine Schaltungsanordnung und/oder Komponenten ausgeführt sein, um Eingabe-/Ausgabe-Operationen mit den physischen Ressourcen 620, den physischen Ressourcen 630 und/oder anderen Komponenten des Schlittens 400 zu ermöglichen. Zum Beispiel kann das I/O-Teilsystem 622 als Speichersteuerungs-Hubs, Eingabe/Ausgabe-Steuerungs-Hubs, Integrierter-Sensor-Hubs, Firmware-Vorrichtungen, Kommunikationslinks (z.B. Punkt-zu-Punkt-Links, Bus-Links, Drähte, Kabel, Wellenleiter, Lichtführungen, Gedruckte-Schaltungsplatinen-Leiterbahnen etc.) und/oder andere Komponenten und Teilsysteme, um die Eingabe-/Ausgabeoperationen zu erleichtern, ausgeführt sein oder diese anderweitig umfassen. Bei dem Ausführungsbeispiel ist das I/O-Teilsystem 622 als ein Doppeldatenrate-4 (DDR4-; double data rate 4) Datenbus oder als ein DDR5-Datenbus ausgeführt oder umfasst dieselben anderweitig.
  • Bei einigen Ausführungsbeispielen kann der Schlitten 400 auch eine Ressource-zu-Ressource-Verbindung 624 umfassen. Die Ressource-zu-Ressource-Verbindung 624 kann als irgendeine Art von Kommunikationsverbindung ausgefiihrt sein, die in der Lage ist, Ressource-zu-Ressource-Kommunikationen zu ermöglichen. Bei dem darstellenden Ausführungsbeispiel ist die Ressource-zu-Ressource-Verbindung 624 als eine Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung (z.B. schneller als das I/O-Teilsystem 622) ausgeführt. Zum Beispiel kann die Ressource-zu-Ressource-Verbindung 624 als eine QuickPath Interconnect (QPI), eine UltraPath Interconnect (UPI), PCI Express (PCIe) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung ausgeführt sein, die für Ressource-zu-Ressource-Kommunikationen dediziert ist.
  • Der Schlitten 400 umfasst auch einen Leistungsverbinder 640, der ausgebildet ist, um mit einem entsprechenden Leistungsverbinder des Racks 240 zusammenzupassen, wenn der Schlitten 400 in dem entsprechenden Rack 240 befestigt ist. Der Schlitten 400 empfängt Leistung von einer Leistungsversorgung des Racks 240 über den Leistungsverbinder 640, um den verschiedenen elektrischen Komponenten des Schlittens 400 Leistung zu liefern. Das heißt, der Schlitten 400 umfasst nicht irgendeine lokale Leistungsversorgung (d.h. eine eingebaute Leistungsversorgung), um den elektrischen Komponenten des Schlittens 400 Leistung bereitzustellen. Der Ausschluss einer lokalen oder eingebauten Leistungsversorgung erleichtert die Reduzierung der Gesamtgrundfläche des gehäuselosen Schaltungsplatinensubstrats 602, was die thermischen kühlenden Charakteristika der verschiedenen elektrischen Komponenten, die auf dem gehäuselosen Schaltungsplatinensubstrat 602 befestigt sind, erhöhen kann, wie vorangehend erörtert wurde. Bei einigen Ausführungsbeispielen sind Spannungsregler auf einer Unterseite 750 (siehe 7) des gehäuselosen Schaltungsplatinensubstrats 602 direkt gegenüber den Prozessoren 820 (siehe 8) platziert, und Leistung wird von den Spannungsreglern zu den Prozessoren 820 durch Vias geroutet, die sich durch das Schaltungsplatinensubstrat 602 erstrecken. Eine solche Konfiguration stellt ein erhöhtes thermisches Budget, zusätzlichen Strom und/oder Spannung und eine bessere Spannungssteuerung relativ zu typischen gedruckten Schaltungsplatinen bereit, bei denen die Prozessorleistung von einem Spannungsregler teilweise durch gedruckte Schaltungs-Leiterbahnen geliefert wird.
  • Bei einigen Ausführungsbeispielen kann der Schlitten 400 auch Befestigungsmerkmale 642 umfassen, die ausgebildet sind, mit einem Befestigungsarm oder einer anderen Struktur eines Roboters zusammenzupassen, um das Platzieren des Schlittens 600 in einem Rack 240 durch den Roboter zu ermöglichen. Die Befestigungsmerkmale 642 können als irgendeine Art physischer Strukturen ausgeführt sein, die es dem Roboter erlauben, den Schlitten 400 zu greifen, ohne das gehäuselose Schaltungsplatinensubstrat 602 oder die darauf befestigten elektrischen Komponenten zu beschädigen. Zum Beispiel können bei einigen Ausführungsbeispielen die Befestigungsmerkmale 642 als nicht-leitfähige Anschlussflächen, die an dem gehäuselosen Schaltungsplatinensubstrat 602 angebracht sind, ausgeführt sein. Bei anderen Ausführungsbeispielen können die Befestigungsmerkmale als Klammern, Spangen oder ähnliche Strukturen, die an dem gehäuselosen Schaltungsplatinensubstrat 602 angebracht sind, ausgeführt sein. Die bestimmte Anzahl, Form, Größe und/oder Zusammensetzung des Befestigungsmerkmals 642 kann von dem Entwurf des Roboters abhängen, der ausgebildet ist, um den Schlitten 400 zu managen.
  • Bezug nehmend nun auf 7 umfasst der Schlitten 400 zusätzlich zu den physischen Ressourcen 630, die auf der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt sind, auch eine oder mehrere Speichervorrichtungen 720, die an einer Unterseite 750 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt sind. Das heißt, das gehäuselose Schaltungsplatinensubstrat 602 ist als eine doppelseitige Schaltungsplatine ausgeführt. Die physischen Ressourcen 620 sind mit den Speichervorrichtungen 720 über das I/O-Teilsystem 622 kommunikativ gekoppelt. Zum Beispiel können die physischen Ressourcen 620 und die Speichervorrichtungen 720 durch ein oder mehrere Vias, die sich durch das gehäuselose Schaltungsplatinensubstrat 602 erstrecken, kommunikativ gekoppelt sein. Jede physische Ressource 620 kann bei einigen Ausführungsbeispielen mit einem unterschiedlichen Satz von einer oder mehreren Speichervorrichtungen 720 kommunikativ gekoppelt sein. Alternativ kann bei anderen Ausführungsbeispielen jede physische Ressource 620 kommunikativ mit jeder Speichervorrichtung 720 gekoppelt sein.
  • Die Speichervorrichtungen 720 können als irgendeine Art von Speichervorrichtung ausgeführt sein, die in der Lage ist, Daten für die physischen Ressourcen 620 während des Betriebs des Schlittens 400 zu speichern, wie beispielsweise irgendeine Art von flüchtigem (z. B. dynamischer Direktzugriffsspeicher (DRAM; dynamic random access memory) etc.) oder nichtflüchtigem Speicher. Ein flüchtiger Speicher kann ein Speicherungsmedium (storage medium) sein, das Leistung benötigt, um den Zustand von durch das Medium gespeicherten Daten aufrechtzuerhalten. Nicht einschränkende Beispiele für flüchtigen Speicher (memory) können verschiedene Typen von Direktzugriffsspeicher (RAM; random access memory) umfassen, wie beispielsweise dynamischen Direktzugriffsspeicher (DRAM) oder statischen Direktzugriffsspeicher (SRAM; static random access memory). Eine bestimmte Art von DRAM, die in einem Speichermodul verwendet werden kann, ist ein synchroner dynamischer Direktzugriffsspeicher (SDRAM; synchronous dynamic random access memory). Bei bestimmten Ausführungsbeispielen kann der DRAM einer Speicherkomponente einem durch JEDEC veröffentlichten Standard entsprechen, wie beispielsweise JESD79F für DDR SDRAM, JESD79-2F für DDR2 SDRAM, JESD79-3F für DDR3 SDRAM, JESD79-4A für DDR4 SDRAM, JESD209 für Low Power DDR (LPDDR), JESD209-2 für LPDDR2, JESD209-3 für LPDDR3 und JESD209-4 for LPDDR4. Solche Standards (und ähnliche Standards) können als DDR-basierte Standards bezeichnet werden und Kommunikationsschnittstellen der Speicherungsvorrichtungen, die solche Standards implementieren, können als DDR-basierte Schnittstellen bezeichnet werden.
  • Bei einem Ausführungsbeispiel ist die Speichervorrichtung eine blockadressierbare Speichervorrichtung, wie beispielsweise diese, die auf NAND- oder NOR-Technologien basieren. Ein Block kann irgendeine Größe aufweisen, wie beispielsweise, aber nicht beschränkt auf z. B. 2KB, 4KB, 8KB und so weiter. Eine Speichervorrichtung kann auch nichtflüchtige Vorrichtungen der nächsten Generation umfassen, wie beispielsweise Intel Optane® Speicher oder andere byteadressierbare Write-in-Place- nichtflüchtige Speichervorrichtungen. Bei einem Ausführungsbeispiel kann die Speichervorrichtung Speichervorrichtungen sein oder umfassen, die Chalkogenidglas, Multi-Schwellenpegel-NAND-Flash-Speicher, NOR-Flash-Speicher, Single- oder Multi-Level-Phasenwechselspeicher (PCM; Phase Change Memory) Intel® Optane™ Speicher, einen resistiven Speicher, Nanodraht-Speicher, ferroelektrischen Transistor-Direktzugriffsspeicher (FeTRAM; ferroelectric transistor random access memory), antiferroelektrischen Speicher, magnetoresistiven Direktzugriffsspeicher (MRAM; magnetoresistive random access memory), der Memristor-Technologie einbringt, resistiven Speicher, umfassend die Metalloxidbasis, die Sauerstoffleerstellenbasis und den Leitfähige-Brücken-Direktzugriffsspeicher (CB-RAM; conductive bridge Random Access Memory), oder Spin-Transfer-Torque- (STT) MRAM, eine Spintronik-Magnetübergangsspeicher-basierte Vorrichtung, eine Magnet-Tunnelübergang (MTJ-; magnetic tunneling junction) basierte Vorrichtung, eine DW- (Domain Wall-) und Spin-Bahn-Transfer- (SOT-; Spin Orbit Transfer) basierte Vorrichtung, eine thyristorbasierte Speichervorrichtung oder eine Kombination von irgendwelchen aus den vorstehend Genannten oder einen anderen Speicher verwenden. Die Speichervorrichtung kann sich auf den Die selbst und/oder auf ein gehäustes Speicherprodukt beziehen. Bei einigen Ausführungsbeispielen kann die Speichervorrichtung eine transistorlose, stapelbare Kreuzpunktarchitektur umfassen, bei der Speicherzellen an dem Schnittpunkt von Wortleitungen und Bitleitungen sitzen und individuell adressierbar sind und wobei Bitspeicherung auf einer Veränderung des Bulk-Widerstands basiert.
  • Bezug nehmend nun auf 8 kann der Schlitten 400 bei einigen Ausführungsbeispielen als ein Rechenschlitten 800 ausgeführt sein. Der Rechenschlitten 800 ist optimiert, oder anderweitig ausgebildet, um Rechenaufgaben durchzuführen. Natürlich kann der Rechenschlitten 800, wie vorangehend erörtert wurde, sich auf andere Schlitten verlassen, wie beispielsweise Beschleunigungsschlitten und/oder Speicherungsschlitten, um solche Rechenaufgaben durchzuführen. Der Rechenschlitten 800 umfasst verschiedene physische Ressourcen (z.B. elektrische Komponenten), die ähnlich zu den physischen Ressourcen des Schlittens 400 sind, die in 8 unter Verwendung derselben Bezugszeichen identifiziert wurden. Die Beschreibung solcher Komponenten, die vorangehend in Bezug auf 6 und 7 bereitgestellt wurde, ist anwendbar für die entsprechenden Komponenten des Rechenschlittens 800 und wird hierin der Klarheit der Beschreibung des Rechenschlittens 800 halber nicht wiederholt.
  • Bei dem darstellenden Rechenschlitten 800 sind die physischen Ressourcen 620 als Prozessoren 820 ausgeführt. Obwohl nur zwei Prozessoren 820 in 8 gezeigt sind, wird darauf hingewiesen, dass der Rechenschlitten 800 bei anderen Ausführungsbeispielen zusätzliche Prozessoren 820 umfassen kann. Darstellenderweise sind die Prozessoren 820 als Hochperformance-Prozessoren 820 ausgeführt und können ausgebildet sein, mit einer relativ hohen Nennleistung zu arbeiten. Obwohl die Prozessoren 820 bei einem Arbeiten mit Nennleistungen, die höher sind als typische Prozessoren (die mit etwa 155-230 W arbeiten) zusätzliche Wärme erzeugen, erleichtern die vorangehend erörterten verbesserten thermischen Kühlcharakteristika des gehäuselosen Schaltungsplatinensubstrats 602 den Betrieb mit höherer Leistung. Zum Beispiel sind bei dem darstellenden Ausführungsbeispiel die Prozessoren 820 ausgebildet, um mit einer Nennleistung von zumindest 250 W zu arbeiten. Bei einigen Ausführungsbeispielen können die Prozessoren 820 ausgebildet sein, um mit einer Nennleistung von zumindest 350 W zu arbeiten.
  • Bei einigen Ausführungsbeispielen kann der Rechenschlitten 800 auch eine Prozessor-zu-Prozessor-Verbindung 842 umfassen. Ähnlich zu der Ressource-zu-Ressource-Verbindung 624 des vorangehend erörterten Schlittens 400, kann die Prozessor-zu-Prozessor-Verbindung 842 als irgendeine Art von Kommunikationsverbindung ausgeführt sein, die in der Lage ist, Prozessor-zu Prozessor-Verbindungs 842 -Kommunikationen zu ermöglichen. Bei dem Ausführungsbeispiel ist die Prozessor-zu-Prozessor-Verbindung 842 als eine Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung (z. B. schneller als das I/O-Teilsystem 622) ausgeführt. Zum Beispiel kann die Prozessor-zu-Prozessor-Verbindung 842 als eine QuickPath Interconnect (QPI), eine UltraPath Interconnect (UPI) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung sein, die für Prozessor-zu-Prozessor-Kommunikationen (z. B. PCIe) dediziert ist.
  • Der Rechenschlitten 800 umfasst auch eine Kommunikationsschaltung 830. Die darstellende Kommunikationsschaltung 830 umfasst eine Netzwerkschnittstellensteuerung (NIC) 832, die auch als eine Host-Struktur-Schnittstelle (HFI; host fabric interface) bezeichnet werden kann. Die NIC 832 kann als irgendeine Art von integrierter Schaltung, diskreten Schaltungen, Steuerungschips, Chipsätzen, Add-in-Platinen, Tochterkarten, Netzwerkschnittstellenkarten oder anderen Vorrichtungen, die durch den Rechenschlitten 800 verwendet werden können, um sich mit einer anderen Rechenvorrichtung (z. B. mit anderen Schlitten 400) zu verbinden, ausgeführt sein oder diese anderweitig umfassen. Bei einigen Ausführungsbeispielen kann die NIC 832 als Teil eines Systemsauf-einem-Chip (SoC; system-on-a-chip), das einen oder mehrere Prozessoren umfasst, ausgeführt sein, oder auf einem Multi-Chip-Package, das auch einen oder mehrere Prozessoren umfasst, umfasst sein. Bei einigen Ausführungsbeispielen kann die NIC 832 einen lokalen Prozessor (nicht gezeigt) und/oder einen lokalen Speicher (nicht gezeigt) umfassen, die beide lokal zu der NIC 832 sind. Bei solchen Ausführungsbeispielen kann der lokale Prozessor der NIC 832 in der Lage sein, eine oder mehrere der Funktionen des Prozessors 820 auszuführen. Zusätzlich oder alternativ kann bei solchen Ausführungsbeispielen der lokale Speicher der NIC 832 in eine oder mehrere Komponenten des Rechenschlittens auf der Platinenebene, Buchsenebene, Chip-Ebene und/oder anderen Ebenen integriert sein.
  • Die Kommunikationsschaltung 830 ist kommunikativ mit einem optischen Datenverbinder 834 gekoppelt. Der optische Datenverbinder 834 ist ausgebildet, um mit einem entsprechenden optischen Datenverbinder des Racks 240 zusammenzupassen, wenn der Rechenschlitten 800 in dem Rack 240 befestigt ist. Darstellenderweise umfasst der optische Datenverbinder 834 eine Mehrzahl von optischen Fasern, die von einer zusammenpassenden Oberfläche des optischen Datenverbinders 834 zu einem optischen Sendeempfänger 836 führen. Der optische Sendeempfänger 836 ist ausgebildet, um eingehende optische Signale von dem rackseitigen optischen Datenverbinder in elektrische Signale umzuwandeln und um elektrische Signale in ausgehende optische Signale zu dem rackseitigen optischen Datenverbinder umzuwandeln. Obwohl der optische Sendeempfänger 836 bei dem Ausführungsbeispiel als einen Teil des optischen Datenverbinders 834 bildend gezeigt ist, kann er bei anderen Ausführungsbeispielen einen Abschnitt der Kommunikationsschaltung 830 bilden.
  • Bei einigen Ausführungsbeispielen kann der Rechenschlitten 800 auch einen Erweiterungsverbinder 840 umfassen. Bei solchen Ausführungsbeispielen ist der Erweiterungsverbinder 840 ausgebildet, um mit einem entsprechenden Verbinder eines gehäuselosen Erweiterungsschaltungsplatinensubstrats zusammenzupassen, um dem Rechenschlitten 800 zusätzliche physische Ressourcen bereitzustellen. Die zusätzlichen physischen Ressourcen können zum Beispiel von den Prozessoren 820 während eines Betriebs des Rechenschlittens 800 verwendet werden. Das gehäuselose Erweiterungsschaltungsplatinensubstrat kann im Wesentlichen ähnlich zu dem vorangehend erörterten gehäuselosen Schaltungsplatinensubstrat 602 sein und kann verschiedene elektrische Komponenten umfassen, die daran befestigt sind. Die bestimmten elektrischen Komponenten, die an dem gehäuselosen Erweiterungsschaltungsplatinensubstrat befestigt sind, können von der beabsichtigten Funktionalität des gehäuselosen Erweiterungsschaltungsplatinensubstrats abhängen.
  • Beispielsweise kann das gehäuselose Erweiterungsschaltungsplatinensubstrat zusätzliche Rechenressourcen, Speicherressourcen und/oder Speicherungsressourcen bereitstellen. Als solche können die zusätzlichen physischen Ressourcen des gehäuselosen Erweiterungsschaltungsplatinensubstrats Prozessoren, Speichervorrichtungen, Speicherungsvorrichtungen und/oder Beschleunigerschaltungen, umfassend, zum Beispiel feldprogrammierbare Gate-Arrays (FPGA; field programmable gate array), anwendungsspezifische integrierte Schaltungen (ASICs; application-specific integrated circuits), Sicherheits-Co-Prozessoren, Grafikverarbeitungseinheiten (GPUs; graphics processing units), Maschinelles-Lernen-Schaltungen oder andere spezialisierte Prozessoren, Steuerungen, Vorrichtungen und/oder Schaltungen umfassen, sind aber nicht darauf beschränkt.
  • Bezug nehmend nun auf 9 ist ein darstellendes Ausführungsbeispiel des Rechenschlittens 800 gezeigt. Wie gezeigt ist, sind die Prozessoren 820, die Kommunikationsschaltung 830 und der optische Datenverbinder 834 an der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt. Irgendeine geeignete Anbringungs- oder Befestigungstechnologie kann verwendet werden, um die physischen Ressourcen des Rechenschlittens 800 an dem gehäuselosen Schaltungsplatinensubstrat 602 zu befestigen. Zum Beispiel können die verschiedenen physischen Ressourcen in entsprechenden Buchsen (z.B. einer Prozessorbuchse), Halterungen oder Klammern befestigt sein. In einigen Fällen können einige der elektrischen Komponenten durch Löten oder ähnliche Techniken direkt an dem gehäuselosen Schaltungsplatinensubstrat 602 befestigt sein.
  • Wie vorangehend erörtert wurde, sind die individuellen Prozessoren 820 und die Kommunikationsschaltung 830 an der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 derart befestigt, dass sich keine zwei wärmeproduzierenden, elektrischen Komponenten gegenseitig beschatten. Bei dem darstellenden Ausführungsbeispiel sind die Prozessoren 820 und die Kommunikationsschaltung 830 an entsprechenden Stellen auf der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 derart befestigt, dass keine zwei dieser physischen Ressourcen linear in einer Reihe mit anderen entlang der Richtung des Luftstrompfads 608 sind. Es wird darauf hingewiesen, dass, obwohl der optische Datenverbinder 834 in einer Reihe mit der Kommunikationsschaltung 830 ist, der optische Datenverbinder 834 im Betrieb keine oder nominale Wärme erzeugt.
  • Die Speichervorrichtungen 720 des Rechenschlittens 800 sind an der Unterseite 750 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt, wie vorangehend Bezug nehmend auf den Schlitten 400 erörtert wurde. Obgleich sie an der Unterseite 750 befestigt sind, sind die Speichervorrichtungen 720 über das I/O-Teilsystem 622 kommunikativ mit den Prozessoren 820 gekoppelt, die auf der Oberseite 650 positioniert sind. Da das gehäuselose Schaltungsplatinensubstrat 602 als eine doppelseitige Schaltungsplatine verkörpert ist, können die Speichervorrichtungen 720 und die Prozessoren 820 durch eines oder mehrere Vias, Verbinder oder andere Mechanismen, die sich durch das gehäuselose Schaltungsplatinensubstrat 602 erstrecken, kommunikativ gekoppelt sein. Natürlich kann jeder Prozessor 820 bei einigen Ausführungsbeispielen mit einem unterschiedlichen Satz von einer oder mehreren Speichervorrichtungen 720 kommunikativ gekoppelt sein. Alternativ kann bei anderen Ausführungsbeispielen jeder Prozessor 820 kommunikativ mit jeder Speichervorrichtung 720 gekoppelt sein. Bei einigen Ausführungsbeispielen können die Speichervorrichtungen 720 an einer oder mehreren Speichermezzaninen auf der Unterseite des gehäuselosen Schaltungsplatinensubstrats 602 befestigt sein und können mit einem entsprechenden Prozessor 820 durch ein Kugelgitter-Array verbunden sein.
  • Jeder der Prozessoren 820 umfasst eine daran befestigte Wärmesenke 850. Durch das Befestigen der Speichervorrichtungen 720 an der Unterseite 750 des gehäuselosen Schaltungsplatinensubstrats 602 (sowie das vertikale Beabstanden der Schlitten 400 in dem entsprechenden Rack 240) umfasst die Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 zusätzlichen „freien“ Bereich oder Raum, der die Verwendung von Wärmesenken 850 ermöglicht, die eine größere Größe relativ zu traditionellen Wärmesenken aufweisen, die in typischen Servern verwendet werden. Zusätzlich umfassen aufgrund der verbesserten thermischen Kühlcharakteristika des gehäuselosen Schaltungsplatinensubstrats 602 keine der Prozessor-Wärmesenken 850 kühlende Lüfter, die daran angebracht sind. Das heißt, jede der Wärmesenken 850 ist als eine lüfterlose Wärmesenke verkörpert. Bei einigen Ausführungsbeispielen können sich die Wärmesenken 850, die auf den Prozessoren 820 befestigt sind, mit der Wärmesenke überlappen, die an der Kommunikationsschaltung 830 in Richtung des Luftstrompfads 608 angebracht ist, aufgrund ihrer erhöhten Größe, wie durch 9 veranschaulichend vorgeschlagen.
  • Bezug nehmend nun auf 10 kann der Schlitten 400 bei einigen Ausführungsbeispielen als ein Beschleunigerschlitten 1000 ausgeführt sein. Der Beschleunigerschlitten 1000 ist ausgebildet, spezialisierte Rechenaufgaben, wie beispielsweise maschinelles Lernen, Verschlüsselung, Hashing oder andere rechenintensive Aufgaben, auszuführen. Bei einigen Ausführungsbeispielen kann zum Beispiel ein Rechenschlitten 800 im Betrieb Aufgaben an den Beschleunigerschlitten 1000 abgeben. Der Beschleunigerschlitten 1000 umfasst verschiedene Komponenten, die ähnlich zu den Komponenten des Schlittens 400 und/oder des Rechenschlittens 800 sind, die in 10 unter Verwendung derselben Bezugszeichen identifiziert werden. Die Beschreibung solcher Komponenten, die vorangehend in Bezug auf 6, 7 und 8 bereitgestellt wurde, ist anwendbar für die entsprechenden Komponenten des Beschleunigerschlittens 1000 und wird hierin der Klarheit der Beschreibung des Beschleunigerschlittens 1000 halber nicht wiederholt.
  • Bei dem darstellenden Beschleunigerschlitten 1000 sind die physischen Ressourcen 620 als Beschleunigerschaltungen 1020 ausgeführt. Obwohl nur zwei Beschleunigerschaltungen 1020 in 10 gezeigt sind, wird darauf hingewiesen, dass der Beschleunigerschlitten 1000 bei anderen Ausführungsbeispielen zusätzliche Beschleunigerschaltungen 1020 umfassen kann. Zum Beispiel, wie in 11 gezeigt ist, kann der Beschleunigerschlitten 1000 bei einigen Ausführungsbeispielen vier Beschleunigerschaltungen 1020 umfassen. Die Beschleunigerschaltungen 1020 können als irgendeine Art von Prozessor, Co-Prozessor, Rechenschaltung oder andere Vorrichtung, die in der Lage ist, Rechen- oder Verarbeitungsoperationen durchzuführen, ausgeführt sein. Zum Beispiel können die Beschleunigerschaltungen 1020 beispielsweise als zentrale Verarbeitungseinheiten, Kerne, feldprogrammierbare Gate-Arrays (FPGA), anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare Steuerlogik (PCL; programmable control logic), Sicherheits-Co-Prozessoren, Grafikverarbeitungseinheiten (GPUs), neuromorphe Prozessoreinheiten, Quantencomputer, Maschinelles-Lernen-Schaltungen oder andere spezialisierte Prozessoren, Steuerungen, Vorrichtungen und/oder Schaltungen ausgeführt sein.
  • Bei einigen Ausführungsbeispielen kann der Beschleunigerschlitten 1000 auch eine Beschleuniger-zu-Beschleuniger-Verbindung 1042 umfassen. Ähnlich zu der Ressource-zu-Ressource-Verbindung 624 des vorangehend erörterten Schlittens 600, kann die Beschleuniger-zu-Beschleuniger-Verbindung 1042 als irgendeine Art von Kommunikationsverbindung verkörpert sein, die in der Lage ist, Beschleuniger-zu-Beschleuniger-Kommunikationen zu ermöglichen. Bei dem Ausführungsbeispiel ist die Beschleuniger-zu-Beschleuniger-Verbindung 1042 als eine Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung (z. B. schneller als das I/O-Teilsystem 622) ausgeführt. Zum Beispiel kann die Beschleuniger-zu-Beschleuniger-Verbindung 1042 als eine QuickPath Interconnect (QPI), eine UltraPath Interconnect (UPI) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung ausgeführt sein, die für Prozessor-zu-Prozessor-Kommunikationen dediziert ist. Bei einigen Ausführungsbeispielen können die Beschleunigerschaltungen 1020 mit einer primären Beschleunigerschaltung 1020, die durch das I/O-Teilsystem 622 mit der NIC 832 und dem Speicher 720 verbunden ist, und einer sekundären Beschleunigerschaltung 1020, die durch eine primäre Beschleunigerschaltung 1020 mit der NIC 832 und dem Speicher 720 verbunden ist, als Daisy-Chain verbunden sein.
  • Bezug nehmend nun auf 11 ist ein darstellendes Ausführungsbeispiel des Beschleunigerschlittens 1000 gezeigt. Wie vorangehend erörtert wurde, sind die Beschleunigerschaltungen 1020, die Kommunikationsschaltung 830 und der optische Datenverbinder 834 an der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt. Wiederum sind die individuellen Beschleunigerschaltungen 1020 und die Kommunikationsschaltung 830 an der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 derart befestigt, dass sich keine zwei wärmeproduzierenden, elektrischen Komponenten gegenseitig beschatten, wie vorangehend erörtert wurde. Die Speichervorrichtungen 720 des Beschleunigerschlittens 1000 sind an der Unterseite 750 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt, wie vorangehend Bezug nehmend auf den Schlitten 600 erörtert wurde. Obgleich sie an der Unterseite 750 befestigt sind, sind die Speichervorrichtungen 720 über das I/O-Teilsystem 622 (z.B. durch Vias) kommunikativ mit den Beschleunigerschaltungen 1020 gekoppelt, die auf der Oberseite 650 positioniert sind. Ferner kann jede der Beschleunigerschaltungen 1020 eine Wärmesenke 1070 umfassen, die größer ist als eine traditionelle Wärmesenke, die in einem Server verwendet wird. Wie vorangehend Bezug nehmend auf die Wärmesenken 870 erörtert wurde, können die Wärmesenken 1070 größer als traditionelle Wärmesenken sein, aufgrund des „freien“ Bereichs, der durch die Speicherressourcen 720 bereitgestellt ist, die auf der Unterseite 750 des gehäuselosen Schaltungsplatinensubstrats 602 anstatt auf der Oberseite 650 positioniert sind.
  • Bezug nehmend nun auf 12 kann der Schlitten 400 bei einigen Ausführungsbeispielen als ein Speicherungsschlitten 1200 ausgeführt sein. Der Speicherungsschlitten 1200 ist ausgebildet, Daten in einer Datenspeicherung 1250 zu speichern, die lokal zu dem Speicherungsschlitten 1200 ist. Zum Beispiel kann ein Rechenschlitten 800 oder ein Beschleunigerschlitten 1000 im Betrieb Daten von der Datenspeicherung 1250 des Speicherungsschlittens 1200 speichern und abrufen. Der Speicherungsschlitten 1200 umfasst verschiedene Komponenten, die ähnlich zu den Komponenten des Schlittens 400 und/oder des Rechenschlittens 800 sind, die in 12 unter Verwendung derselben Bezugszeichen identifiziert wurden. Die Beschreibung solcher Komponenten, die vorangehend in Bezug auf 6, 7 und 8 bereitgestellt wurde, ist anwendbar auf die entsprechenden Komponenten des Speicherungsschlittens 1200 und wird hierin der Klarheit der Beschreibung des Speicherungsschlittens 1200 halber nicht wiederholt.
  • Bei dem darstellenden Speicherungsschlitten 1200 sind die physischen Ressourcen 620 als Speicherungssteuerungen 1220 ausgeführt. Obwohl nur zwei Speicherungssteuerungen 1220 in 12 gezeigt sind, wird darauf hingewiesen, dass der Speicherungsschlitten 1200 bei anderen Ausführungsbeispielen zusätzliche Speicherungssteuerungen 1220 umfassen kann. Die Speicherungssteuerungen 1220 können als irgendeine Art von Prozessor, Steuerung oder Steuerschaltung ausgeführt sein, die in der Lage ist, die Speicherung und den Abruf von Daten in die Datenspeicherung 1250 basierend auf Anforderungen, die über die Kommunikationsschaltung 830 empfangen werden, zu steuern. Bei dem Ausführungsbeispiel sind die Speicherungssteuerungen 1220 als relative Niedrigleistungs-Prozessoren oder -Steuerungen ausgeführt. Zum Beispiel können bei einigen Ausführungsbeispielen die Speicherungssteuerungen 1220 ausgebildet sein, bei einer Nennleistung von etwa 75 Watt zu arbeiten.
  • Bei einigen Ausführungsbeispielen kann der Speicherungsschlitten 1200 auch eine Steuerung-zu-Steuerung-Verbindung 1242 umfassen. Ähnlich zu der Ressource-zu-Ressource-Verbindung 624 des vorangehend erörterten Schlittens 400, kann die Steuerung-zu-Steuerung-Verbindung 1242 als irgendeine Art von Kommunikationsverbindung verkörpert sein, die in der Lage ist, Steuerung-zu-Steuerung-Kommunikationen zu ermöglichen. Bei dem Ausführungsbeispiel ist die Steuerung-zu-Steuerung-Verbindung 1242 als eine Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung (z. B. schneller als das I/O-Teilsystem 622) ausgeführt. Zum Beispiel kann die Steuerung-zu-Steuerung-Verbindung 1242 als eine QuickPath Interconnect (QPI), eine UltraPath Interconnect (UPI) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung ausgeführt sein, die für Prozessor-zu-Prozessor-Kommunikationen dediziert ist.
  • Bezug nehmend nun auf 13 ist ein darstellendes Ausführungsbeispiel des Speicherungsschlittens 1200 gezeigt. Bei dem Ausführungsbeispiel ist die Datenspeicherung 1250 als ein Speicherungskäfig 1252 ausgeführt, der ausgebildet ist, ein oder mehrere Solid-State-Laufwerke (SSDs; solid state drives) 1254 zu häusen, oder umfasst diesen anderweitig. Zu diesem Zweck umfasst der Speicherungskäfig 1252 eine Anzahl von Befestigungsslots 1256, die jeweils ausgebildet sind, ein entsprechendes Solid-State-Laufwerk 1254 zu empfangen. Jeder der Befestigungsslots 1256 umfasst eine Anzahl von Laufwerkfiihrungen 1258, die zusammenwirken, um eine Zugriffsöffnung 1260 des entsprechenden Befestigungsslots 1256 zu definieren. Der Speicherungskäfig 1252 ist so auf dem gehäuselosen Schaltungsplatinensubstrat 602 befestigt, dass die Zugriffsöffnungen von dem gehäuselosen Schaltungsplatinensubstrat 602 weg (d.h. in Richtung der Vorderseite) zeigen. Somit sind die Solid-State-Laufwerke 1254 zugänglich, während der Speicherungsschlitten 1200 in einem entsprechenden Rack 204 befestigt ist. Zum Beispiel kann ein Solid-State-Laufwerk 1254 aus einem Rack 240 (z.B. über einen Roboter) ausgelagert werden, während der Speicherungsschlitten 1200 in dem entsprechenden Rack 240 befestigt bleibt.
  • Der Speicherungskäfig1252 umfasst darstellenderweise sechzehn Befestigungsslots 1256 und ist in der Lage, sechzehn Solid-State-Laufwerke 1254 zu befestigen und zu lagern. Natürlich kann der Speicherungskäfig 1252 bei anderen Ausführungsbeispielen ausgebildet sein, um zusätzliche oder weniger Solid-State-Laufwerke 1254 zu lagern. Zusätzlich sind bei dem darstellenden Ausführungsbeispiel die Solid-State-Treiber vertikal in dem Speicherungskäfig 1252 befestigt, können aber bei anderen Ausführungsbeispielen in einer unterschiedlichen Orientierung in dem Speicherungskäfig 1252 befestigt sein. Jedes Solid-State-Laufwerk 1254 kann als irgendeine Art von Datenspeicherungsvorrichtung ausgeführt sein, die in der Lage ist, Langzeitdaten zu speichern. Zu diesem Zweck können die Solid-State-Laufwerke 1254 flüchtige und nichtflüchtige Speichervorrichtungen umfassen, die vorangehend erörtert wurden.
  • Wie in 13 gezeigt ist, sind die Speicherungssteuerungen 1220, die Kommunikationsschaltung 830 und der optische Datenverbinder 834 darstellenderweise an der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt. Wiederum kann, wie vorangehend erörtert wurde, irgendeine geeignete Anbringungs- oder Befestigungstechnologie verwendet werden, um die elektrischen Komponenten des Speicherungsschlittens 1200 auf dem gehäuselosen Schaltungsplatinensubstrat 602 zu befestigen, umfassend zum Beispiel Buchsen (z. B. eine Prozessorbuchse), Halterungen, Klammern, gelötete Verbindungen und/oder andere Befestigungs- oder Sicherungstechniken.
  • Wie vorangehend erörtert wurde, sind die individuellen Speicherungssteuerungen 1220 und die Kommunikationsschaltung 830 an der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 derart befestigt, dass sich keine zwei wärmeproduzierenden, elektrischen Komponenten gegenseitig beschatten. Zum Beispiel sind die Speicherungssteuerungen 1220 und die Kommunikationsschaltung 830 an entsprechenden Stellen auf der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 derart befestigt, dass keine zwei dieser elektrischen Komponenten linear in einer Reihe zueinander entlang der Richtung des Luftstrompfads 608 sind.
  • Die Speichervorrichtungen 720 des Speicherungsschlittens 1200 sind an der Unterseite 750 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt, wie vorangehend Bezug nehmend auf den Schlitten 400 erörtert wurde. Obgleich sie an der Unterseite 750 befestigt sind, sind die Speichervorrichtungen 720 über das I/O-Teilsystem 622 kommunikativ mit den Speicherungssteuerungen 1220 gekoppelt, die auf der Oberseite 650 positioniert sind. Da das gehäuselose Schaltungsplatinensubstrat 602 als eine doppelseitige Schaltungsplatine ausgeführt ist, können die Speichervorrichtungen 720 und die Speicherungssteuerungen 1220 wiederum durch eines oder mehrere Vias, Verbinder oder andere Mechanismen, die sich durch das gehäuselose Schaltungsplatinensubstrat 602 erstrecken, kommunikativ gekoppelt sein. Jede der Speicherungssteuerungen 1220 umfasst eine daran befestigte Wärmesenke 1270. Wie vorangehend erörtert wurde, umfassen aufgrund der verbesserten thermischen Kühlcharakteristika des gehäuselosen Schaltungsplatinensubstrats 602 des Speicherungsschlittens 1200 keine der Wärmesenken 1270 kühlende Lüfter, die daran angebracht sind. Das heißt, jede der Wärmesenken 1270 ist als eine lüfterlose Wärmesenke verkörpert.
  • Bezug nehmend nun auf 14 kann der Schlitten 400 bei einigen Ausführungsbeispielen als ein Speicherschlitten 1400 ausgeführt sein. Der Speicherungsschlitten 1400 ist optimiert, oder anderweitig ausgebildet, an andere Schlitten 400 (z. B. Rechenschlitten 800, Beschleunigerschlitten 1000, etc.) Zugriff auf einen Pool von Speicher (z. B. in zwei oder mehr Sätzen 1430, 1432 von Speichervorrichtungen 720) lokal zu dem Speicherschlitten 1200 bereitzustellen. Zum Beispiel kann ein Rechenschlitten 800 oder ein Beschleunigerschlitten 1000 während des Betriebs aus der Ferne auf einen oder mehrere der Speichersätze 1430, 1432 des Speicherschlittens 1200 schreiben und/oder von diesen lesen, unter Verwendung eines logischen Adressraums, der auf physische Adressen in den Speichersätzen 1430, 1432 abbildet. Der Speicherschlitten 1400 umfasst verschiedene Komponenten, die ähnlich zu Komponenten des Schlittens 400 und/oder des Rechenschlittens 800 sind, die in 14 unter Verwendung derselben Bezugszeichen identifiziert wurden. Die Beschreibung solcher Komponenten, die vorangehend in Bezug auf 6, 7 und 8 bereitgestellt wurde, ist anwendbar für die entsprechenden Komponenten des Speicherschlittens 1400 und wird hierin der Klarheit der Beschreibung des Speicherschlittens 1400 halber nicht wiederholt.
  • Bei dem darstellenden Speicherschlitten 1400 sind die physischen Ressourcen 620 als Speichersteuerungen 1420 ausgeführt. Obwohl nur zwei Speichersteuerungen 1420 in 14 gezeigt sind, wird darauf hingewiesen, dass der Speicherschlitten 1400 bei anderen Ausführungsbeispielen zusätzliche Speichersteuerungen 1420 umfassen kann. Die Speichersteuerungen 1420 können als irgendeine Art von Prozessor, Steuerung oder Steuerschaltung ausgeführt sein, die in der Lage ist, das Schreiben und Lesen von Daten in die Speichersätze 1430, 1432 basierend auf Anforderungen, die via die Kommunikationsschaltung 830 empfangen werden, zu steuern. Bei dem darstellenden Ausführungsbeispiel ist jede Speichersteuerung 1420 mit einem entsprechenden Speichersatz 1430, 1432 verbunden, um auf die Speichervorrichtungen 720 innerhalb des entsprechenden Speichersatzes 1430, 1432 zu schreiben und von ihnen zu lesen, und irgendwelche Berechtigungen (z.B. Lesen, Schreiben etc.) durchzusetzen, die dem Schlitten 400 zugeordnet sind, der eine Anforderung an den Speicherschlitten 1400 gesendet hat, um eine Speicherzugriffsoperation (z.B. Lesen oder Schreiben) durchzuführen.
  • Bei einigen Ausführungsbeispielen kann der Speicherschlitten 1400 auch eine Steuerung-zu-Steuerung-Verbindung 1442 umfassen. Ähnlich zu der Ressource-zu-Ressource-Verbindung 624 des vorangehend erörterten Schlittens 400, kann die Steuerung-zu-Steuerung-Verbindung 1442 als irgendeine Art von Kommunikationsverbindung verkörpert sein, die in der Lage ist, Steuerung-zu-Steuerung-Kommunikationen zu ermöglichen. Bei dem Ausführungsbeispiel ist die Steuerung-zu-Steuerung-Verbindung 1442 als eine Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung (z. B. schneller als das I/O-Teilsystem 622) ausgeführt. Zum Beispiel kann die Steuerung-zu-Steuerung-Verbindung 1442 als eine QuickPath Interconnect (QPI), eine UltraPath Interconnect (UPI) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung ausgeführt sein, die für Prozessor-zu-Prozessor-Kommunikationen dediziert ist. Somit kann bei einigen Ausführungsbeispielen eine Speichersteuerung 1420 durch die Steuerung-zu-Steuerung-Verbindung 1442 auf Speicher zugreifen, der innerhalb des Speichersatzes 1432 ist, der einer anderen Speichersteuerung 1420 zugeordnet ist. Bei einigen Ausführungsbeispielen ist eine skalierbare Speichersteuerung aus mehreren kleineren Speichersteuerungen, hierin als „Chiplets“ bezeichnet, auf einem Speicherschlitten (z.B. dem Speicherschlitten 1400) hergestellt. Die Chiplets können verbunden sein (z.B. unter Verwendung einer EMIB (Embedded Multi-Die Interconnect Bridge; eingebettete Multi-Die-Verbindungsbrücke)). Die kombinierte Chiplet-Speichersteuerung kann auf eine relativ große Anzahl von Speichersteuerungen und I/O-Ports (z. B. bis zu 16 Speicherkanäle) skaliert werden. Bei einigen Ausführungsbeispielen können die Speichersteuerungen 1420 eine Speicherverschachtelung implementieren (z. B. eine Speicheradresse ist auf den Speichersatz 1430 abgebildet, die nächste Speicheradresse ist auf den Speichersatz 1432 abgebildet und die dritte Adresse ist auf den Speichersatz 1430 abgebildet, etc.) . Das Verschachteln kann innerhalb der Speichersteuerungen 1420 oder von CPU-Buchsen (z. B. des Rechenschlittens 800) über Netzwerklinks zu den Speichersätzen 1430, 1432 verwaltet werden und kann die Latenz, die einem Ausführen von Speicherzugriffsoperationen im Vergleich zum Zugriff auf angrenzende Speicheradressen von derselben Speichervorrichtung zugeordnet ist, verbessern.
  • Ferner kann bei einigen Ausführungsbeispielen der Speicherschlitten 1400 mit einem oder mehreren anderen Schlitten 400 (z.B. in dem gleichen Rack 240 oder einem benachbarten Rack 240) durch einen Wellenleiter verbunden sein, unter Verwendung des Wellenleiterverbinders 1480. Bei dem darstellenden Ausführungsbeispiel sind die Wellenleiter 64-Millimeter-Wellenleiter, die 16 Rx- (d.h. Empfangs-) Spuren und 16 Tx- (d.h. Sende-) Spuren bereitstellen. Jede Spur bei dem darstellenden Ausführungsbeispiel ist entweder 16 Ghz oder 32 Ghz. Bei anderen Ausführungsbeispielen können die Frequenzen unterschiedlich sein. Ein Verwenden eines Wellenleiters kann Zugriff mit hohem Durchsatzverhalten auf den Speicherpool (z.B. die Speichersätze 1430, 1432) auf einen anderen Schlitten (z.B. einen Schlitten 400 in demselben Rack 240 oder einem benachbarten Rack 240 als der Speicherschlitten 1400) bereitstellen, ohne die Last auf den optischen Datenverbinder 834 zu erhöhen.
  • Bezug nehmend nun auf 15 kann ein System zum Ausführen einer oder mehrerer Arbeitslasten (z.B. Anwendungen) gemäß dem Rechenzentrum 100 implementiert sein. Bei dem Ausführungsbeispiel umfasst das System 1510 einen Orchestrator-Server 1520, der als ein verwalteter Knoten ausgeführt sein kann, aufweisend eine Rechenvorrichtung (z. B. einen Prozessor 820 auf einem Rechenschlitten 800), die Management-Software (z. B. eine Cloud-arbeitende Umgebung, wie beispielsweise Open Stack) ausführt, die kommunikativ mit mehreren Schlitten 400, umfassend eine große Anzahl von Rechenschlitten 1530 (z. B. jeweils ähnlich zu dem Rechenschlitten 800), Speicherschlitten 1540 (z. B. jeweils ähnlich zu dem Speicherschlitten 1400), Beschleunigerschlitten 1550 (z. B. jeweils ähnlich zu dem Speicherschlitten 1000), und Speicherungsschlitten 1560 (z. B. jeweils ähnlich zu dem Speicherungsschlitten 1200), gekoppelt ist. Einer oder mehrere der Schlitten 1530, 1540, 1550, 1560 können in einen gemanagten Knoten 1570 gruppiert sein, wie beispielsweise durch den Orchestrator-Server 1520, um gemeinsam eine Arbeitslast (z.B. eine Anwendung 1532, die in einer virtuellen Maschine oder in einem Container ausgeführt wird) durchzuführen. Der verwaltete Knoten 1570 kann als eine Anordnung von physischen Ressourcen 620, wie beispielsweise Prozessoren 820, Speicherressourcen 720, Beschleunigerschaltungen 1020 oder Datenspeicherung 1250, von dem gleichen oder unterschiedlichen Schlitten 400, ausgeführt sein. Ferner kann der verwaltete Knoten zu der Zeit, zu der dem verwalteten Knoten eine Arbeitslast zugewiesen werden soll, oder zu irgendeinem anderen Zeitpunkt durch den Orchestrator-Server 1520 eingerichtet, definiert oder „aufgesponnen“ werden und kann unabhängig davon existieren, ob dem verwalteten Knoten derzeit irgendwelche Arbeitslasten zugewiesen sind. Bei dem Ausführungsbeispiel kann der Orchestrator-Server 1520 selektiv physische Ressourcen 620 von den Schlitten 400 zuweisen und/oder die Zuweisung aufheben und/oder einen oder mehrere Schlitten 400 zu dem verwalteten Knoten 1570 als eine Funktion von Quality of Service- (QoS-) Zielen (z.B. ein Ziel-Durchsatz, eine Ziellatenzzeit, eine Ziel-Anzahl von Anweisungen pro Sekunde etc.), die einem Service-Level-Agreement für die Arbeitslast (z. B. die Anwendung 1532) zugeordnet sind, hinzufügen oder von demselben entfernen. Dabei kann der Orchestrator-Server 1520 Telemetriedaten empfangen, die Performance-Bedingungen (z. B. Durchsatz, Latenzzeit, Anweisungen pro Sekunde, etc.) in jedem Schlitten 400 des verwalteten Knotens 1570 anzeigen, und die Telemetriedaten mit den Quality-of-Service-Zielen vergleichen, um zu bestimmen, ob die Quality-of-Service-Ziele erfüllt werden. Der Orchestrator-Server 1520 kann zusätzlich bestimmen, ob eine oder mehrere physische Ressourcen von dem verwalteten Knoten 1570 de-allokiert werden können, während die QoS-Ziele noch erfüllt werden, wodurch diese physischen Ressourcen für eine Verwendung in einem anderen verwalteten Knoten (z.B. um eine unterschiedliche Arbeitslast durchzuführen) freigegeben werden. Alternativ, wenn die QoS-Ziele derzeit nicht erfüllt sind, kann der Orchestrator-Server 1520 bestimmen, zusätzliche physische Ressourcen dynamisch zuzuordnen, um bei der Ausführung der Arbeitslast (z.B. der Anwendung 1532) zu helfen, während die Arbeitslast ausgeführt wird. In ähnlicher Weise kann der Orchestrator-Server 1520 bestimmen, physische Ressourcen von einem verwalteten Knoten dynamisch zu de-allokieren, wenn der Orchestrator-Server 1520 bestimmt, dass ein De-Allokieren der physischen Ressource dazu führen würde, dass die QoS-Ziele immer noch erreicht werden.
  • Zusätzlich kann der Orchestrator-Server 1520 bei einigen Ausführungsbeispielen Trends in der Ressourcennutzung der Arbeitslast (z. B. der Anwendung 1532) identifizieren, wie beispielsweise durch ein Identifizieren von Phasen einer Ausführung (z.B. Zeitperioden, in denen unterschiedliche Operationen, wobei jede unterschiedliche Ressourcennutzungscharakteristika aufweist, durchgeführt werden) der Arbeitslast (z. B. der Anwendung 1532) und durch vorausschauendes Identifizieren verfügbarer Ressourcen in dem Rechenzentrum 100 und ein Allokieren derselben zu dem verwalteten Knoten 1570 (z. B. innerhalb einer vordefinierten Zeitperiode des zugeordneten Phasenbeginns). Bei einigen Ausführungsbeispielen kann der Orchestrator-Server 1520 Performance basierend auf verschiedenen Latenzzeiten und einem Verteilungsschema modellieren, um Arbeitslasten unter Rechenschlitten und anderen Ressourcen (z.B. Beschleunigerschlitten, Speicherschlitten, Speicherungsschlitten) in dem Rechenzentrum 100 zu verteilen. Der Orchestrator-Server 1520 kann beispielsweise ein Modell verwenden, das die Performance von Ressourcen auf den Schlitten 400 (z. B. FPGA-Performance, Speicherzugriffslatenzzeit etc.) und die Performance (z. B. Überlastung, Latenzzeit, Bandbreite) des Pfads durch das Netzwerk zu der Ressource (z. B. FPGA) berücksichtigt. Somit kann der Orchestrator-Server 1520 basierend auf der Gesamtlatenz, die jeder potenziellen Ressource, die in dem Rechenzentrum 100 (z.B. die Latenz, die der Performance der Ressource selbst zugeordnet ist, zusätzlich zu der Latenz, die dem Pfad durch das Netzwerk zwischen dem Rechenschlitten, der die Arbeitslast ausführt, und dem Schlitten 400, auf dem die Ressource positioniert ist, zugeordnet ist) verfügbar ist, zugeordnet ist, bestimmen, welche Ressource(n) mit welchen Arbeitslasten verwendet werden sollten.
  • Bei einigen Ausführungsbeispielen kann der Orchestrator-Server 1520 eine Karte von Wärmeerzeugung in dem Rechenzentrum 100 erstellen, unter Verwendung von Telemetriedaten (z.B. Temperaturen, Lüftergeschwindigkeiten, etc.), die von den Schlitten 400 gemeldet werden, und verwalteten Knoten als eine Funktion der Karte von Wärmeerzeugung und vorhergesagter Wärmeerzeugung, die unterschiedlichen Arbeitslasten zugeordnet ist, Ressourcen zuweisen, um eine Zieltemperatur und Wärmeverteilung in dem Rechenzentrum 100 zu erhalten. Zusätzlich oder alternativ dazu kann der Orchestrator-Server 1520 bei einigen Ausführungsbeispielen empfangene Telemetriedaten in einem hierarchischen Modell organisieren, das eine Beziehung zwischen den verwalteten Knoten (z. B. eine räumliche Beziehung wie beispielsweise die physischen Standorte der Ressourcen der verwalteten Knoten innerhalb des Rechenzentrums 100 und/oder eine funktionale Beziehung wie beispielsweise Gruppierungen der verwalteten Knoten durch die Kunden, für die die verwalteten Knoten Dienste bereitstellen, die Arten von Funktionen, die typischerweise von den verwalteten Knoten ausgeführt werden, verwaltete Knoten, die typischerweise Arbeitslasten untereinander gemeinschaftlich verwenden oder austauschen, etc.) anzeigt. Basierend auf Unterschieden bei den physischen Standorten und Ressourcen in den verwalteten Knoten kann eine gegebene Arbeitslast unterschiedliche Ressourcennutzungen (z. B. Verursachen einer unterschiedlichen, internen Temperatur, Verwenden eines unterschiedlichen Prozentsatzes von Prozessor- oder Speicherkapazität) über die Ressourcen von unterschiedlichen verwalteten Knoten aufzeigen. Der Orchestrator-Server 1520 kann die Unterschiede basierend auf den Telemetriedaten bestimmen, die in dem hierarchischen Modell gespeichert sind, und die Unterschiede in eine Vorhersage einer zukünftigen Ressourcennutzung einer Arbeitlast einfließen lassen, falls die Arbeitslast von einem verwalteten Knoten einem anderen verwalteten Knoten neu zugewiesen wird, um die Ressourcennutzung in dem Rechenzentrum 100 genau auszubalancieren. Bei einigen Ausführungsbeispielen kann der Orchestrator-Server 1520 Muster in den Ressourcennutzungsphasen der Arbeitslasten identifizieren und die Muster zur Vorhersage der zukünftigen Ressourcennutzung der Arbeitslasten verwenden.
  • Um die Rechenlast auf dem Orchestrator-Server 1520 und die Datenübermittlungslast auf dem Netzwerk zu reduzieren, kann der Orchestrator-Server 1520 bei einigen Ausführungsbeispielen Selbsttestinformationen an die Schlitten 400 senden, um es jedem Schlitten 400 zu ermöglichen, lokal (z.B. auf dem Schlitten 400) zu bestimmen, ob die Telemetriedaten, die durch den Schlitten 400 erzeugt wurden, eine oder mehrere Bedingungen (z.B. eine verfügbare Kapazität, die eine vorbestimmte Schwelle erfüllt, eine Temperatur, die eine vorbestimmte Schwelle erfüllt, etc.) erfüllen. Jeder Schlitten 400 kann dann ein vereinfachtes Ergebnis (z.B. Ja oder Nein) an den Orchestrator-Server 1520 zurückmelden, was der Orchestrator-Server 1520 bei dem Bestimmen der Zuordnung von Resourcen zu gemanagten Knoten nutzen kann.
  • ÜBERWACHUNG VON SERVERLOSEN FUNKTIONEN
  • Edge Computing ist ein aufkommendes Paradigma, bei dem sich Computer, wie z. B. ein Rechenzentrum mit Rechenressourcen, physisch näher an Netzzugangspunkten befinden, die mit den Client-Vorrichtungen kommunizieren. Ein Edge-Computing-Rechenzentrum kann sich zum Beispiel physisch in der Nähe oder im selben Raum oder Gebäude befinden wie eine Basisstation oder Netzwerkverbindungen, die mit Client-Vorrichtungen kommunizieren. Die Kommunikationsbasisstation oder Netzwerkverbindungen können Anfragen zur Datenverarbeitung oder Datenübertragung an das Edge-Computing-System weiterleiten. Edge Computing ist ein aufkommendes Paradigma, bei dem der Bedarf an Antworten mit extrem niedriger Latenz von Edge-Diensten besteht.
  • Eine serverlose Anwendung oder Funktion (z. B. Function as a Service (FaaS)) kann verfügbare Rechenressourcen in einem Rechenzentrum, einer Edge-Computing-Vorrichtung oder einer Fog-Netzwerkvorrichtung nutzen. Bei einer serverlosen Anwendung beispielsweise verwaltet ein Cloud-Dienstanbieter dynamisch die Zuweisung und Bereitstellung von Servern, und eine serverlose Anwendung wird in zustandslosen Rechencontainern ausgeführt, die ereignisgesteuert sind und für einen einzigen Aufruf ausreichen. Eine serverlose Anwendung kann eine ereignisgesteuerte, Cloud-basierte Anwendung sein, bei der die Anwendungsentwicklung auf einer Kombination aus Diensten von Drittanbietern, client-seitiger Logik und Cloud-gehosteten Remote Procedure Calls beruht. Bei serverlosen Anwendungen kann es sich um Pay-per-Use-Computing oder Bare-Code handeln, bei denen die Nutzer auf der Grundlage der Zeit und der für die Ausführung der serverlosen Anwendung zugewiesenen Rechenressourcen (z. B. CPU, Netzwerk oder Speicher) abgerechnet werden, ohne dass damit Gebühren für die Leerlaufzeit der Rechenressourcen verbunden sind. In einigen Beispielen kann eine serverlose Anwendung oder Funktion von einer Netzwerkinfrastruktur-Vorrichtung (z. B. Weiterleitungselement, Router, Schalter, Netzwerkschnittstellen-Steuerung) oder einem Beschleuniger ausgeführt werden, zusätzlich oder alternativ zur Verwendung eines Servers oder einer Allzweck-Rechenplattform.
  • 16 zeigt ein Beispiel für mehrere serverlose Funktionen, die auf dem System 1600 ausgeführt werden, um verschiedene Videoanalysefunktionen (z. B. Gesichtserkennung, Objekterkennung usw.) mithilfe eines maschinellen Lernmodells durchzuführen. Die Performance von serverlosen Funktionen in der Edge-Infrastruktur kann eine effiziente Ausführung und eine niedrige Latenz-Performance bieten. In der Vergangenheit wurde die Performanceanalyse durch Abtasten von CPU-Performancezählern durchgeführt, um das Verhalten ihrer Anwendungen zu verstehen. Mit der Einführung von FaaS und der Verarbeitung von kurzlebigen serverlosen Funktionen beispielsweise erfolgt die typische Abtastung alle 5 Millisekunden und erfasst über 100 Zähler. Wenn die Funktion jedoch in weniger als 5 Millisekunden ausgeführt wird, gibt es nur sehr wenige Daten, die abgerufen und direkt einer kurzlebigen Anwendung oder einem Funktionsaufruf zugeordnet werden können. Eine kurzlebige Rechenanwendung oder -funktion kann beispielsweise zwischen 5 Millisekunden und mehreren Sekunden (z. B. 5 Sekunden), aber auch länger oder kürzer ausgeführt werden. System 1600 kann Tausende von serverlosen Funktionen gleichzeitig ausführen und um CPU-Zeit konkurrieren. Innerhalb eines 5ms-Abtastintervalls kann die Performancezählererfassung beispielsweise Ereigniszählungen für 1/10 einer Ausführung einer FaaS, 1/5 der Ausführung einer anderen FaaS usw. enthalten. Einige serverlose Funktionen (z. B. FaaS) werden so schnell ausgeführt, dass eine Abtastwertzählung für die Funktionen gering ist. Außerdem können sich die Performancezähler auf irgendeine beliebige Funktion beziehen, die auf dem Kern läuft.
  • Bei schnelleren Abtastraten kann die Ausführung von Anwendungen gestört werden. Infolgedessen ist es schwierig, die Performance einer bestimmten FaaS zuzuordnen, insbesondere einer kurzlebigen FaaS.
  • 17 zeigt ein Beispiel für die Latenz von FaaS für ein Videoanalyseszenario. Jede Graustufenfarbe steht für die Latenz einer bestimmten FaaS. Die Latenzzeit kann angeben, wie lange eine FaaS ausgeführt wird. In einigen Fällen beträgt die Ausführungszeit einer Arbeitslast auf verschiedenen Architekturen weniger als eine Millisekunde. Der Durchsatz gibt an, wie viel Arbeit bei der Ausführung einer FaaS geleistet wird. Einige FaaS werden für kurze Zeiträume betrieben und leisten während dieser kurzen Dauer relativ gesehen mehr Arbeit, während andere FaaS für längere Dauer betrieben werden und während dieser Zeit Arbeit leisten.
  • Jeder der Punkte zeigt die durchschnittliche Latenzzeit für ein bestimmtes Experiment, bei dem ein bestimmter FaaS-Typ mehrfach von einem oder mehreren Klienten genutzt wurde. Der Gesamtdurchsatz der Systemplattform für diese FaaS wird angezeigt. Wie zu beobachten ist, gibt es für eine bestimmte FaaS eine Vielzahl von Latenzen, je nachdem, welche Hardware verwendet wird und unter welchen Umständen die FaaS aufgerufen werden. Der wichtige dargestellte Aspekt ist, dass viele FaaS bei einer hohen Durchsatz-Arbeitslast weniger als eine Millisekunde lang laufen können. So kann eine FaaS beispielsweise in einstelligen Mikrosekunden einen Datenbankeintrag aktualisieren.
  • Tools wie perf oder Linux perf-stat sind bei herkömmlicher Software, die in der Regel eine lange Lebensdauer hat, effektiv, aber nicht bei kurzlebigeren FaaS. Das Abtasten ist noch kniffliger, wenn ein System Tausende von Funktionen ausführt und die Zähler mit der spezifischen Funktion, die ausgeführt wurde, wieder zurück in Beziehung setzt. Die Überwachung der Systemperformance kann bei kurzlebigen zustandslosen FaaS herausfordernd sein.
  • Mit einer wachsenden Zahl von Anbietern von Plattformen mit FaaS-Fähigkeiten wird es einen Bedarf an mehr Debug-Fähigkeit geben. Die Anbieter von Plattformen mit FaaS-Fähigkeiten können eine Performanceüberwachung auf Funktionsebene anbieten. Verschiedene Ausführungsformen können die Ressourcennutzung für mindestens eine Funktion verfolgen, die möglicherweise mindestens eine kurzlebige Funktion umfasst. In einigen Beispielen kann ein Anbieter von Cloud-Diensten einen Prozess ausführen, der die Versendung und Ausführung von einem oder mehreren verursacht aus: mindestens zwei verschiedenen Funktionen auf beliebigen Rechenressourcen, die Ausführung einer Funktion zur Ausführung auf mehreren verschiedenen Rechenressourcen zu denselben, sich überschneidenden oder unterschiedlichen Zeiten oder die Ausführung einer Funktion auf derselben Rechenressource zu unterschiedlichen Zeiten.
  • 18 zeigt einen Überblick eines Systems gemäß einigen Ausführungsbeispielen. Eine oder mehrere serverlose Funktionen oder FaaS können zur Ausführung auf einer Plattform bereitgestellt werden, um eine oder mehrere Rechenressourcen (z. B. Netzwerke, Speicher, Beschleuniger usw.) zu nutzen. Vor der Ausführung einer serverlosen Funktion oder FaaS zur Nutzung einer Rechenressource registriert ein Software-Stapel (z. B. eine Anwendung, ein Betriebssystem, eine virtualisierte Ausführungsumgebung, ein Hypervisor oder eine Software zur Performanceüberwachung) die Funktion bei der Schnittstellenverwaltung 1804 zur Nachverfolgung durch einen Identifizierer (z. B. einen numerischen Wert). Der Softwarestapel kann die Funktion oder Funktionen durch eine oder mehrere Befehlsadressen, Bitstrom-IDs usw. registrieren.
  • Die FaaS-Überwachungseinheit (FMLT; FaaS Monitoring Unit) 1810 kann die Aktivität während des Betriebs einer bestimmten FaaS verfolgen und entsprechende Performancedaten für die genutzten Ressourcen (z. B. Kerne, Speicher, Cache-Hierarchien, diskrete Vorrichtungen, I/O usw.) sammeln. Wenn die Ausführung einer Funktion beginnt, die durch die Registrierungs-Metadaten identifiziert wurde, kann die FMU 1810 Telemetrie- und Performanceüberwachungsinformationen für diese Funktion sammeln, die vom Performanceüberwachungssystem 1806 während der Ausführung der Funktion erzeugt wurden. Die FMU 1810 kann Performancezähler von verschiedenen Vorrichtungen (z. B. CPUs, GPUs, Speicher, Beschleuniger, Schnittstellen) extrahieren. Wenn die Funktion vorzeitig beendet wird (z.B. wenn die Ausführung pausiert oder angehalten wird), kann die FMU 1810 keine Telemetrie- und Performanceüberwachungsdaten für diese Funktion sammeln. Sobald die Funktion beendet ist, z. B. wenn eine letzte Befehlsadresse für die Funktion ausgeführt wurde, ein Ende des Bitstroms erreicht wurde, die Funktion aufgrund eines Fehlers oder eines administrativen Eingriffs beendet wurde oder eine andere festgelegte Markierung erreicht wurde, kann die FMU 1810 die Telemetrie- und Performanceüberwachungsinformationen für diese Funktion in der Telemetriespeicherung 1812 speichern. Auf die Performanceüberwachungsinformationen und den Telemetriespeicherung 1812 kann ein FaaS-Performanceanforderer oder - kunde oder ein Performanceverfolger anschließend zugreifen, sofern er über die entsprechenden Berechtigungen verfügt.
  • Ein Performanceüberwachungssystem (PMON; performance monitoring) 1806 kann Performancezähler und Telemetrieinformationen sammeln, während eine Funktion von Interesse ausgeführt wird. In einigen Beispielen kann die vom Prozessor ausgeführte Software die Performance überwachen. Zum Beispiel kann ein collectd-Daemon ausgeführt werden, um Telemetrieinformationen zu sammeln.
  • Für eine Funktion können die für die Funktionsausführung auf der Plattform gesammelten Telemetriedaten als Durchschnitt der Funktionsausführung oder als Abtastwerte der Funktion in einem Intervall gespeichert werden, das von der Länge der Funktionsausfiihrung abhängen kann (z. B. Abtastwert alle 200 Mikrosekunden oder eine andere Zeitspanne, wenn die Funktion voraussichtlich mehr als 200 Mikrosekunden pro Ausführung für mehrere Ausführungen ausführen wird). In einigen Beispielen kann Telemetrie für die Ausführung der Funktion mit dem gleichen Identifizierer (z. B. eindeutiger Benutzeridentifizierer (UUID; unique user identifier)) auf einer oder mehreren anderen Plattformen gesammelt werden. Daher kann die FMU 1810 Telemetrie und Performanceüberwachung von der Plattform 1800 und verschiedenen Vorrichtungen für einen bestimmten UUID sammeln und die Telemetrie und Performanceüberwachung in die Funktionstelemetriespeicherung 1812 speichern, nachdem die Funktion beendet oder aufgrund eines Fehlers abgebrochen wurde.
  • Vorbehaltlich einer Genehmigung können verschiedene Einheiten Telemetrie- und Performanceüberwachungsdaten für einen UUID oder einen anderen Identifizierer einer Funktion aus der Funktionstelemetriespeicherung 1812 abrufen. Die Telemetrie- und Performanceüberwachungsdaten können in einer Grafik oder einem Diagramm dargestellt werden, wobei die zugrunde liegenden Daten angezeigt werden können. Die Daten können Telemetrie- und Performanceüberwachungsdaten von einer oder mehreren Ausführungen einer Funktion oder einer vorzeitigen Beendigung der Funktion widerspiegeln. Beispielsweise kann ein Entwickler die Daten nutzen, um die Ressourcennutzung einer FaaS zu bewerten und festzustellen, ob die FaaS geändert werden muss, um die Ressourcennutzung zu verringern oder den Durchsatz zu verbessern. Ein Cloud-Service-Provider (CSP; Cloud-Dienstanbieter) kann durch die Auswertung von Telemetrie- oder Performancedaten beurteilen, ob ein Service Level Agreement (SLA) für eine FaaS erfüllt oder verletzt wird, und der CSP kann einer FaaS, die ein SLA nicht erfüllt, mehr Ressourcen zuweisen. Wenn ein SLA erreicht oder überschritten wird, kann der CSP die Ressourcenzuweisung an die FaaS reduzieren.
  • 19 zeigt eine Architektur, die eine feinkörnige zustandslose Funktionstelemetriearchitektur implementieren kann. Jede Art von serverlosen Funktionen, die der Plattform eines CSP zur Verfügung gestellt wird, kann zur Ausführung mit einer oder mehreren Rechenressourcen hochgeladen oder abgerufen werden. Der CSP kann entscheiden, wie die Funktion ausgeführt werden soll (z. B. Skalierung, Lastausgleich, Verwendung von virtualisierten Ausführungsumgebungen, Verwendung bestimmter Bibliotheken). Eine Funktion kann zum Beispiel in JavaScript, Java, .NET, Python, OpenGL, OpenCL, DirectX, Python, DPC++, TensorFlow, Metal, CUDA®, TensorFlow, scikit-learn, Keras oder PyTorch oder einer anderen Sprache geschrieben sein. Eine Funktion kann in einer Skriptsprache oder einem kompilierten Code, einem binären, ausführbaren Codesegment geschrieben werden. Eine serverlose Funktion kann ein Datenbankprogramm, eine Spracherkennungsinferenz, eine Bilderkennung, ein Augmented-Reality-Overlay und so weiter sein.
  • Ein Pod-Manager 1902 (oder eine andere Hardware- und/oder Software-Einheit) kann eine oder mehrere der Ressourcen 1908 auswählen, um eine Funktion auszuführen. Die Ressourcen 1908 können Hardware- und Softwareressourcen umfassen, die für die Ausführung ausgewählter Funktionen oder FaaS zur Verfügung stehen. Die Ressourcen 1908 können eines oder mehrere bieten aus: Prozessoren, Beschleuniger, flüchtige oder nichtflüchtige Speicher, ein neuronales Netz, Speicherpools (memory pool) oder Speicherungspools (storage pool). Prozessoren können einen Einzel- oder Multi-Kern-Prozessor umfassen, eine Grafikverarbeitungseinheit, eine logische Ausführungseinheit mit Ein- oder Multi-Ebenen-Cache, funktionale Einheiten verwendbar zur unabhängigen Ausführung von Programmen oder Threads, anwendungsspezifische integrierte Schaltungen (ASICs), Neuronale-Netzwerk-Prozessoren (NNPs; neural network processors), programmierbare Steuerlogik und programmierbare Verarbeitungselemente wie feldprogrammierbare Gate-Arrays (FPGAs; field programmable gate arrays) und programmierbare Steuerlogik (PLCs; programmable control logic). Ein neuronales Netz kann als separates neuronales Netzgerät mit beliebigen Komponenten von Prozessoren ausgeführt werden. Mehrere neuronale Netzwerke, Prozessorkerne oder Grafikverarbeitungseinheiten können für die Verwendung durch Modelle der künstlichen Intelligenz (KI (artificial intelligence (AI)) oder des maschinellen Lernens (ML; machine learning) zur Verfügung gestellt werden. Beispielsweise kann das KI-Modell irgendeines oder eine Kombination verwenden oder umfassen von: einem Bestärkendes-Lernen-Schema, einem Q-Lernen-Schema, einem Deep-Q-Lernen oder einem Asynchronous Advantage Actor-Critic (A3C), einem kombinatorischen neuronalen Netzwerk, einem rekurrenten neuronalen Netzwerk oder einem anderen KI- oder ML-Modell. Mehrere neuronale Netzwerke, Prozessorkerne oder Grafikverarbeitungseinheiten können für die Verwendung durch AI- oder ML-Modelle zur Verfügung gestellt werden.
  • Ein Kern kann Zugang zu seinem eigenen Cache und Nur-Lese-Speicher (ROM; read only memory) haben, oder mehrere Kerne können einen Cache oder ROM gemeinschaftlich verwenden. Kerne können homogene und/oder heterogene Vorrichtungen sein. Irgendeine Art von Interprozessor-Kommunikationstechniken kann verwendet werden, wie z. B., aber nicht beschränkt auf, Nachrichtenübermittlung, Interprozessor-Interrupts (IPI), Interprozessor-Kommunikation usw. Kerne können auf irgendeine Art und Weise verbunden sein, wie beispielsweise, aber nicht beschränkt auf, Bus, Ring oder Netz. Prozessoren können einen oder mehrere Anweisungssätze unterstützen (z.B. den x86-Anweisungssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); den MIPS-Anweisungssatz von MIPS Technologies of Sunnyvale, CA; den ARM-Anweisungssatz (mit optionalen zusätzlichen Erweiterungen wie NEON) von ARM Holdings of Sunnyvale, CA), umfassend die hierin beschriebenen Anweisung(en).
  • Jeder Prozessor kann eine virtualisierte Ausführungsumgebung ausführen. Eine virtualisierte Ausführungsumgebung kann mindestens eine virtuelle Maschine, Prozesscontainer, Maschinencontainer oder Anwendungsprozesse umfassen. Eine virtuelle Maschine (VM; virtual machine) kann Software sein, die ein Betriebssystem und eine oder mehrere Anwendungen ausführt. Eine VM kann durch Spezifikation, Konfigurationsdateien, eine virtuelle Plattendatei, eine nichtflüchtige Direktzugriffsspeicher- (NVRAM; non-volatile random access memory) Einstellungsdatei und die Protokolldatei definiert werden und wird durch die physischen Ressourcen einer Host-Rechenplattform gesichert. Eine VM kann ein OS oder eine Anwendungsumgebung sein, die auf Software installiert ist, die dedizierte Hardware imitiert. Der Endnutzer macht auf einer virtuellen Maschine die gleiche Erfahrung wie er auf dedizierter Hardware machen würde. Spezialisierte Software, genannt Hypervisor, emuliert die CPU-, Speicher-, Festplatten-, Netzwerk- und andere Hardwareressourcen des PC-Clients oder Servers vollständig und ermöglicht es virtuellen Maschinen, die Ressourcen gemeinsam zu verwenden. Der Hypervisor kann mehrere virtuelle Hardwareplattformen emulieren, die voneinander isoliert sind, was es virtuellen Maschinen erlaubt, Linux® und Windows® -Server-Betriebssysteme auf dem gleichen zugrunde liegenden physischen Host auszuführen.
  • Ein Container kann ein Software-Package von Anwendungen, Konfigurationen und Abhängigkeiten sein, sodass die Anwendungen zuverlässig auf einer Rechenumgebung im Hinblick auf eine andere laufen. Container können ein Betriebssystem, das auf der Serverplattform installiert ist, gemeinschaftlich verwenden und als isolierte Prozesse laufen. Ein Container kann ein Software-Package sein, das alles umfasst, was die Software zur Ausführung benötigt, wie beispielsweise Systemwerkzeuge, Bibliotheken und Einstellungen. Container werden nicht wie traditionelle Softwareprogramme installiert, was es ihnen erlaubt, von der anderen Software und dem Betriebssystem selbst isoliert zu sein. Die Isolierung kann den Zugriff auf den Speicher durch einen bestimmten Container, aber nicht durch einen anderen Container umfassen. Die isolierte Natur der Container stellt mehrere Vorteile bereit. Erstens läuft die Software in einem Container in unterschiedlichen Umgebungen gleich. Beispielsweise kann ein Container, der PHP und MySQL umfasst, sowohl auf einem Linux-Computer als auch auf einer Windows-Maschine identisch ausgeführt werden. Zweitens stellen Container zusätzliche Sicherheit bereit, da die Software das Host-Betriebssystem nicht beeinträchtigt. Während eine installierte Anwendung Systemeinstellungen ändern und Ressourcen, wie beispielsweise die Windows-Registrierung, modifizieren kann, kann ein Container nur Einstellungen innerhalb des Containers ändern.
  • Das Schnittstellenmanagement 1904 kann die Registrierung einer Funktion empfangen, die eine Vorrichtung unter den Ressourcen 1908 benutzt, die von der FMU 1910 verfolgt werden soll. FMU 1910 bietet eine Schnittstellenverwaltung 1904, die es der Entität 1970 (z. B. einem Tracing-Tool oder einem Collector-Tool wie Intel® VTune™ oder collectd) ermöglicht, die Verfolgung einer bestimmten Funktion zu spezifizieren, durch Spezifizierenvon einem oder mehreren aus: einer UUID, einem Funktions-Identifizierer (ID), Ressourcen, die als Teil der FaaS-Ausführung verfolgt werden sollen, eine Liste von Vorrichtungen, die als Teil der FaaS-Ausführung verfolgt werden sollen, die Art der Überwachung der FaaS-Ausführung oder Metadaten zur Identifizierung, wann die Funktion ausgeführt wird. Ein UUID kann einen Anwender oder eine Funktion (z. B. FaaS) identifizieren und kann eine Kombination sein aus einem oder mehreren aus: einem Identifizierer für einen Anwender, einer Prozessadressraum-ID (PASID) für die Anwendung, die eine Funktion aufruft oder deren Ausführung anfordert, oder einem Identifizierer für eine Funktion. Ein Anwender kann einen Benutzer oder Mandanten umfassen, der eine Funktion startet. Ein Prozess kann z.B. auf einen Anwender abgebildet werden und durch eine PASID identifiziert werden. In einigen Fällen kann ein Software-Stapel (z. B. ein Tracing-Tool oder ein Collector-Tool) überwachen, wie viele Ressourcen ein bestimmter Anwender/Nutzer verwendet.
  • In einigen Fällen kann ein eindeutiger UUID pro Funktionsaufruf bereitgestellt werden. Eine Funktion kann verschiedene Daten für eine Arbeitslast verarbeiten, so dass verschiedene eindeutige IDs pro Aufruf eine Unterscheidung zwischen verschiedenen Arbeitslasten, die von einer Funktion ausgeführt werden, ermöglichen können. In einigen Beispielen wird für jeden Funktionsaufruf ein eindeutiger Funktions-ID angegeben, aber der UUID wird nicht geändert, wenn der Anwender derselbe ist.
  • In einigen Beispielen kann eine Liste von Vorrichtungen, die im Rahmen der Ausführung einer Funktion verfolgt werden sollen, pro Vorrichtung identifiziert werden durch: Vorrichtungs-ID und Liste der zu verfolgenden Ressourcen. Für eine Vorrichtung, die eine Funktion ausführt, kann ein Vorrichtungs-ID angegeben werden (z. B. GPU0, GPU1, CPU0, CPU1, accelerator0, NIC1). Es kann eine Liste von Ressourcen angegeben werden, die von der zu verfolgenden Funktion verwendet werden (z. B. Core 1, Lower Level Cache (LLC), usw.). Ein Vorrichtungs-ID kann eine Vorrichtung eindeutig identifizieren und vom Hersteller einer Vorrichtung bereitgestellt werden (z. B. die MAC-Adresse einer Netzwerkschnittstelle). Es können verschiedene Aspekte der Ressourcennutzung angegeben werden, wie z. B. eine oder mehrere aus: zu verfolgende Metriken oder Frequenz, mit der die Metrik abgetastet werden soll (z. B. 100 Mikrosekunden oder eine andere Frequenz). Zu den zu verfolgenden Metriken können gehören: Speicherbandbreitennutzung, Speichergrößennutzung, Speicherzuweisung, Kerntaktfrequenzgeschwindigkeit, Kerntaktzyklusnutzung, genutzte Netzwerkbandbreite, Kern-Leerlauf-Messung, Kernausfiihrung von Nutzer-Raum-Prozessen, Kern, der darauf wartet, dass eine Eingabe/Ausgabe-Operation abgeschlossen wird, Cache-Zuweisung/Nutzung, Netzwerkschnittstellen-Bandbreitennutzung (Senden oder Empfangen), CPU-Zyklusnutzung, GPU-Zyklusnutzung, Datenbanktransaktionen/Sekunde, Collectd-Telemetrie, Performance-Monitoring-Unit-(PMU)-Zähler, Performance-Monitoring-Zähler (PMON), Performance-Counter-Monitor (siehe z.g., Willhalm, „Intel® Performance Counter Monitor - A Better Way to Measure CPU Utilization“ (2017)), und dergleichen. Die Frequenz, mit der eine Metrik erfasst werden soll, kann sich auf die Frequenz der Aufzeichnung einer Metrik beziehen.
  • Die Art der Überwachung, die auf die Funktion angewendet werden soll, kann angeben, wie die Performancemetriken der von der Ausführung einer Funktion verwendeten Ressourcen gemeldet werden sollen. In einigen Beispielen kann nach Abschluss oder Beendigung einer Funktion ein Durchschnittswert für Metriken pro Ressource ermittelt, gespeichert und für die Berichterstattung zur Verfügung gestellt werden. In einigen Beispielen wird eine Abtastung von Metriken durchgeführt, und das Ergebnis kann eine Liste von Zeitintervallen und den entsprechenden Durchschnittswerten während der Zeitintervalle sein. Andere statistische Schätzer wie Maximal-, Minimal- und Medianwerte von aufgezeichneten Performance-Metriken und Telemetrie können ermittelt, in der Speicherung 1912 abgelegt und für die Berichterstattung zur Verfügung gestellt werden.
  • Metadaten, die angeben, wann die Funktion abgeschlossen ist, können verwendet werden, um anzugeben, wann die Performance-Metriken einer Funktion gemessen werden sollen. So kann beispielsweise ein bestimmtes Ereignis oder ein anderer Indikator angegeben werden, der anzeigt, wann eine Funktion abgeschlossen ist.
  • Basierend auf der Konfiguration verwendend das Schnittstellenmanagement 1904 kann die FMU 1910 Metriken und Performancedaten für identifizierte Funktionen verfolgen, die unter Verwendung der Ressourcen 1908 ausgeführt werden. Wenn die Vorrichtung zwischen den Ressourcen 1908 nicht in der Lage ist, Metriken oder Telemetrie für eine ausgeführte Funktion zu liefern, kann die FMU 1910 die Metriken und Telemetrie selbst aus der Vorrichtung zwischen den Ressourcen 1908 extrahieren, während die Funktion mit einer bestimmten Frequenz ausgeführt wird.
  • Die FMU 1910 kann Telemetrie für eine bestimmte Funktion sammeln, indem sie Telemetrie von der Plattform 1900 sowie von einer oder mehreren der FMU 1950-1 bis 1950-n, die von anderen Plattformen verwendet werden, über die Verbindung 1960 sammelt und die Telemetrie in die Telemetriespeicherung 1912 speichert. Beispielsweise kann die FMU 1910 Zähler sammeln und zusammenfassen, die für einen UUID von einer oder mehreren FMU 1950-1 bis 1950-n gemessen wurden. So kann z. B. derselbe eindeutige ID für eine Funktion auch über verschiedene Maschinen oder Plattformen hinweg verwendet werden, um Telemetrie für verschiedene Ausführungen derselben Funktion zusammenzufassen. Die Unterscheidung zwischen den Arbeitslasten und den zur Ausführung einer Funktion verwendeten Ressourcen kann jedoch anhand der Identifizierer der verwendeten Ressourcen, der Identifizierer eines Anwenders oder dem Identifizierer der Anwendung, die die Funktion aufruft, erfolgen. Die FMU 1910 kann die Telemetriespeicherung 1912 nutzen, um während der Laufzeit der Funktion temporäre Daten zu speichern, die zur Berechnung der endgültigen Telemetriedaten verwendet werden. Die FMU 1910 kann die temporären Daten verwenden, nachdem sie festgestellt hat, dass die Funktion beendet ist, um die Telemetrie für die Funktion zu berechnen. Die Telemetriespeicherung 1912 kann sowohl temporäre als auch endgültige Telemetriedaten für eine überwachte Vorrichtung speichern. Eine Tabelle aus der Telemetriespeicherung 1912 kann durch einen UUID oder einen Funktions-ID indiziert werden.
  • Die FMU 1910 kann je nach dem vom Dienst bereitgestellten Zugriffsmodus eine Entität 1970 benachrichtigen, nachdem die Funktion ihre Ausführung beendet hat und die Telemetrie für die Entität 1970 verfügbar ist. Die Entität 1970 kann beispielsweise eine oder mehrere sein aus: einer Anwendung, einem Hypervisor, einem Betriebssystem, einer virtualisierten Ausführungsumgebung oder einem Performance-Überwacher. Dementsprechend kann Telemetrie für mindestens zwei verschiedene Funktionen oder eine Funktion, die auf einer beliebigen Plattform oder zu verschiedenen Zeiten ausgeführt wird, gemessen und zur Überprüfung oder Einsichtnahme zur Verfügung gestellt werden.
  • Die Verbindung 1960 kann die Kommunikation zwischen der Plattform 1900 und den FMU 1950-1, 1950-2 und 1950-n ermöglichen und kann mit einem oder mehreren kompatibel oder konform sein aus: Ethernet (IEEE 802.3), entfernter Direktspeicherzugriff (RDMA; remote direct memory access), InfiniBand, Internet Wide Area RDMA Protocol (iWARP), quick UDP Internet Connections (QUIC), RDMA over Converged Ethernet (RoCE), Peripheral Component Interconnect express (PCIe), Intel QuickPath Interconnect (QPI), Intel Ultra Path Interconnect (UPI), Intel On-Chip System Fabric (IOSF), Omnipath, Compute Express Link (CXL), HyperTransport, highspeed fabric, NVLink, Advanced Microcontroller Bus Architecture (AMBA) -Verbindung, Open-CAPI, Gen-Z, Cache Coherent Interconnect for Accelerators (CCIX), 3GPP Long Term Evolution (LTE) (4G), 3GPP 5G, und Variationen derselben. Daten können unter Verwendung eines Protokolls wie beispielsweise NVMe over Fabrics (NVMe-oF) oder NVMe auf virtualisierte Speicherungsknoten kopiert oder gespeichert werden. Zum Beispiel kann jedes Gerät, das über einen Schalter mit der Plattform 1900 verbunden ist, Performancemessungen und Metriken an die Plattform 1900 liefern.
  • Die Schnittstellenverwaltung 1904 ermöglicht es der Entität 1970, Telemetrie für eine bestimmte Funktionsausführung zu sammeln. Die Schnittstellenverwaltung 1904 kann verwendet werden, um eines oder mehrere zu spezifizieren aus: ID für die Funktion oder den Modus der Datensammlung, z. B. Pull-Modus (z. B. Entität 1970 fordert Datensammlung an) oder Push-Modus (z. B. FMU 1910 ruft Entität 1970 an, um anzuzeigen, dass Telemetriedaten für einen bestimmten UUID verfügbar sind).
  • FMU 1910 kann die Daten pro Anwender durch Verschlüsselung in der Speicherung 1912 schützen, um die Privatsphäre der Daten zu wahren. Die FMU 1910 kann beschließen, Telemetrie aus der Speicherung zu entfernen, sobald sie veraltet sind, um sie vor unberechtigtem Zugriff zu schützen.
  • Ein Entwickler oder Kunde kann die Performance einer Anwendung anhand von Performanceüberwachungsinformationen in der Telemetriespeicherung 1912 profilieren. Beispielsweise kann ein CPU-Cache-Fehl-Zähler anzeigen, wenn die Daten nicht im Cache gefunden werden. Ein CPU-Cache-Fehl-Zähler kann die Performance der Anwendung anzeigen. Da Zähler für kurzlebige Funktionen periodisch gemessen werden, können mehrere Performancemessungen für verschiedene Ausführungen der kurzlebigen Funktion in der Speicherung 1912 zusammengefasst werden. Wenn eine Funktion Ressourcen verwendet, werden die pro Ausführung einer Funktion verwendeten Ressourcen angegeben und identifiziert. Trotz der gemeinsamen Nutzung von Ressourcen mit anderen Funktionen kann ein Entwickler oder Kunde durch die Berücksichtigung mehrerer Aufrufe einer Funktion für verschiedene Arbeitslasten und auf verschiedenen Ressourcen die Performanceauswirkungen anderer Funktionen und Performancemessungen unter Verwendung bestimmter Ressourcen für eine oder mehrere bestimmte kurzlebige Funktion(en) oder nicht kurzlebige Funktionen von Interesse herausfiltern. So können beispielsweise Performancemessungen von zwei oder mehreren Funktionen oder Anwendungen oder Ausführungen einer Funktion dargestellt werden. Die Darstellung kann in einer Datei, einer Grafik oder einem Diagramm auf einer Webseite oder einer mobilen Anwendung, einem Augmented-Reality-Overlay oder auf andere Weise erfolgen.
  • 20 zeigt einen Prozess. Bei 2002 kann eine Funktion bei einem Funktionsüberwachungssystem registriert werden. Beispielsweise können für eine bestimmte Anfrage eines oder mehrere bereitgestellt werden aus: einem Identifizierer für die Funktionsausfiihrung (z. B. UUID und/oder Funktions-ID), Ressourcen, die als Teil der Funktionsausführung verfolgt werden sollen, einer Liste von Vorrichtungen, die als Teil der Funktionsausführung verfolgt werden sollen, die Art der Überwachung der Funktionsausführung oder Metadaten, um festzustellen, wann die Funktion beendet ist. Ein Identifizierer kann verwendet werden, um eine beliebige Ausführungsinstanz einer Funktion zu kennzeichnen, im Gegensatz zu demselben Identifizierer für alle Ausführungen der Funktion. Da verschiedene Ausführungen derselben Funktion mit unterschiedlichen Daten zu einer unterschiedlichen Performance führen können, kann eine Ausführung der Funktion unter Verwendung eines anderen Identifizierers verfolgt werden.
  • Bei 2004 geht eine Anfrage ein, um die Ausführung einer Funktion unter Verwendung bestimmter Ressourcen zu veranlassen. Eine Funktion kann in einer Skriptsprache oder einem kompilierten Code, einem binären, ausführbaren Codesegment geschrieben werden. Die verfügbaren Ressourcen können eines oder mehrere umfassen aus: Prozessoren, Beschleuniger, flüchtiger oder nichtflüchtiger Speicher, ein neuronales Netz, Speicherpools oder Speicherungspools.
  • Bei 2006 erfolgt die Telemetrie- und Performanceüberwachung für eine Funktion, während sie auf einer Plattform ausgeführt wird. Die Aufzeichnung kann nach Beendigung der Funktion oder in bestimmten Abständen erfolgen. Bei 2008 werden Telemetrie- und Performanceüberwachungsinformationen über dieselbe Funktion, die auf einer oder mehreren anderen Plattformen ausgeführt wird, bereitgestellt. Eine Telemetrie-Speicherungsvorrichtung kann die Telemetrie- und Performanceüberwachungsinformationen derselben Funktion speichern, die auf einer oder anderen Plattformen ausgeführt wird.
  • Bei 2010 werden die Telemetrie- und Performanceüberwachungsinformationen einer Funktion für den Zugriff ausgewählter Entitäten zur Verfügung gestellt. Beispielsweise kann ein Funktionsentwickler auf die Telemetrie- und Performanceüberwachungsinformationen zugreifen, um festzustellen, wie Anweisungen der Funktion geändert werden können, um die Ressourcennutzung zu verbessern oder Bugs oder Fehler in der Funktion zu erkennen. Indem Telemetrie- und Performanceüberwachungsinformationen von mehreren Ausführungen einer Funktion auf verschiedenen Plattformen und unterschiedlichen Arbeitslasten für den Zugriff mit Hilfe spezifischer Identifizierer zur Verfügung stehen, kann ein Entwickler die Performancemerkmale kurzlebiger Funktionen ermitteln. In einigen Beispielen kann einem Kunden über eine Webseite oder eine mobile Anwendung ein Bericht oder ein Diagramm präsentiert werden, das die Ressourcennutzung oder Performance von mindestens einer Funktion, mindestens zwei verschiedenen Funktionen, mindestens zwei verschiedenen Ausführungen derselben Funktion usw. anzeigt.
  • 21 zeigt ein System. Das System kann die hier beschriebenen Ausführungsbeispiele zumindest dazu verwenden, die Performance kurzlebiger Funktionen zu überwachen. Ein System 2100 umfasst einen Prozessor 2110, der eine Verarbeitung, ein Operationsmanagement und eine Ausführung von Anweisungen für das System 2100 bereitstellt. Der Prozessor 2110 kann irgendeine Art von Mikroprozessor, zentraler Verarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU), Verarbeitungskern oder andere Verarbeitungshardware umfassen, um die Verarbeitung für das System 2100 oder eine Kombination von Prozessoren bereitzustellen. Der Prozessor 2110 steuert den Gesamtbetrieb des Systems 2100 und kann ein oder mehrere programmierbare Allzweck- oder Spezialzweck-Mikroprozessoren, digitale Signalprozessoren (DSPs; digital signal processors), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltungen (ASICs; application specific integrated circuits), programmierbare Logikbauelemente (PLDs; programmable logic devices) oder dergleichen oder eine Kombination solcher Bauelemente sein oder umfassen.
  • Bei einem Beispiel umfasst das System 2100 eine Schnittstelle 2112, die mit dem Prozessor 2110 gekoppelt ist, was eine Höhere-Geschwindigkeit-Schnittstelle oder eine Hoher-Durchsatz-Schnittstelle für Systemkomponenten darstellen kann, die Höhere-Bandbreite-Verbindungen benötigt, wie beispielsweise ein Speicherteilsystem 2120 oder Grafikschnittstellen-Komponenten 2140 oder Beschleuniger 2142. Die Schnittstelle 2112 stellt eine Schnittstellenschaltung dar, die eine eigenständige Komponente oder auf einem Prozessor-Die integriert sein kann. Falls vorhanden, bildet die Grafikschnittstelle 2140 eine Schnittstelle mit Grafikkomponenten, um an einen Benutzer des Systems 2100 eine visuelle Anzeige bereitzustellen. Bei einem Beispiel kann die Grafikschnittstelle 2140 eine hochauflösende (HD; high definition) Anzeige treiben, die an einen Benutzer eine Ausgabe bereitstellt. Hochauflösend kann sich auf eine Anzeige beziehen, die eine Pixeldichte von ungefähr 100 PPI (pixels per inch; Pixel pro Zoll) oder größer aufweist, und kann Formate wie beispielsweise Full HD (z. B. 1080p), Retina-Displays, 4K (ultrahochauflösend oder UHD (ultrahigh definition)) oder andere umfassen. Bei einem Beispiel kann die Anzeige eine Touchscreen-Anzeige umfassen. Bei einem Beispiel erzeugt die Grafikschnittstelle 2140 eine Anzeige basierend auf Daten, die in dem Speicher 2130 gespeichert sind oder basierend auf Operationen, die der Prozessor 2110 ausführt oder beidem. Bei einem Beispiel erzeugt die Grafikschnittstelle 2140 eine Anzeige basierend auf Daten, die in dem Speicher 2130 gespeichert sind oder basierend auf Operationen, die der Prozessor 2110 ausführt oder beidem.
  • Die Beschleuniger 2142 können eine Konfigurierbare- oder Feste-Funktion-Offload-Engine sein, auf die ein Prozessor 2110 zugreifen kann oder die von einem selben 1010 verwendet werden kann. Beispielsweise kann ein Beschleuniger unter den Beschleunigern 2142 Kompressionsfähigkeit (DC), Kryptographiedienste wie beispielsweise Public-Key-Verschlüsselung (PKE; public key encryption), Chiffrieren, Hash-/Authentifizierung-Fähigkeiten, Entschlüsselung oder andere Fähigkeiten oder Dienste bereitstellen. Bei einigen Ausführungsbeispielen stellt ein Beschleuniger unter den Beschleunigern 2142 zusätzlich oder alternativ die hierin beschriebenen Feldauswahlsteuerungsfähigkeiten bereit. In einigen Fällen können die Beschleuniger 2142 in eine CPU-Buchse integriert sein (z.B. ein Verbinder zu einer Hauptplatine oder Schaltungsplatine, die eine CPU umfasst und eine elektrische Schnittstelle mit der CPU bereitstellt). Beispielsweise können die Beschleuniger 2142 einen Einzel- oder Multi-Kern-Prozessor, eine Grafikverarbeitungseinheit, eine logische Ausführungseinheit, Einzl- oder Multi-Level-Cache, funktionale Einheiten, verwendbar zur unabhängigen Ausführung von Programmen oder Threads, anwendungsspezifische integrierte Schaltungen (ASICs), Neuronales-Netz-Prozessoren (NNPs; neural network processors), programmierbare Steuerlogik und programmierbare Verarbeitungselemente wie beispielsweise feldprogrammierbare Gate-Arrays (FPGAs) umfassen. Die Beschleuniger 2142 können mehrere neuronale Netzwerke, CPUs, Prozessorkerne, Allzweck-Grafikverarbeitungseinheiten bereitstellen oder Grafikverarbeitungseinheiten können für die Verwendung durch Modelle der künstlichen Intelligenz (KI (artificial intelligence (AI)) oder des maschinellen Lernens (ML; machine learning) zur Verfügung gestellt werden. Beispielsweise kann das KI-Modell irgendeines oder eine Kombination verwenden oder umfassen von: einem Bestärkendes-Lernen-Schema, einem Q-Lernen-Schema, einem Deep-Q-Lernen oder einem Asynchronous Advantage Actor-Critic (A3C), einem kombinatorischen neuronalen Netzwerk, einem rekurrenten neuronalen Netzwerk oder einem anderen KI- oder ML-Modell. Mehrere neuronale Netzwerke, Prozessorkerne oder Grafikverarbeitungseinheiten können für die Verwendung durch AI- oder ML-Modelle zur Verfügung gestellt werden.
  • Ein Speicherteilsystem 2120 repräsentiert den Hauptspeicher des Systems 2100 und stellt Speicherung für einen Code, der von dem Prozessor 2110 ausgeführt werden soll, oder für Datenwerte, die bei der Ausführung einer Routine verwendet werden sollen, bereit. Das Speicherteilsystem 2120 kann eine oder mehrere Speichervorrichtungen 2130 umfassen, wie beispielsweise Nur-Lese-Speicher (ROM; read-only memory), Flash-Speicher, eine oder mehrere Varianten von Direktzugriffsspeicher (RAM; random access memory), wie beispielsweise DRAM, oder andere Speichervorrichtungen, oder eine Kombination solcher Vorrichtungen. Ein Speicher 2130 speichert und hostet unter anderem ein Betriebssystem (OS; operating system) 2132, um eine Softwareplattform für eine Ausführung von Anweisungen in dem System 2100 bereitzustellen. Zusätzlich können Anwendungen 2134 auf der Software-Plattform des OS 2132 von dem Speicher 2130 ausgeführt werden. Die Anwendungen 2134 und OS 2132 können innerhalb einer virtuellen Maschinenumgebung oder einer Containerumgebung mit individuellen zugewiesenen Speicherregionen ausgeführt werden. Die Anwendungen 2134 repräsentieren Programme, die ihre eigene operative Logik zur Ausführung einer oder mehrerer Funktionen umfassen. Prozesse 2136 repräsentieren Mittel oder Routinen, die an das OS 2132 oder eine oder mehrere Anwendungen 2134 Hilfsfunktionen bereitstellen, oder eine Kombination. Das OS 2132, die Anwendungen 2134 und die Prozesse 2136 stellen Software-Logik bereit, um Funktionen für das System 2100 bereitzustellen. Bei einem Beispiel umfasst das Speicherteilsystem 2120 eine Speichersteuerung 2122, die eine Speichersteuerung zum Erzeugen und Ausgeben von Befehlen an den Speicher 2130 ist. Es wird darauf hingewiesen, dass die Speichersteuerung 2122 ein physikalischer Teil des Prozessors 2110 oder ein physikalischer Teil der Schnittstelle 2112 sein könnte. Zum Beispiel kann die Speichersteuerung 2122 eine integrierte Speichersteuerung sein, die auf einer Schaltung mit dem Prozessor 2110 integriert ist.
  • Auch wenn nicht speziell dargestellt, versteht es sich, dass das System 2100 einen oder mehrere Busse oder Bussysteme zwischen Bauelementen umfassen kann, wie beispielsweise einen Speicherbus, einen Grafikbus, Schnittstellenbusse oder andere. Busse oder andere Signalleitungen können Komponenten kommunikativ oder elektrisch miteinander koppeln, oder die Komponenten sowohl kommunikativ als auch elektrisch koppeln. Busse können physikalische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Brücken, Adapter, Steuerungen oder eine andere Schaltungsanordnung oder eine Kombination umfassen. Busse können zum Beispiel einen oder mehrere von einem Systembus, einem Peripheral Component Interconnect (PCI) -Bus, einem Hyper Transport- oder Industry Standard Architecture (ISA) -Bus, einem Small Computer System Interface (SCSI) -Bus, einem universellen seriellen Bus (USB; universal serial bus) oder einem Institute of Electrical and Electronics Engineers (IEEE) -Standard 1394-Bus (Firewire) umfassen.
  • Bei einem Beispiel umfasst das System 2100 eine Schnittstelle 2114, die mit der Schnittstelle 2112 gekoppelt sein kann. Bei einem Beispiel repräsentiert die Schnittstelle 2114 eine Schnittstellenschaltung, die eigenständige Komponenten und eine integrierte Schaltungsanordnung umfassen kann. Bei einem Beispiel koppeln mehrere Nutzerschnittstellenkomponenten oder Peripheriekomponenten oder beide mit der Schnittstelle 2114. Eine Netzwerkschnittstelle 2150 stellt an das System 2100 die Fähigkeit bereit, über ein oder mehrere Netzwerke mit entfernten Vorrichtungen (z. B. Servern oder anderen Rechenvorrichtungen) zu kommunizieren. Die Netzwerkschnittstelle 2150 kann einen Ethernet-Adapter, drahtlose Verbindungskomponenten, zelluläre Netzwerk-Verbindungskomponenten, USB (Universal Serial Bus) oder andere drahtgebundene oder drahtlosstandard-basierte oder proprietäre Schnittstellen umfassen. Die Netzwerkschnittstelle 2150 kann Daten an eine Vorrichtung senden, die in dem gleichen Rechenzentrum oder Rack ist, oder an eine entfernte Vorrichtung, was ein Senden von in einem Speicher gespeicherten Daten umfassen kann. Die Netzwerkschnittstelle 2150 kann Daten von einer entfernten Vorrichtung empfangen, was eine Speicherung von empfangenen Daten in Speicher umfassen kann. Verschiedene Ausführungsbeispiele können in Verbindung mit der Netzwerkschnittstelle 2150, dem Prozessor 2110 und dem Speicherteilsystem 2120 verwendet werden.
  • Bei einem Beispiel umfasst das System 2100 eine oder mehrere Eingangs-/Ausgangs- (I/O; Input/Output) Schnittstelle(n) 2160. Die I/O-Schnittstelle 2160 kann eine oder mehrere Schnittstellenkomponenten umfassen, über die ein Benutzer mit dem System 2100 interagiert (z. B. Audio-, alphanumerische, tastbare/berührbare oder andere Schnittstellbildung). Eine Peripherieschnittstelle 2170 kann irgendeine Hardwareschnittstelle umfassen, die oben nicht ausdrücklich erwähnt wurde. Peripherievorrichtungen beziehen sich im Allgemeinen auf Vorrichtungen, die abhängig mit dem System 2100 verbinden. Eine abhängige Verbindung ist eine, bei der das System 2100 die Software-Plattform oder Hardware-Plattform oder beide bereitstellt, auf der die Operation ausgeführt wird und mit der ein Benutzer interagiert.
  • Bei einem Beispiel umfasst das System 2100 ein Speicherungsteilsystem 2180, um Daten auf eine nichtflüchtige Weise zu speichern. Bei einem Beispiel können in bestimmten Systemimplementierungen zumindest bestimmte Komponenten einer Speicherung 2180 mit Komponenten des Speicherteilsystems 2120 überlappen. Das Speicherungsteilsystem 2180 umfasst (eine) Speicherungsvorrichtung(en) 2184, die irgendein herkömmliches Medium zum Speichern großer Datenmengen auf nichtflüchtige Weise sein oder umfassen kann (können), wie beispielsweise eine oder mehrere magnetische, Festkörper- oder optische Platten oder eine Kombination davon. Eine Speicherung 2184 umfasst einen Code oder Anweisungen und Daten 2186 in einem dauerhaften Zustand (d.h. der Wert bleibt trotz Unterbrechung der Leistung zu dem System 2100 erhalten). Die Speicherung 2184 kann allgemein als ein „Speicher“ betrachtet werden, obwohl der Speicher 2130 üblicherweise der Ausführungs- oder Betriebsspeicher ist, um dem Prozessor 2110 Anweisungen bereitzustellen. Während die Speicherung 2184 nichtflüchtig ist, kann der Speicher 2130 flüchtigen Speicher umfassen (d. h. der Wert oder Zustand der Daten ist unbestimmt, wenn die Leistung zu dem System 2100 unterbrochen ist). Bei einem Beispiel umfasst das Speicherungsteilsystem 2180 eine Steuerung 2182, um eine Schnittstelle mit der Speicherung 2184 zu bilden. Bei einem Beispiel ist die Steuerung 2182 ein physikalischer Teil der Schnittstelle 2114 oder des Prozessors 2110 oder kann Schaltungen oder Logik sowohl in dem Prozessor 2110 als auch in der Schnittstelle 2114 umfassen.
  • Ein flüchtiger Speicher ist ein Speicher, dessen Zustand (und damit die darin gespeicherten Daten) unbestimmt ist, wenn die Leistung zu der Vorrichtung unterbrochen wird. Ein dynamischer flüchtiger Speicher erfordert ein Aktualisieren der Daten, die in der Vorrichtung gespeichert sind, um den Zustand aufrechtzuerhalten. Ein Beispiel eines dynamischen flüchtigen Speichers umfasst DRAM (Dynamic Random Access Memory; dynamischen Direktzugriffsspeicher) oder eine Variante wie beispielsweise synchronen DRAM (SDRAM; Synchronous DRAM). Ein Speicherteilsystem, wie es hierin beschrieben ist, kann mit einer Reihe von Speichertechnologien kompatibel sein, wie beispielsweise DDR3 (Double Data Rate Version 3, ursprüngliche Herausgabe durch JEDEC (Joint Electronic Device Engineering Council) am 27. Juni 2007). DDR4 (DDR-Version 4, erste Spezifikation veröffentlicht im September 2012 durch JEDEC), DDR4E (DDR-Version 4), LPDDR3 (Low Power DDR-Version3 (Niedrig-Leistungs-DDR-Version3), JESD209-3B, August 2013 durch JEDEC), LPDDR4) LPDDR-Version 4, JESD209-4, ursprünglich veröffentlicht durch JEDEC im August 2014), WIO2 (Wide Input/Output Version 2 (breiter Eingang/Ausgang Version 2), JESD229-2, ursprünglich veröffentlicht durch JEDEC im August 2014, HBM (High Bandwidth Memory (Hohe-Bandbreite-Speicher), JESD325, ursprünglich veröffentlicht durch JEDEC im Oktober 2013, LPDDR5 (derzeit in Diskussion durch JEDEC), HBM2 (HBM-Version 2), derzeit in Diskussion durch JEDEC, oder anderen oder Kombinationen von Speichertechnologien, und Technologien, die auf Herleitungen oder Erweiterungen solcher Spezifikationen basieren. Die JEDEC-Standards sind unter www.jedec.org verfügbar.
  • Eine nichtflüchtige Speicher (NVM; non-volatile memory) -Vorrichtung ist ein Speicher, dessen Zustand bestimmt ist, auch falls Leistung zu der Vorrichtung unterbrochen wird. Bei einem Ausführungsbeispiel kann die NVM-Vorrichtung eine blockadressierbare Speichervorrichtung, wie beispielsweise NAND-Technologien, oder genauer, einen Multi-Schwellenpegel-NAND-Flash-Speicher (zum Beispiel Single-Level Cell („SLC“), Multi-Level Cell („MLC“), Quad-Level Cell („QLC“), Tri-Level Cell („TLC“) oder ein anderes NAND) umfassen. Eine NVM-Vorrichtung kann auch eine byteadressierbare dreidimensionale Write-in-Place Cross Point (Vor-Ort-Schreiben-Kreuzpunkt-) Speichervorrichtung oder eine andere byteadressierbare Write-in-Place-NVM-Vorrichtung (auch als dauerhafter Speicher bezeichnet) umfassen, wie beispielsweise einen ein- oder mehrstufigen Phasenwechselspeicher (PCM; Phase Change Memory) oder Phasenwechselspeicher mit einem Schalter (PCMS), NVM-Vorrichtungen, die Chalkogenidphasenwechselmaterial (zum Beispiel Chalkogenidglas) verwenden, einen resistiven Speicher umfassend MetalloxidBasis, Sauerstoff-Leerstellenbasis und Conductive Bridge Random Access Memory (CB-RAM), Nanodrahtspeicher, ferroelektrischer Direktzugriffsspeicher (FeRAM, FRAM), magnetoresistiver Direktzugriffsspeicher (MRAM) mit Memristor-Technologie, Spin Transfer Torque (STT)-MRAM, eine auf Spintronik-Magnet-Übergang-Speicher basierende Vorrichtung, eine auf magnetischem Tunnelübergang (MTJ; magnetic tunneling junction) basierte Vorrichtung, eine DW (Domain Wall; Domänenwand) und SOT (Spin Orbit Transfer) -basierte Vorrichtung, eine thyristorbasierte Speichervorrichtung oder eine Kombination aus irgendeinem der obigen oder einen anderen Speicher.
  • Eine Leistungsquelle (nicht abgebildet) stellt an die Komponenten des Systems 2100 Leistung bereit. Genauer gesagt bildet eine Leistungsquelle üblicherweise eine Schnittstelle mit einer oder mehreren Leistungsversorgungen in dem System 2100, um an die Komponenten des Systems 2100 Leistung bereitzustellen. Bei einem Beispiel umfasst die Leistungsversorgung einen AC-zu-DC-(Wechselstrom-zu-Gleichstrom; alternating current to direct current) Adapter zum Einstecken in eine Steckdose. Eine solche Wechselstrom- (AC-) Leistung kann eine Erneuerbare-Energien (z. B. Solarleistung) -Leistungsquelle sein. Bei einem Beispiel umfasst eine Leistungsquelle eine Gleichstrom- (DC-) Leistungsquelle, wie beispielsweise einen externen Wechselstrom-zu-Gleichstrom- (AC-zu-DC-) Wandler. Bei einem Beispiel umfasst eine Leistungsquelle oder Leistungsversorgung drahtlose Ladehardware zum Aufladen über die Nähe zu einem Ladefeld. Bei einem Beispiel kann eine Leistungsquelle eine interne Batterie, eine Wechselstromversorgung, eine bewegungsbasierte Leistungsversorgung, eine Solarleistungsversorgung oder eine Brennstoffzellenquelle umfassen.
  • Bei einem Beispiel kann das System 2100 unter Verwendung von miteinander verbundenen Rechenschlitten aus Prozessoren, Speichern, Speicherungen, Netzwerkschnittstellen und anderen Komponenten implementiert sein. Es können Hochgeschwindigkeitsverbindungen wie beispielsweise PCIe, Ethernet oder optische Verbindungen (oder eine Kombination davon) verwendet werden.
  • Ausführungsbeispiele hierin können in verschiedenen Arten von Rechen- und Netzwerk-Ausrüstung, wie beispielsweise Schaltern, Routern, Racks und Blade-Servern, wie sie in einem Rechenzentrum und/oder einer Serverfarmumgebung verwendet werden, implementiert sein. Die Server, die in Rechenzentren und Serverfarmen verwendet werden, umfassen angeordnete Server-Konfigurationen wie beispielsweise Rack-basierte Server oder Blade-Server. Diese Server sind in Kommunikation via verschiedene Netzwerkzugänge miteinander verbunden, wie beispielsweise ein Partitionieren von Serversätzen in lokale Netzwerke (LANs; Local Area Networks) mit geeigneten Schalt- und Routing-Einrichtungen zwischen den LANs, um ein privates Intranet zu bilden. Zum Beispiel können Cloud-Hosting-Einrichtungen üblicherweise große Datenzentren mit einer Vielzahl von Servern nutzen. Ein Blade umfasst eine separate Rechenplattform, die ausgebildet ist, um serverartige Funktionen auszuführen, das heißt, einen „Server auf einer Karte“. Dementsprechend umfasst ein Blade Komponenten, die üblich für herkömmliche Server sind, umfassend eine gedruckte Hauptschaltungsplatine (main board; Hauptplatine), die eine interne Verkabelung (d. h. Busse) zum Koppeln geeigneter integrierter Schaltungen (ICs; integrated circuits) und anderer Komponenten, die auf der Platine befestigt sind, bereitstellt.
  • Verschiedene Beispiele können unter Verwendung von Hardware-Elementen, Software-Elementen oder einer Kombination von beiden implementiert sein. Bei einigen Beispielen können Hardwareelemente Vorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktivitäten usw.), integrierte Schaltungen, ASICs, PLDs, DSPs, FPGAs, Speichereinheiten, Logik-Gates, Register, ein Halbleiterbauelement, Chips, Mikrochips, Chipsätze usw. umfassen. Bei einigen Beispielen können Softwareelemente Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, APIs, Anweisungssätze, einen Rechencode, einen Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination derselben umfassen. Die Bestimmung, ob ein Beispiel unter Verwendung von Hardware-Elementen und/oder Software-Elementen implementiert wird, kann gemäß irgendeiner Anzahl von Faktoren, wie beispielsweise der gewünschten Rechenrate, den Leistungspegeln, den Wärmetoleranzen, dem Verarbeitungszyklus-Budget, den Eingangsdatenraten, den Ausgangsdatenraten, den Speicherressourcen, den Datenbusgeschwindigkeiten und anderen Entwurf- oder Performanceeinschränkungen, wie für eine gegebene Implementierung gewünscht, variieren. Ein Prozessor kann eines oder mehrere sein aus einer Kombination aus einer Hardware-Zustandsmaschine, digitalen Steuerlogik, zentralen Verarbeitungseinheit oder irgendwelchen Hardware-, Firmware- und/oder Software-Elementen.
  • Einige Beispiele können unter Verwendung von oder als ein Herstellungsartikel oder zumindest ein computerlesbares Medium implementiert sein. Ein computerlesbares Medium kann ein nichtflüchtiges Speicherungsmedium zur Speicherung von Logik umfassen. Bei einigen Beispielen kann das nichtflüchtige Speicherungsmedium eine oder mehrere Arten von computerlesbaren Speicherungsmedien umfassen, die fähig sind, elektronische Daten zu speichern, umfassend flüchtigen oder nichtflüchtigen Speicher, entfernbaren oder nicht entfernbaren Speicher, löschbaren oder nicht löschbaren Speicher, beschreibbaren oder wiederbeschreibbaren Speicher und so weiter.
  • Bei einigen Beispielen kann die Logik verschiedene Software-Elemente, wie beispielsweise Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Teilroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, API, Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination davon umfassen.
  • Gemäß einigen Beispielen kann ein computerlesbares Medium ein nichtflüchtiges Speicherungsmedium zum Speichern oder Aufrechterhalten von Anweisungen umfassen, die, wenn sie von einer Maschine, einer Rechenvorrichtung oder einem System ausgeführt werden, die Maschine, die Rechenvorrichtung oder das System veranlassen, Verfahren und/oder Operationen gemäß den beschriebenen Beispielen auszuführen. Die Anweisungen können irgendeine geeignete Art von Code umfassen, wie beispielsweise einen Quellcode, einen kompilierten Code, einen interpretierten Code, einen ausführbaren Code, einen statischen Code, einen dynamischen Code und Ähnliches. Die Anweisungen können gemäß einer vordefinierten Computersprache, -weise oder -syntax implementiert sein, um eine Maschine, ein(e) Rechenvorrichtung oder System anzuweisen, eine bestimmte Funktion auszuführen. Die Anweisungen können unter Verwendung irgendeiner geeigneten Hochsprachen-, Niedersprachen-, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert sein.
  • Ein oder mehrere Aspekte von zumindest einem Beispiel können durch repräsentative Anweisungen implementiert sein, die auf zumindest einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logiken innerhalb des Prozessors repräsentiert, die, wenn sie von einer Maschine, einer Rechenvorrichtung oder einem System gelesen werden, die Maschine, die Rechenvorrichtung oder das System veranlassen, Logik zur Ausführung der hierin beschriebenen Techniken herzustellen. Solche Darstellungen, die als „IP-Kerne“ bekannt sind, können auf einem greifbaren, maschinenlesbaren Medium gespeichert und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um sie in die Fertigungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Das Auftreten der Phrase „ein einzelnes Beispiel“ oder „ein Beispiel“ bezieht sich nicht notwendigerweise auf dasselbe Beispiel oder Ausführungsbeispiel. Irgendein hierin beschriebener Aspekt kann mit irgendeinem anderen Aspekt oder ähnlichen hierin beschriebenen Aspekt kombiniert werden, unabhängig davon, ob die Aspekte in Bezug auf dieselbe Figur oder dasselbe Element beschrieben sind. Ein Teilen, Auslassen oder Umfassen von Blockfunktionen, die in den beiliegenden Figuren abgebildet sind, lässt nicht herleiten, dass die Hardwarekomponenten, Schaltungen, Software und/oder Elemente zur Implementierung dieser Funktionen notwendigerweise unterteilt, weggelassen oder bei Ausführungsbeispielen umfasst sein müssten.
  • Einige Beispiele können unter Verwendung der Ausdrücke „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen beschrieben sein. Diese Begriffe sind nicht notwendigerweise als Synonyme füreinander vorgesehen. Beispielsweise können Beschreibungen, die die Begriffe „verbunden“ und/oder „gekoppelt“ verwenden, möglicherweise anzeigen, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt miteinander stehen. Der Begriff „gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, jedoch weiter miteinander zusammenarbeiten oder interagieren.
  • Die Begriffe „erste,r,s“, „zweite,r,s“ und Ähnliches bezeichnen hierin nicht irgendeine Reihenfolge, Menge oder Bedeutung, sondern werden vielmehr dazu verwendet, ein Element von einem anderen zu unterscheiden. Die Begriffe „ein,e,s“ (a, an) bezeichnen hierin nicht eine Mengenbeschränkung, sondern vielmehr das Vorhandensein von zumindest einem von den Gegenständen, auf die Bezug genommen wird. Der Begriff „aufgeschaltet“ (asserted), der hierin in Bezug auf ein Signal verwendet wird, bezeichnet einen Zustand des Signals, in dem das Signal aktiv ist und der durch Anwenden irgendeines Logikpegels auf das Signal, entweder Logik 0 oder Logik 1, erreicht werden kann. Die Begriffe „folgen“ oder „nach“ können sich auf unmittelbar folgen oder folgen nach einem anderen Ereignis oder Ereignissen beziehen. Andere Abfolgen von Schritten können auch gemäß alternativen Ausführungsbeispielen ausgeführt werden. Ferner können zusätzliche Schritte, abhängig von den bestimmten Anwendungen, hinzugefügt oder entfernt werden. Es kann irgendeine Kombination von Änderungen verwendet werden und ein Fachmann auf dem Gebiet, der den Nutzen dieser Offenbarung hat, würde die vielen Variationen, Modifikationen und alternativen Ausführungsbeispiele verstehen.
  • Eine disjunktive Sprache, wie beispielsweise die Phrase „zumindest eines von X, Y oder Z“, sofern nicht anderweitig spezifisch angegeben, wird ansonsten innerhalb des Kontexts verstanden, wie er im Allgemeinen verwendet wird, um darzustellen, dass ein Gegenstand, ein Begriff usw. entweder X, Y oder Z oder irgendeine Kombination davon (z. B. X, Y und/oder Z) sein kann. Somit ist solch disjunktive Sprache nicht im Allgemeinen dafür vorgesehen und soll nicht implizieren, dass bestimmte Ausführungsbeispiele das jeweilige Vorliegen von zumindest einem von X, zumindest einem von Y oder zumindest einem von Z erfordern. Zusätzlich soll konjunktive Sprache wie beispielsweise die Phrase „zumindest eines von X, Y und Z“, sofern nicht anderweitig spezifisch angegeben, auch als X, Y, Z oder irgendeine Kombination davon, umfassend „X, Y und/oder Z“, verstanden werden.
  • Darstellende Beispiele der Vorrichtungen, Systeme und Verfahren, die hierin offenbart sind, sind nachfolgend bereitgestellt. Ein Ausführungsbeispiel der Vorrichtungen, Systeme und Verfahren kann irgendein einzelnes oder mehrere und irgendeine Kombination der nachfolgend beschriebenen Beispiele umfassen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 16829935 [0001]

Claims (20)

  1. Eine Vorrichtung, umfassend: einen Speicher und mindestens einen Prozessor, wobei der mindestens eine Prozessor ausgebildet ist zum: Empfangen einer Konfiguration zum Gewinnen von Performancedaten für mindestens zwei verschiedene serverlose Rechenanwendungen von einer oder mehreren Plattformen und Sammeln von Performancedaten für die mindestens zwei verschiedenen serverlosen Rechenanwendungen und Speichern der gewonnenen Performancedaten der Ausführung der mindestens zwei verschiedenen serverlosen Rechenanwendungen.
  2. Die Vorrichtung gemäß Anspruch 1, ferner umfassend eine Schnittstelle, die mit dem mindestens einen Prozessor verbunden ist, wobei die Schnittstelle ausgebildet ist, um eines oder mehrere zu empfangen aus: einem Identifizierer einer serverlosen Rechenanwendung, Ressourcen, die als Teil der Anwendungsausführung verfolgt werden sollen, einer Liste von Vorrichtungen, die als Teil der Anwendungsausführung verfolgt werden sollen, einer Art der Überwachung der Anwendungsausführung oder Metadaten, um zu identifizieren, wann eine Anwendung abgeschlossen ist.
  3. Die Vorrichtung gemäß Anspruch 2, wobei ein Identifizierer eine Kombination umfasst aus einem oder mehreren von: einem Identifizierer für einen Anwender, einer Prozessadressraum-ID (PASID) für eine Anwendung, die die Ausführung einer Anwendung aufruft oder anfordert, oder einem Identifizierer einer Anwendung.
  4. Die Vorrichtung gemäß Anspruch 2, wobei der Identifizierer der Anwendung bei jeder Ausführung der Anwendung eindeutig ist.
  5. Die Vorrichtung gemäß Anspruch 2, wobei die Liste der Vorrichtungen, die als Teil der Ausführung der Anwendung verfolgt werden sollen, mindestens einen Vorrichtungsidentifizierer umfasst.
  6. Die Vorrichtung gemäß Anspruch 2, wobei die Art der Überwachung der Anwendungsausführung eines oder mehrere umfasst aus: zu verfolgenden Metriken oder Frequenz der Metrikabtastung.
  7. Die Vorrichtung gemäß Anspruch 6, wobei die zu verfolgenden Metriken eines oder mehrere umfassen aus: Speicherbandbreitennutzung, Speichergrößennutzung, Speicherzuweisung, Kerntaktfrequenzgeschwindigkeit, Kerntaktzyklusnutzung, genutzte Netzwerkbandbreite, Kernleerlaufmessung, Kernausführung von Benutzerraumprozessen, Kern, der darauf wartet, dass eine Eingabe/Ausgabe-Operation abgeschlossen wird, Cache-Nutzung, Netzwerkschnittstellen-Bandbreitennutzung, Zentrale-Verarbeitungseinheit- (CPU-) Zyklusnutzung, Graphik-Verarbeitungseinheit- (GPU-) Zyklusnutzung, Datenbanktransaktionen/Sekunde, gesammelte Telemetrie, Zähler der Performanceüberwachungseinheit (PMU), Performanceüberwachungszähler (PMON) oder Performancezählerüberwachung.
  8. Die Vorrichtung gemäß Anspruch 2, wobei der mindestens eine Prozessor die Performancedaten nach Beendigung der Ausführung der serverlosen Rechenanwendungen von der einen oder den mehreren Plattformen in eine Speicherung speichern soll.
  9. Die Vorrichtung gemäß Anspruch 8, wobei der mindestens eine Prozessor ausgebildet ist, um einem oder mehreren ausgewählten Anforderern Zugriff auf die Performancedaten der serverlosen Rechenanwendungen aus der Speicherung zu gewähren.
  10. Die Vorrichtung gemäß Anspruch 2, wobei die Metadaten zur Identifizierung, wann die serverlose Rechenanwendung abgeschlossen ist, eines oder mehrere umfassen aus: einem bestimmten Ereignis, der letzten Codezeile oder der Beendigung der Anwendung.
  11. Die Vorrichtung gemäß Anspruch 1, umfassend Ressourcen, wobei die Ressourcen eines oder mehrere umfassen aus: einem Ein- oder Mehrkernprozessor, einer Grafikverarbeitungseinheit, einer logischen Ausführungseinheit mit ein- oder mehrstufigem Cache, Funktionseinheiten, die zur unabhängigen Ausführung von Programmen oder Threads verwendet werden können, anwendungsspezifische integrierte Schaltungen (ASICs), neuronale Netzwerkprozessoren (NNPs), programmierbare Steuerlogik, feldprogrammierbare Gate-Arrays (FPGAs) oder programmierbare Steuerlogik (PLCs).
  12. Die Vorrichtung gemäß Anspruch 1, umfassend eines oder mehrere von: einem Server, einem Rechenzentrum, einem Rack oder einer Netzwerkschnittstelle, wobei der Server, das Rechenzentrum, das Rack oder die Netzwerkschnittstelle den mindestens einen Prozessor umfasst, der eine Konfiguration zum Gewinnen von Performancedaten empfängt, Performancedaten für die mindestens zwei verschiedenen serverlosen Rechenanwendungen sammelt und die gesammelten Performancedaten der Ausführung der mindestens zwei verschiedenen serverlosen Rechenanwendungen speichert.
  13. Ein computerimplementiertes Verfahren, umfassend: Überwachen von Performancedaten von mindestens zwei verschiedenen serverlosen Funktionen, die auf Ressourcen einer oder mehrerer Plattformen ausgeführt werden, und Bereitstellung von Performancedaten für einen Anfrager.
  14. Das Verfahren gemäß Anspruch 13, wobei die mindestens zwei unterschiedlichen serverlosen Funktionen serverlose Funktionen umfassen, die unterschiedliche Operationen ausführen oder dieselbe Funktion sind, aber zu unterschiedlichen Zeiten ausgeführt werden oder unterschiedliche Daten verarbeiten.
  15. Das Verfahren gemäß Anspruch 13, wobei eine serverlose Funktion auf Ressourcen ausgeführt wird, die mit einer oder mehreren anderen Funktionen gemeinsam genutzt werden.
  16. Das Verfahren gemäß Anspruch 13, umfassend: Zuordnen eines Identifizierers zu mindestens einer Ausführung der mindestens zwei serverlosen Funktionen und Spezifizieren von Ressourcen, die während der mindestens einen Ausführung der serverlosen Funktionen überwacht werden sollen.
  17. Das Verfahren gemäß Anspruch 13, umfassend: Gewinnen von Performancedaten aus der Ausführung verschiedener Ausführungen der mindestens zwei serverlosen Funktionen auf einer oder mehreren Plattformen und Bereitstellen der Performancedaten für den Zugriff auf ausgewählte Anfrager.
  18. Ein computerlesbares Medium, umfassend darauf gespeicherte Anweisungen, die, falls sie durch zumindest einen Prozessor ausgeführt werden, den zumindest einen Prozessor veranlassen zum: Anfragen der Ausführung einer kurzlebigen serverlosen Funktion; Bereitstellen eines Identifizierers für mindestens eine Ausführung der kurzlebigen serverlosen Funktion; Spezifizieren von zu überwachenden Ressourcen und zu speichernden Metriken von der mindestens einen Ausführung der kurzlebigen serverlosen Funktion; und Zugreifen auf überwachte Daten für die Ausführung von mindestens zwei verschiedenen kurzlebigen serverlosen Funktionen.
  19. Das computerlesbare Medium gemäß Anspruch 18, wobei die Ressourcen eines oder mehrere umfassen aus: einem Ein- oder Mehrkernprozessor, einer Grafikverarbeitungseinheit, einer logischen Ausführungseinheit mit ein- oder mehrstufigem Cache, Funktionseinheiten, die zur unabhängigen Ausführung von Programmen oder Threads verwendet werden können, anwendungsspezifischen integrierten Schaltungen (ASICs), neuronalen Netzwerkprozessoren (NNPs), programmierbarer Steuerlogik, feldprogrammierbaren Gate-Arrays (FPGAs) oder programmierbarer Steuerlogik (PLCs).
  20. Das computerlesbare Medium gemäß Anspruch 18, wobei die Metriken eines oder mehrere umfassen aus: Speicherbandbreitennutzung, Speichergrößennutzung, Speicherzuweisung, Kerntaktfrequenzgeschwindigkeit, Kerntaktzyklusnutzung, genutzte Netzwerkbandbreite, Kemleerlaufmessung, Kemausführung von Benutzerraumprozessen, Kern, der darauf wartet, dass eine Eingabe/Ausgabe-Operation abgeschlossen wird, Cache-Nutzung, Netzwerkschnittstellen-Bandbreitennutzung, Zentrale-Verarbeitungseinheit- (CPU-) Zyklusnutzung, Graphik-Verarbeitungseinheit- (GPU-) Zyklusnutzung, Datenbanktransaktionen/Sekunde, gesammelte Telemetrie, Zähler der Performanceüberwachungseinheit (PMU), Performanceüberwachungszähler (PMON) oder Performancezählerüberwachung.
DE112020006967.2T 2020-03-25 2020-12-22 Performanceüberwachung für kurzlebige funktionen Pending DE112020006967T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/829,935 2020-03-25
US16/829,935 US20200241999A1 (en) 2020-03-25 2020-03-25 Performance monitoring for short-lived functions
PCT/US2020/066735 WO2021194596A1 (en) 2020-03-25 2020-12-22 Performance monitoring for short-lived functions

Publications (1)

Publication Number Publication Date
DE112020006967T5 true DE112020006967T5 (de) 2023-02-09

Family

ID=71732567

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020006967.2T Pending DE112020006967T5 (de) 2020-03-25 2020-12-22 Performanceüberwachung für kurzlebige funktionen

Country Status (4)

Country Link
US (1) US20200241999A1 (de)
CN (1) CN115136119A (de)
DE (1) DE112020006967T5 (de)
WO (1) WO2021194596A1 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11374776B2 (en) * 2019-09-28 2022-06-28 Intel Corporation Adaptive dataflow transformation in edge computing environments
US11467775B2 (en) 2019-10-15 2022-10-11 Hewlett Packard Enterprise Development Lp Virtual persistent volumes for containerized applications
US11018965B1 (en) * 2020-01-24 2021-05-25 Red Hat, Inc. Serverless function scaling
US20200241999A1 (en) * 2020-03-25 2020-07-30 Intel Corporation Performance monitoring for short-lived functions
US11687267B2 (en) 2020-04-14 2023-06-27 Hewlett Packard Enterprise Development Lp Containerized application manifests and virtual persistent volumes
US11489844B2 (en) * 2020-04-17 2022-11-01 Twistlock Ltd. On-the-fly creation of transient least privileged roles for serverless functions
US11184263B1 (en) * 2020-05-19 2021-11-23 Red Hat, Inc. Intelligent serverless function scaling
US11693573B2 (en) 2020-06-18 2023-07-04 Hewlett Packard Enterprise Development Lp Relaying storage operation requests to storage systems using underlying volume identifiers
US11960773B2 (en) * 2020-07-31 2024-04-16 Hewlett Packard Enterprise Development Lp Modifying virtual persistent volumes based on analysis of performance metrics
CN113282377B (zh) * 2021-07-23 2022-01-04 阿里云计算有限公司 无服务器架构下的代码加载方法、设备、系统及存储介质
US11711719B2 (en) * 2021-08-16 2023-07-25 Verizon Patent And Licensing Inc. Systems and methods for device-anonymous performance monitoring in a wireless network
CN113742171B (zh) * 2021-08-17 2023-07-14 苏州浪潮智能科技有限公司 一种容器的gpu进程统计方法和装置
US20230237060A1 (en) * 2022-01-24 2023-07-27 Dell Products, L.P. Suggestion engine for data center management and monitoring console

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8095641B2 (en) * 2005-10-27 2012-01-10 International Business Machines Corporation Method and system for virtualized health monitoring of resources
US9519513B2 (en) * 2013-12-03 2016-12-13 Vmware, Inc. Methods and apparatus to automatically configure monitoring of a virtual machine
US10560353B1 (en) * 2014-09-16 2020-02-11 Amazon Technologies, Inc. Deployment monitoring for an application
US10469346B2 (en) * 2015-01-30 2019-11-05 Splunk Inc. Correlating performance data of client and host to identify performance issue of a third device
US10367705B1 (en) * 2015-06-19 2019-07-30 Amazon Technologies, Inc. Selecting and configuring metrics for monitoring
US10181988B1 (en) * 2015-08-25 2019-01-15 Control4 Corporation Systems and methods for monitoring a network device
US10445850B2 (en) * 2015-08-26 2019-10-15 Intel Corporation Technologies for offloading network packet processing to a GPU
WO2019031783A1 (en) * 2017-08-09 2019-02-14 Samsung Electronics Co., Ltd. ON-DEMAND FUNCTION SUPPLY SYSTEM (FAAS), AND METHOD OF OPERATING THE SYSTEM
US10498653B2 (en) * 2017-10-19 2019-12-03 International Business Machines Corporation Encryption prioritization for distributed streaming applications
KR102068782B1 (ko) * 2018-05-31 2020-01-21 한전케이디엔 주식회사 데이터 분산서비스 용 통신 애플리케이션 관리 및 운영 시스템
US11005730B2 (en) * 2018-07-20 2021-05-11 Sevone, Inc. System, method, and apparatus for high throughput ingestion for streaming telemetry data for network performance management
US20190188111A1 (en) * 2019-02-26 2019-06-20 Intel Corporation Methods and apparatus to improve performance data collection of a high performance computing application
US11336528B2 (en) * 2019-11-29 2022-05-17 Amazon Technologies, Inc. Configuration and management of scalable global private networks
US11018965B1 (en) * 2020-01-24 2021-05-25 Red Hat, Inc. Serverless function scaling
US20200241999A1 (en) * 2020-03-25 2020-07-30 Intel Corporation Performance monitoring for short-lived functions

Also Published As

Publication number Publication date
CN115136119A (zh) 2022-09-30
US20200241999A1 (en) 2020-07-30
WO2021194596A1 (en) 2021-09-30

Similar Documents

Publication Publication Date Title
DE112020006967T5 (de) Performanceüberwachung für kurzlebige funktionen
DE112018004798T5 (de) Technologien für ein bereitstellen von effizientem speicherzugriff auf einem beschleunigerschlitten
DE102020125046A1 (de) Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle
DE102020007986A1 (de) Proaktiver daten-vorabruf mit angewandter quality-of-service
DE102022107621A1 (de) Resourcenauswahl, die zum teil auf der arbeitslast basiert
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
DE112017003710T5 (de) Verfahren zum Konfigurieren physischer Rechenressourcen für Arbeitslasten per Leitungsvermittlung verwandte Fälle
DE102020130971A1 (de) Schlanke arbeitsspeicherzuweisung unter verwendung von arbeitsspeicherpools
US20210117244A1 (en) Resource manager access control
DE102020133273A1 (de) Leistungsüberwachung und Ressorcenverwaltung
US20200241926A1 (en) Selection and management of disaggregated computing resources
DE112017001020T5 (de) Unterstützung einer vielzahl von speichertypen in einem speichersteckplatz
DE102020118494A1 (de) Technologien zur behandlung einer latenzbasierten dienstebenenvereinbarung in fern-direktspeicherzugriffsnetzen
DE102020116316A1 (de) Prioritätsbasierte batterie-zuordnung für ressourcen während leistungsausfall
DE102022104207A1 (de) Pooling von Netzwerkverarbeitungsressourcen
DE102010044529B4 (de) Autonomes speicher-sub-system mit hardwarebeschleuniger
US20080270653A1 (en) Intelligent resource management in multiprocessor computer systems
DE102022124530A1 (de) Speicherpoolmanagement
DE102020113279A1 (de) Technologien zum managen von burst-bandbreite
DE102022121192A1 (de) Systeme und verfahren für die prüfung vernetzter geräte
US20210258265A1 (en) Resource management for components of a virtualized execution environment
DE102020110582A1 (de) TECHNOLOGIEN ZUR AUTOMATISCHEN ARBEITSLASTERKENNUNG UND CACHE-QoS-RICHTLINIENANWENDUNG
DE112020006858T5 (de) Dynamische interrupt-bereitstellung
US20210326221A1 (en) Network interface device management of service execution failover
DE102019102883A1 (de) Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern

Legal Events

Date Code Title Description
R083 Amendment of/additions to inventor(s)