DE112017001376T5 - Erkennen und Vorhersagen von Engpässen in komplexen Systemen - Google Patents

Erkennen und Vorhersagen von Engpässen in komplexen Systemen Download PDF

Info

Publication number
DE112017001376T5
DE112017001376T5 DE112017001376.3T DE112017001376T DE112017001376T5 DE 112017001376 T5 DE112017001376 T5 DE 112017001376T5 DE 112017001376 T DE112017001376 T DE 112017001376T DE 112017001376 T5 DE112017001376 T5 DE 112017001376T5
Authority
DE
Germany
Prior art keywords
software module
data
software
resources
module
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
DE112017001376.3T
Other languages
English (en)
Inventor
Bartlomiej Malecki
Piotr Padkowski
Marek Peszt
Piotr Walczak
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112017001376T5 publication Critical patent/DE112017001376T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • 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/3442Recording 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 planning or managing the needed capacity
    • 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/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Es werden ein Verfahren, ein Computersystem und ein Computerprogrammprodukt zum Erkennen eines Engpasses in einem System bereitgestellt. Das Verfahren weist das Empfangen eines Graphen (102), wobei ein Knoten ein Softwaremodul und eine Kante einen Datenübertragungskanal zwischen Softwaremodulen darstellt, das Überwachen ausgewählter Ressourcen für jedes Softwaremodul im Vergleich zu verfügbaren Ressourcen (104), das Überwachen eines Verhältnisses einer auf einem Datenübertragungskanal verbrauchten Bandbreite zu einer verfügbaren Bandbreite (106), das Durchlaufen des Graphen zum Ermitteln eines Quellsoftwaremoduls, dessen erzeugte Ausgabemenge unter der Ausgabemenge liegt, die von dem Softwaremodul benötigt wird, das sich im Leerlaufmodus befindet (108), und das Analysieren eines Ressourcenverbrauchs des ermittelten Quellsoftwaremoduls auf, um eine fehlende Menge an Ressourcen für das ermittelte Quellsoftwaremodul zu ermitteln (110).

Description

  • HINTERGRUND DER ERFINDUNG
  • Die Erfindung bezieht sich im Allgemeinen auf ein Verfahren zum Erkennen eines Engpasses in einem System, und genauer gesagt auf ein Verfahren, das einen Graphen verwendet, in dem ein Knoten ein Softwaremodul darstellt und eine Kante des Graphen einen Datenübertragungskanal darstellt. Die Erfindung betrifft darüber hinaus ein Engpassermittlungssystem zum Erkennen eines Engpasses in einem System und ein Computerprogrammprodukt.
  • Heutzutage bestehen Softwarelösungen relativ häufig aus mehreren miteinander Daten austauschenden Endpunkten, wobei viele Endpunkte gleichzeitig als Datenerzeuger sowie als Verbraucher dienen. Eine mangelhafte Leistung auf einem der Endpunkt/Software-Module kann auftreten und wirkt sich üblicherweise auf die Gesamtleistung einer Komplettlösung aus. Außerdem hängt die Leistung des Endpunkts nicht nur von der Hardware ab, auf der er läuft, sondern auch von anderen Faktoren wie z.B. anderen Softwaremodulen, die auf derselben Maschine laufen, sei es eine physische Maschine oder eine virtuelle Maschine. Das Eingrenzen der eigentlichen Ursache für einen Engpass in einem System - insbesondere bei zeitweiligem Vorhandensein - kann schwierig zu erkennen, einzugrenzen und zu beseitigen sein. Der Grund liegt darin, dass ein Leistungsengpass eine Vielzahl von Gründen haben kann. Möglicherweise gibt es nicht genügend Datenverarbeitungsressourcen, z.B. Hauptspeicher oder externe Speicherkapazität, zu große oder zu kleine Swap-Dateien, eine nicht ausreichend hohe Datenübertragungsbandbreite, zu viele Benutzer, die versuchen, dasselbe mit dem gleichen Softwaremodul zu machen, usw. Selbst für erfahrene Systementwickler und Architekten kann es eine mühsame Aufgabe sein, die eigentliche Ursache des Leistungsproblems ausfindig zu machen. Die Anzahl der Werkzeuge zur Unterstützung derartiger Analysen ist nach wie vor begrenzt und sie beruhen oft auf statischen Informationen aus der Vergangenheit. Daher kann es eine Anforderung für eine ausgefeiltere Unterstützung beim Eingrenzen von Engpässen in einem System geben.
  • KURZDARSTELLUNG
  • Wie hierin offenbart, beinhaltet ein von einem Computer ausgeführtes Verfahren zum Erkennen eines Engpasses in einem System das Empfangen eines Graphen, wobei ein Knoten ein Softwaremodul darstellt und eine Kante einen Datenübertragungskanal zwischen Softwaremodulen darstellt, das Überwachen ausgewählter Ressourcen für jedes Softwaremodul im Vergleich zu verfügbaren Ressourcen, das Überwachen eines Verhältnisses einer auf einem Datenübertragungskanal verbrauchten Bandbreite zu der verfügbaren Bandbreite, das Durchlaufen des Graphen zum Ermitteln eines Quellsoftwaremoduls, dessen erzeugte Ausgabemenge unter der Ausgabemenge liegt, die von dem Softwaremodul benötigt wird, das sich im Leerlaufmodus befindet, und das Analysieren eines Ressourcenverbrauchs des ermittelten Quellsoftwaremoduls, um eine fehlende Menge an Ressourcen für das ermittelte Quellsoftwaremodul zu ermitteln. Ein dem oben genannten Verfahren entsprechendes Computersystem und Computerprogrammprodukt werden hierin ebenfalls offenbart.
  • Figurenliste
    • 1 ist ein Blockschaubild, das ein Beispiel des erfindungsgemäßen Verfahrens zum Erkennen eines Engpasses in einem System in Übereinstimmung mit Ausführungsformen der vorliegenden Erfindung darstellt;
    • 2 ist ein Schaubild, das ein Beispiel eines allgemeinen Modells des erfindungsgemäßen Verfahrens in Übereinstimmung mit Ausführungsformen der vorliegenden Erfindung darstellt;
    • 3 ist ein Blockschaubild, das ein Beispiel eines ein Netzwerk von Elementen aufweisenden Systems in Übereinstimmung mit Ausführungsformen der vorliegenden Erfindung darstellt;
    • 4 ist ein Blockschaubild, das ein Beispiel eines Engpassermittlungssystems zum Erkennen eines Engpasses in einem System in Übereinstimmung mit Ausführungsformen der vorliegenden Erfindung darstellt; und
    • 5 zeigt eine Ausführungsform eines Datenverarbeitungssystems, welches das System zum Erkennen eines Engpasses in einem System aufweist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß einem Aspekt der vorliegenden Erfindung kann ein Verfahren zum Erkennen eines Engpasses in einem System bereitgestellt werden. Das System kann Softwaremodule aufweisen, die über Datenübertragungskanäle Daten miteinander austauschen. Das Verfahren kann das Empfangen eines Graphen aufweisen. In dem Graphen kann ein Knoten eines der Softwaremodule darstellen, und eine Kante kann einen der Datenübertragungskanäle mit einem Datenfluss von einem sendenden Softwaremodul aus den Softwaremodulen zu einem empfangenden Softwaremodul aus den Softwaremodulen darstellen. Ein Knoten, der ein Softwaremodul darstellt, kann als sendendes Softwaremodul und als empfangendes Softwaremodul dienen und sich auf einen vordefinierten Faktor beziehen, der ein erwartetes Verhältnis einer empfangenen Menge von Eingabedaten zu einer erzeugten Menge von Ausgabedaten darstellt, die aus den Eingabedaten abgeleitet werden.
  • Das Verfahren kann darüber hinaus für jedes Softwaremodul für ausgewählte Ressourcen das Überwachen eines Verhältnisses einer Menge der von dem Softwaremodul verbrauchten Ressourcen zu einer verfügbaren Menge der Ressourcen, für jeden Datenübertragungskanal das Überwachen eines Verhältnisses einer von einem der Datenübertragungskanäle verbrauchten Bandbreite zu einer verfügbaren Bandbreite auf dem Datenübertragungskanal und einer Menge an Leerlaufzeit des Datenübertragungskanals; für ein Softwaremodul im Leerlaufmodus das Durchlaufen des Graphen zum Ermitteln eines Quellsoftwaremoduls, dessen erzeugte Ausgabemenge unter der Ausgabemenge liegt, die von dem Softwaremodul benötigt wird, das sich im Leerlaufmodus befindet, und das Analysieren eines Ressourcenverbrauchs des ermittelten Quellsoftwaremoduls aufweisen, um eine fehlende Menge an Ressourcen für das ermittelte Quellsoftwaremodul zu ermitteln.
  • Gemäß einem anderen Aspekt der vorliegenden Erfindung kann ein Engpassermittlungssystem zum Erkennen eines Engpasses in einem System bereitgestellt werden. Das System kann ebenfalls Softwaremodule aufweisen, die über Datenübertragungskanäle Daten miteinander austauschen. Das System kann eine Empfangseinheit aufweisen, die zum Empfangen eines Graphen eingerichtet ist, in dem ein Knoten eines der Softwaremodule darstellen kann und eine Kante einen der Datenübertragungskanäle mit einem Datenfluss von einem sendenden Softwaremodul aus den Softwaremodulen zu einem empfangenden Softwaremodul aus den Softwaremodulen darstellen kann. Ein Knoten, der ein Softwaremodul darstellt, kann als sendendes Softwaremodul und als empfangendes Softwaremodul dienen - insbesondere zur gleichen Zeit - und sich auf einen vordefinierten Faktor beziehen, der ein erwartetes Verhältnis einer empfangenen Menge von Eingabedaten zu einer erzeugten Menge von Ausgabedaten darstellt, die aus den Eingabedaten abgeleitet werden. Das System kann darüber hinaus eine Überwachungseinheit aufweisen, die für jedes Softwaremodul für ausgewählte Ressourcen zum Überwachen eines Verhältnisses einer Menge der von dem Softwaremodul verbrauchten Ressourcen zu einer verfügbaren Menge der Ressourcen eingerichtet ist. Die Überwachungseinheit kann auch für jeden Datenübertragungskanal zum Überwachen eines Verhältnisses einer von einem der Datenübertragungskanäle verbrauchten Bandbreite zu einer verfügbaren Bandbreite des Datenübertragungskanals und einer Menge an Leerlaufzeit des Datenübertragungskanals eingerichtet sein. Ein Durchlaufmodul kann für ein Softwaremodul im Leerlaufmodus zum Durchlaufen des Graphen zum Ermitteln eines Quellsoftwaremoduls eingerichtet sein, dessen erzeugte Ausgabemenge unter der Ausgabemenge liegt, die von dem Softwaremodul benötigt wird, das sich im Leerlaufmodus befindet, und ein Analysemodul kann zum Analysieren eines Ressourcenverbrauchs des ermittelten Quellsoftwaremoduls eingerichtet sein, um eine fehlende Menge an Ressourcen für das ermittelte Quellsoftwaremodul zu ermitteln.
  • Des Weiteren können Ausführungsformen die Form eines verwandten Computerprogrammprodukts annehmen, auf das von einem durch einen Computer verwendbaren bzw. durch einen Computer lesbaren Medium zugegriffen werden kann, das Programmcode bereitstellt, das von oder in Verbindung mit einem Computer oder jedem beliebigen Anweisungsausführungssystem verwendet wird. Für diese Beschreibung kann ein durch einen Computer verwendbares bzw. durch einen Computer lesbares Medium jede beliebige Vorrichtung sein, die ein Mittel zum Speichern, Austauschen, Weiterleiten oder Transportieren des Programms zur Verwendung durch das Anweisungsausführungssystem, die Vorrichtung oder die Einheit oder zur Verwendung in Verbindung mit diesen enthalten kann.
  • Es sei angemerkt, dass Ausführungsformen der Erfindung unter Bezugnahme auf verschiedene Gegenstände beschrieben werden. Insbesondere werden einige Ausführungsformen unter Bezugnahme auf verfahrensartige Ansprüche beschrieben, während andere Ausführungsformen unter Bezugnahme auf vorrichtungsartige Ansprüche beschrieben wurden. Ein Fachmann wird aus dem oben Aufgeführten und der folgenden Beschreibung jedoch folgern, dass zusätzlich zu jeder beliebigen Kombination von zu einer Art von Gegenstand gehörenden Eigenschaften auch jede beliebige Kombination aus sich auf andere Gegenstände beziehenden Eigenschaften, insbesondere von Eigenschaften der verfahrensartigen Ansprüche und Eigenschaften der vorrichtungsartigen Ansprüche als innerhalb dieses Dokuments offenbart angesehen wird, soweit nicht anderweitig angegeben.
  • Die oben festgelegten Aspekte und weitere Aspekte der vorliegenden Erfindung ergeben sich aus den Beispielen von Ausführungsformen, die nachfolgend beschrieben und unter Bezugnahme auf die Beispiele der Ausführungsformen erläutert werden, wobei die Erfindung nicht auf diese beschränkt ist.
  • In dem Kontext dieser Beschreibung können die folgenden Konventionen, Begriffe und/oder Ausdrücke verwendet werden:
  • Der Begriff ,Engpass' kann jede negative Auswirkung auf die Leistung eines Systems bezeichnen, das z.B. eine Reihe von Modulen aufweist, bei denen es sich bei einigen um Softwaremodule handeln kann. Der Begriff Engpass kann ein Ersatz für den Begriff Leistungsverschlechterung sein. Der Grund für die Leistungsprobleme ist möglicherweise nicht offensichtlich und kann eine gründliche Analyse erfordern.
  • Der Begriff ,System' kann eine Gruppe zusammenhängender Elemente wie Softwaremodule, Hardwarekomponenten jeglicher Art, Datenübertragungseinheiten, Speicherelemente und dergleichen bezeichnen, die alle Teil eines Datenverarbeitungs- und Datenübertragungssystems sind.
  • Der Begriff ,Softwaremodul' kann eine Softwarekomponente bezeichnen, die Teil des wie oben definierten Systems ist. Bei dem Softwaremodul kann es sich um jede beliebige Art von Softwaremodul handeln, wie Anwendungssoftware, Systemsoftware, Middleware-Software, eingebettete Software, Datenübertragungssoftware und dergleichen. Der Art des Softwaremoduls sind keine Grenzen gesetzt. Die Software kann mindestens einen Eingangs-Port zum Empfangen von Daten und einen Ausgangs-Port zum Ausgeben von Daten aufweisen. Das Softwaremodul selbst kann die Daten in eine beliebige Form umwandeln, speichern und/oder an einen Ausgabeport weiterleiten.
  • Der Begriff ,Datenübertragungskanal' kann eine Datenverbindung bezeichnen, die einen Datenausgang und einen Dateneingang verbindet. Bei dem Datenausgang kann es sich um einen Ausgang in Form eines Softwaremoduls und/oder alternativ in Form eines Hardwaremoduls handeln. Es kann auch eine Kombination möglich sein.
  • Der Begriff ,Graph' kann in der Mathematik, und genauer gesagt in der Graphentheorie, eine Darstellung eines Satzes von Objekten bezeichnen, bei der einige Paare von Objekten durch Verknüpfungen verbunden sind. Die miteinander verbundenen Objekte werden durch mathematische Abstraktionen dargestellt, die Scheitelpunkte genannt werden (auch Knoten oder Punkte genannt), und die Verknüpfungen, die einige Paare von Scheitelpunkten verbinden, werden Kanten genannt (manchmal auch Bögen oder Linien genannt). Üblicherweise wird ein Graph in schematischer Form als ein Satz von Punkten für die Scheitelpunkte dargestellt, die durch Linien oder Kurven für die Kanten verbunden sind.
  • Der Begriff ,Knoten' kann ein Objekt im Sinne der Definition des oben genannten Graphen bezeichnen. Der Begriff ,Kante' kann eine Verknüpfung im Sinne der Definition des oben genannten Graphen bezeichnen.
  • Der Begriff ,sendendes Softwaremodul' kann ein Softwaremodul bezeichnen, das Daten aus dem Softwaremodul sendet. Der Begriff ,empfangendes Softwaremodul' kann das Gegenteil des Begriffs ,sendendes Softwaremodul' bezeichnen. Es wird darauf hingewiesen, dass ein Softwaremodul beide Eigenschaften aufweisen kann: Senden und Empfangen zur gleichen Zeit.
  • Der Begriff ,ausgewählte Ressource' kann jede beliebige Ressource bezeichnen, die zum Durchführen einer Aufgabe eines Objekts oder einer Verknüpfung verwendet wird, d.h. ein Softwaremodul oder ein Datenübertragungskanal im Sinne der vorliegenden Erfindung und der Graphentheorie. Eine ausgewählte Ressource kann umfassen und darf nicht beschränkt sein auf: verfügbare Menge an Speicher und Geschwindigkeit, Massenspeicher, CPU-Leistung, Taktfrequenz, Bustaktfrequenz, Kern pro CPU, Anzahl an Threads pro Kern, E/A-Geschwindigkeit usw.
  • Der Begriff ,Mikrodienst' kann eine spezielle Form eines Softwaremoduls bezeichnen. Im Cloud Computing können Softwaremodule und Komplettsysteme aus Mikrodiensten aufgebaut sein, d.h. aus kleinen, miteinander verbundenen Softwaremodulen, die nur eine Teilfunktion der Gesamtfunktion aufweisen.
  • Das vorgeschlagene Verfahren zum Erkennen eines Engpasses in einem System sowie die Ermittlung des Engpasses können mehrere Vorteile und technische Wirkungen bieten:
  • Die vorgeschlagene Lösung kann Ressourcen wie CPU, Co-Prozessoren, Cachespeicher, Hauptspeicher, E/A-Einheiten, Datenbanken, Benutzerschnittstellen, Datenübertragungsverbindungen, deren Anzahl und deren Verfügbarkeit und dergleichen ununterbrochen überwachen. Neben den Ressourcen selbst kann auch der Verbrauch der Ressourcen für jeden Knoten und für jeden Datenfluss überwacht werden, d.h. der Datenübertragungskanal zu/von den Knoten. Es kann eine Verbindung oder ein Datenübertragungskanal zwischen Softwaremodulen hergestellt und es können für die ordnungsgemäße Funktion erforderliche Ressourcen überwacht werden. Auf diese Weise lässt sich aus dem Ressourcenbedarf für einzelne Vorgänge in dem System ein ziemlich genaues Bild gewinnen. Dies kann die Grundlage für eine detaillierte Analyse von Engpässen und deren Beseitigung sein. Die Möglichkeit, die gemessenen Werte oder den Ressourcenverbrauch auf vordefinierte Werte oder Verhältnisse abzubilden, kann ein auf einzelnen oder mehreren Schwellenwerten beruhendes Alarm- und Optimierungssystem ermöglichen.
  • Die vorgeschlagene Lösung kann Engpässe in jeder einzelnen Komponente der Softwarekomponenten und der Datenübertragungsverbindungen ermitteln. Die eigentliche Ursache für Leistungsverschlechterungen kann erkannt werden, und es können Maßnahmen durchgeführt werden, um derartige Engpässe in Zukunft zu vermeiden. Ein Bediener kann durch das vorgeschlagene Verfahren und/oder das System zum Erkennen von Engpässen aktiv unterstützt werden. Aufgrund des dynamischen Charakters der Lösung muss sich der Bediener für eine Leistungsanalyse nicht auf historische Daten verlassen. Stattdessen kann er durch laufende Daten aus dem System von Softwaremodulen und Datenübertragungskanälen unterstützt werden.
  • Eine neue Stufe der Systemoptimierung kann durch diesen neuen Ansatz unter Verwendung der Graphentheorie erreicht werden, um Systemengpässe einzugrenzen und letztendlich zu beseitigen.
  • Gemäß einer bevorzugten Ausführungsform des Verfahrens kann der Knoten aus der Gruppe ausgewählt werden, die eine Datenquelle, z.B. eine Datenbank, einen Datenspeicher oder ein anderes Softwaremodul, ein Datenverarbeitungssystem, ein Datentransformationssystem, insbesondere ein Verarbeitungssoftwaremodul, und ein Benutzerschnittstellenmodul aufweist. Andere optionale Knotentypen können aus einem Netzwerkmodul, einem Middleware-Modul, einem Speichermodul oder ähnlichem ausgewählt werden. Folglich kann jede Komponente eines Datenverarbeitungssystems, insbesondere auf Software beruhende Knoten, als eine Quelle und eine Senke von Daten verwendet werden. Somit kann die vorgeschlagene Lösung an nahezu jede Systemarchitektur und -konfiguration anpassbar sein.
  • Gemäß einer anderen bevorzugten Ausführungsform des Verfahrens kann es sich bei der Datenquelle um eine Datenbank, ein Dateisystem, ein Inhaltsverwaltungssystem oder Streaming-Daten handeln. Die Daten können drahtgebunden oder drahtlos eingehen. Folglich kann das vorgeschlagene Verfahren auch in einem System verwendbar sein, das Softwaremodule aufweist, die durch mobile Technologien und/oder Cloud-Systeme verbunden sind. Auch können eingebettete Systeme von dem Verfahren unterstützt werden.
  • Gemäß einer zulässigen Ausführungsform des Verfahrens kann es sich bei mindestens einem der Softwaremodule um einen Mikrodienst handeln. Oder anders ausgedrückt, alle Typen von Softwaremodulen können von dem Verfahren als Knoten des Systems unterstützt werden.
  • Gemäß einer vorteilhaften Ausführungsform des Verfahrens kann das Analysieren des Ressourcenverbrauchs das Verfolgen und Melden der fehlenden Unterstützung einer Ressource über einen Zeitraum aufweisen. Diese zeitliche Entwicklung kann beobachtet werden. Möglicherweise wird festgestellt, dass der Engpass mit der Zeit langsam größer wird. Eine auf einer Zeitreihe beruhende Analyse kann dabei helfen, die eigentliche Ursache des Engpasses viel schneller zu ermitteln.
  • Gemäß einer zusätzlich bevorzugten Ausführungsform des Verfahrens kann das Analysieren des Ressourcenverbrauchs das Festlegen einer Empfehlung aufweisen, um der fehlenden Unterstützung einer Ressource entgegenzuwirken. Hierfür kann es eine Wissensdatenbank, versehen mit typischen Systemengpässen, geben, die von anderen Systemen bekannt sind. Kombinationen von Ressourcenknappheit verschiedener Ressourcen können kombiniert werden, und ein Mustervergleich kann unter Verwendung der tatsächlichen und der in der Wissensdatenbank verfügbaren Ressourcenmessungen angewendet werden. Folglich kann ein Bediener direkte Empfehlungen für eine Systemoptimierung erhalten, ohne die Analyse selbst durchzuführen.
  • Durch den Austausch der Erfahrungen mit einer Beseitigung eines Engpasses über die Wissensdatenbank und die Bereitstellung der so erweiterten Wissensdatenbank für andere Bediener können das Wissen und das Know-how verbreitet werden, was eine selbstlernende Umgebung derjenigen Umsetzungen bedeutet, die den Inhalt ihrer Wissensdatenbanken teilen.
  • Gemäß einer zulässigen Ausführungsform des Verfahrens kann das Analysieren des Ressourcenverbrauchs das Verlagern des Softwaremoduls auf ein anderes Datenverarbeitungssystem aufweisen. Dies kann eine erhebliche Auswirkung auf die Gesamtleistung haben. Wenn das andere Datenverarbeitungssystem möglicherweise mehr Ressourcen zur Verfügung hat oder völlig ungenutzt ist, kann dies mit einem nur geringen Datenübertragungsaufwand einhergehen. Wenn das Softwaremodul jedoch sehr ressourcenintensiv ist - z.B. weil es ein zahlenverarbeitendes Anwendungsmodul sein kann - und daher in Konflikt mit konkurrierenden Softwaremodulen auf dem ursprünglichen Datenverarbeitungssystem steht, kann eine Übertragung auf ein freies und unbenutztes Datenverarbeitungssystem die Gesamtleistung eines Systems von Softwaremodulen drastisch erhöhen.
  • Gemäß einer anderen bevorzugten Ausführungsform des Verfahrens kann das Analysieren des Ressourcenverbrauchs das Vorhersagen aufweisen, wie das System auf Änderungen in den Ressourcen reagieren wird. Dies kann die Verfügbarkeit, Menge oder Geschwindigkeit von Komponenten oder Ressourcen aufweisen. Es kann auch eine Widerspiegelung einer Änderung in konkurrierenden Softwaremodulen für dieselbe Ressource aufweisen. Dazu kann es erforderlich sein, dass das Verfahren das Verfolgen und Melden eines anderen Softwaremoduls aufweist, das um die fehlenden Ressourcen auf demselben Datenverarbeitungssystem konkurriert. Daher kann dies eine recht leistungsfähige Optimierungstechnik zum Beseitigen von Engpässen in einem System sein, das eine Vielzahl von Softwaremodulen aufweist.
  • Im Folgenden wird eine ausführliche Beschreibung der Figuren angeführt. Sämtliche Anweisungen in den Figuren sind schematisch. Zuerst wird ein Blockschaubild einer Ausführungsform des erfindungsgemäßen Verfahrens zum Erkennen eines Engpasses in einem System angeführt. Danach werden weitere Ausführungsformen sowie Ausführungsformen des Engpassermittlungssystems zum Erkennen eines Engpasses in einem System beschrieben.
  • 1 zeigt ein Blockschaubild einer Ausführungsform des Verfahrens 100 zum Erkennen eines Engpasses in einem System. Bei dem System kann es sich um ein Computersystem, ein Computersystem mit angeschlossener Peripherieeinheit, ein Netzwerk von Computern, eine Vielzahl von Mikrodiensten, ein komplettes Software-Anwendungssystem und dergleichen handeln. Das System weist mindestens ein Softwaremodul auf, insbesondere eine Vielzahl von Softwaremodulen, die über Datenübertragungskanäle Daten miteinander austauschen. Dabei kann es sich um Leitungen oder Anschlüsse auf Systemebene und dergleichen handeln, die einem Fachmann bestens bekannt sind. Das Verfahren weist das Empfangen, 102, eines Graphen auf. Ein Knoten stellt eines der Softwaremodule dar, und eine Kante stellt einen der Datenübertragungskanäle mit einem Datenfluss von einem sendenden Softwaremodul aus den Softwaremodulen zu einem empfangenden Softwaremodul aus den Softwaremodulen dar. Der Knoten, der ein Softwaremodul darstellt und als sendendes Softwaremodul und empfangendes Softwaremodul zur gleichen Zeit dient, bezieht sich auf einen vordefinierten Faktor, der ein erwartetes Verhältnis einer empfangenen Menge von Eingabedaten zu einer erzeugten Menge von Ausgabedaten darstellt, die aus den Eingabedaten abgeleitet werden.
  • Das Verfahren weist auch das Überwachen, 104, für jedes Softwaremodul für ausgewählte Ressourcen - z.B. Menge an RAM, Anzahl von CPUs, Kerne, Threads, Kerne, Co-Prozessor(en), andere Beschleuniger, E/A-Geschwindigkeiten, parallele Threads pro CPU, E/A-Raten usw. - eines Verhältnisses einer Menge der von dem Softwaremodul verbrauchten Ressourcen zu einer verfügbaren Menge der Ressourcen auf.
  • Das Verfahren kann darüber hinaus für jeden Datenübertragungskanal das Überwachen, 106, eines Verhältnisses einer von einem der Datenübertragungskanäle verbrauchten Bandbreite zu einer verfügbaren Bandbreite des Datenübertragungskanals und einer Menge an Leerlaufzeit des Datenübertragungskanals und für ein Softwaremodul im Leerlaufmodus das Durchlaufen, 108, des Graphen zum Ermitteln eines Quellsoftwaremoduls aufweisen, dessen erzeugte Ausgabemenge unter der Ausgabemenge liegt, die von dem Softwaremodul benötigt wird, das sich im Leerlaufmodus befindet. Zu guter Letzt weist das Verfahren das Analysieren, 110, eines Ressourcenverbrauchs des ermittelten Quellsoftwaremoduls auf, um eine fehlende Menge an Ressourcen für das ermittelte Quellsoftwaremodul zu ermitteln. Auf diese Weise können alle oben genannten Vorteile erfahren werden.
  • 2 zeigt ein Beispiel eines Graphen 200, der als allgemeines Modell für das aktuell vorgeschlagene Konzept nützlich ist. Der Graph 200 weist exemplarische Knoten 202, 204, 206, 208, 210, 212, 214 im Sinne des mathematischen Konzepts eines Graphen auf. Zwischen den Knoten 202, ..., 214 befinden sich Verknüpfungen 216, 218, 220, 222, 224, 226 und 228. Die Verknüpfungen können als Datenübertragungsverbindungen oder Datenübertragungskanäle verstanden werden, die eine Übertragung von Informationen zwischen den Knoten zulassen. Die Knoten können - im Kontext dieser Anmeldung - als die Softwaremodule verstanden werden.
  • 3 zeigt ein Blockschaubild einer Ausführungsform eines Systems, das ein Netzwerk 300 von Elementen aufweist. Dies kann als Anwendung des Graphenkonzepts auf eine reale Anwendung 302 betrachtet werden.
  • Es kann Softwaremodule geben, die durch die Bezugszahlen 304, 306 und 308 dargestellt werden. Das Softwaremodul 306 kann z.B. einen Datenspeicher wie eine Datenbank darstellen. Der Datenübertragungskanal 312 kann Daten von einem sendenden Teil des Softwaremoduls 306 an einen empfangenden Teil des Softwaremoduls 304 übertragen. Das Softwaremodul 304 kann ein Verarbeitungsmodul 304 oder ein Transaktionsmodul 304 darstellen, das - unter Verwendung eines sendenden Teils - Daten von dem Verarbeitungsmodul 304 an das Softwaremodul 308 senden kann, das eine Benutzerschnittstelle darstellen kann. Die Daten können unter Verwendung des Datenübertragungskanals 310 gesendet werden.
  • Obwohl dieses Beispielnetzwerk von Softwaremodulen, das durch die Knoten 304, 306, 308 dargestellt wird, nur zwei Datenübertragungskanäle 312 und 310 aufweist, kann es sehr schwierig sein, dynamische Leistungsprobleme oder Engpässe zu erkennen, einzugrenzen und zu beseitigen. Dies kann auch durch die Rückkopplungsschleife des Datenübertragungskanals 314 von dem Benutzerschnittstellen-Softwaremodul 308 zu dem Transaktionssoftwaremodul 304 angedeutet werden.
  • In Wirklichkeit kann das Netzwerk von voneinander abhängigen Softwaremodulen sehr viel größer sein und mehr Knoten, d.h. Softwaremodule, und mehr Verbindungen, d.h. Datenübertragungskanäle, aufweisen. Das grundlegende erfindungsgemäße Konzept kann jedoch unter Verwendung dieses einfacheren Modells veranschaulicht werden.
  • In der aktuellen Ausführungsform kann davon ausgegangen werden, dass das Verarbeitungssoftwaremodul 304 und das Benutzerschnittstellen-Softwaremodul dieselbe Maschine belegen und über IPC Daten miteinander austauschen (Interprozesskommunikation, z.B. UNIX-Domain-Sockets). Es muss nicht erforderlich sein, dass jedes Softwaremodul auf einem separaten Computer ausgeführt wird.
  • Die vorgeschlagene Lösung überwacht - wie vorstehend erwähnt - ununterbrochen den Ressourcenverbrauch für jeden Knoten oder jedes Softwaremodul und Datenflüsse zu/von den Knoten oder Softwaremodulen, von denen einige ausschließlich Sender sein können, wie die Datenbank 306. Andere Softwaremodule können ausschließlich oder hauptsächlich Empfänger sein, z.B. das Benutzerschnittstellen-Softwaremodul 308.
  • Wenn man das Benutzerschnittstellen- (UI-) Modul 308 beobachtet und feststellt, dass es auf Daten wartet, kann man möglicherweise auch feststellen, dass das Verarbeitungssoftwaremodul 304 ebenfalls auf Daten wartet. Aus diesem Status kann man ermitteln, dass das UI-Softwaremodul 308 und das Verarbeitungssoftwaremodul 304 auf Daten aus dem Datenbank- (DB-) Softwaremodul 306 warten, das wiederum nicht auf Daten von irgendeiner anderen Komponente oder irgendeinem anderen Softwaremodulen warten kann, da es ein Endpunkt des Graphen 300 ist. Deshalb weist das DB-Softwaremodul 306 einen möglichen Engpass auf. Eine weitere Untersuchung oder Metriken und eine Analyse können zeigen, dass die Platten-E/A die Ressource ist, die in fast 100% der Fälle genutzt wird. Daher wird eine Empfehlung erzeugt, Maßnahmen zum Erhöhen der E/A-Geschwindigkeit der Ressourcenplatte zu ergreifen, die das DB-Softwaremodul 306 betrifft. Eine zugehörige Meldung an einen Bediener kann so aussehen: „Die DB scheint eine Engpasskomponente aufgrund intensiver E/A aufzuweisen. Es wurde festgestellt, dass der zweitgrößte E/A-Verbraucher auf der Maschine ein Prozess namens Apache ist (E/A-Auslastung 10%). Sie können erwägen, ihn anzuhalten oder, wenn möglich, seine Ressourcen einzuschränken oder ihn auf ein anderes Computersystem zu migrieren.“
  • In einem anderen Beispiel, das sich auf die gleiche Ausführungsform bezieht, wird möglicherweise festgestellt, dass das UI-Softwaremodul 308 wartet und auch das DB-Softwaremodul 306 hauptsächlich im Leerlauf ist. Daraus ergibt sich die direkte Schlussfolgerung, dass es sich bei dem Verarbeitungssoftwaremodul 304 um einen möglichen Engpass handelt. Folglich kann das DB-Softwaremodul 306 Daten schneller erzeugen, als das Verarbeitungssoftwaremodul 304 sie verbrauchen kann, und/oder das UI-Softwaremodul 308 kann Daten schneller empfangen, als das Verarbeitungssoftwaremodul 304 sie übertragen kann. Eine Ressourcennutzungsanalyse zeigt, dass das Verarbeitungssoftwaremodul 304 mit dem UI-Softwaremodul 308 um RAM-Ressourcen konkurriert. Das Engpassermittlungssystem kann dann eine Meldung an einen Bediener mit Empfehlungen zur Erhöhung des RAM oder zur Verlagerung des UI-Softwaremoduls 308 oder des Verarbeitungssoftwaremoduls 304 auf ein anderes physisches Computersystem erzeugen. Beruhend auf diesen vereinfachten Beispielen und Ausführungsformen kann ein Fachmann komplexere Szenarien ableiten.
  • 4 zeigt eine Ausführungsform des erfindungsgemäßen Engpassermittlungssystems 400 zum Erkennen eines Engpasses in einem System, das Softwaremodule aufweist, die über Datenübertragungskanäle miteinander verbunden sind. Das Engpassermittlungssystem weist eine Empfangseinheit 402 auf, die für das Empfangen eines Graphen eingerichtet ist. Jeder Knoten stellt eines der Softwaremodule dar, und eine Kante stellt einen der Datenübertragungskanäle mit einem Datenfluss von einem sendenden Softwaremodul aus den Softwaremodulen zu einem empfangenden Softwaremodul aus den Softwaremodulen dar. Ein Knoten kann ein Softwaremodul darstellen, das sowohl als ein sendendes als auch als ein empfangendes Softwaremodul dient. Jeder Knoten kann sich auf einen vordefinierten Faktor beziehen, der ein erwartetes Verhältnis einer empfangenen Menge von Eingabedaten zu einer erzeugten Menge von Ausgabedaten darstellt, die aus den Eingabedaten abgeleitet werden.
  • Das Engpassermittlungssystem 400 weist auch eine Überwachungseinheit 404 auf, die für jedes Softwaremodul für ausgewählte Ressourcen zum Überwachen eines Verhältnisses einer Menge der von dem Softwaremodul verbrauchten Ressourcen zu einer verfügbaren Menge der Ressourcen eingerichtet ist. Die Überwachungseinheit 404 ist auch für jeden Datenübertragungskanal zum Überwachen eines Verhältnisses einer von einem der Datenübertragungskanäle verbrauchten Bandbreite zu einer verfügbaren Bandbreite auf dem Datenübertragungskanal und einer Menge an Leerlaufzeit des Datenübertragungskanals eingerichtet. Ein Durchlaufmodul 406 ist für ein Softwaremodul im Leerlaufmodus zum Durchlaufen des Graphen zum Ermitteln eines Quellsoftwaremoduls eingerichtet, dessen erzeugte Ausgabemenge unter der Ausgabemenge liegt, die von dem Softwaremodul, das sich im Leerlaufmodus befindet, benötigt wird, um es beschäftigt zu halten. Ein Analysemodul 408 ist zum Analysieren eines Ressourcenverbrauchs des ermittelten Quellsoftwaremoduls eingerichtet, um eine fehlende Menge an Ressourcen für das ermittelte Quellsoftwaremodul zu ermitteln.
  • Ausführungsformen der Erfindung können gemeinsam mit nahezu jedem beliebigen Computertyp umgesetzt werden, unabhängig davon, ob die Plattform möglicherweise zum Speichern und/oder Ausführen von Programmcode geeignet ist.
  • 5 zeigt als Beispiel ein Datenverarbeitungssystem 500, das zum Ausführen von Programmcode in Bezug auf das vorgeschlagene Verfahren geeignet ist. Das Datenverarbeitungssystem 500 ist lediglich ein Beispiel eines geeigneten Computersystems und soll keinerlei Einschränkungen hinsichtlich des Anwendungsbereichs oder der Funktionalität von Ausführungsformen der hierin beschriebenen Erfindung andeuten. Trotzdem kann eine beliebige vorstehend dargelegte Funktionalität in dem Computersystem 500 umgesetzt und/oder von diesem durchgeführt werden. In dem Computersystem 500 gibt es Komponenten, die mit zahlreichen anderen Universal- bzw. Spezial-Datenverarbeitungssystem-Umgebungen bzw. Konfigurationen betriebsfähig sind. Zu Beispielen für allgemein bekannte Datenverarbeitungssysteme, Umgebungen und/oder Konfigurationen, die zur Verwendung mit dem Computersystem/Server 500 geeignet sein können, gehören Personal-Computer-Systeme, Server-Computersysteme, Thin Clients, Thick Clients, Handheld- bzw. Laptop-Geräte, Multiprozessorsysteme, auf Mikroprozessoren beruhende Systeme, Set-Top-Boxen, programmierbare Verbraucherelektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme sowie verteilte Cloud-Computing-Umgebungen, die irgendeine(s) der obigen Systeme bzw. Einheiten enthalten, u.ä., aber nicht darauf beschränkt. Das Computersystem/der Server 500 kann in dem allgemeinen Kontext von durch Computersysteme ausführbaren Anweisungen, z.B. durch Programmmodule, beschrieben werden, die von einem Computersystem 500 ausgeführt werden. Allgemein können zu Programmmodulen Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und so weiter gehören, die bestimmte Aufgaben durchführen bzw. bestimmte abstrakte Datentypen umsetzen. Das Computersystem/der Server 500 kann in verteilten Cloud-Computing-Umgebungen ausgeführt werden, wo Aufgaben durch ferne Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl in lokalen als auch in fernen Computersystem-Speichermedien befinden, darunter Arbeitsspeichereinheiten.
  • Wie in der Figur gezeigt, ist ein Computersystem/Server 500 in Form einer Universal-Datenverarbeitungseinheit gezeigt. Die Komponenten des Computersystems/Servers 500 können eine(n) oder mehrere Prozessoren oder Verarbeitungseinheiten 502, einen Systemspeicher 504 und einen Bus 506 aufweisen, der verschiedene Systemkomponenten, darunter den Systemspeicher 504, mit dem Prozessor 502 verbindet, sind aber nicht darauf beschränkt. Der Bus 506 stellt eine oder mehrere einer beliebigen von mehreren Arten von Busstrukturen dar, darunter ein Speicherbus oder eine Speichersteuereinheit, ein Peripheriebus, ein beschleunigter Grafikanschluss und ein Prozessor- oder lokaler Bus, die eine beliebige aus einer Vielfalt von Busarchitekturen verwenden. Zu derartigen Architekturen gehören als Beispiel und nicht als Einschränkung ein ISA-Bus (Industry Standard Architecture), ein MCA-Bus (Micro Channel Architecture), ein EISA-Bus (Enhanced ISA), ein VESA-Lokalbus (Video Electronics Standards Association) sowie ein PCI-Bus (Peripheral Component Interconnects). Das Computersystem/der Server 500 beinhaltet üblicherweise eine Vielfalt von durch ein Computersystem lesbaren Medien. Bei derartigen Medien kann es sich um jedes beliebige Medium handeln, auf welches das Computersystem/der Server 500 zugreifen kann, und es beinhaltet sowohl flüchtige als auch nichtflüchtige Medien, austauschbare und nicht austauschbare Medien.
  • Der Systemspeicher 504 kann durch ein Computersystem lesbare Medien in Form eines flüchtigen Speichers wie einen Direktzugriffsspeicher (RAM) 508 und/oder einen Cachespeicher 510 beinhalten. Das Computersystem/der Server 500 kann darüber hinaus andere austauschbare/nicht austauschbare, flüchtige/nichtflüchtige Computersystem-Speichermedien beinhalten. Lediglich als Beispiel kann das Speichersystem 512 zum Lesen von und zum Schreiben auf ein nicht austauschbares, nichtflüchtiges magnetisches Medium bereitgestellt werden (das nicht gezeigt ist und üblicherweise ,Festplattenlaufwerk' genannt wird). Es können auch ein Magnetplattenlaufwerk zum Lesen von und Schreiben auf eine austauschbare, nichtflüchtige Magnetplatte (z.B. eine ,Floppy-Diskette') und ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf eine austauschbare, nichtflüchtige optische Platte wie eine CD-ROM, DVD-ROM oder ein anderes optisches Medium bereitgestellt werden, auch wenn diese nicht gezeigt sind. In derartigen Fällen können sie jeweils über eine oder mehrere Datenmedienschnittstellen mit dem Bus 506 verbunden sein. Wie nachfolgend weiter abgebildet und beschrieben wird, kann der Systemspeicher 504 mindestens ein Programmprodukt enthalten, das einen Satz von Programmmodulen (z.B. mindestens einen) aufweist, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
  • Als Beispiel und nicht als Einschränkung können ein Programm/Dienstprogramm 514 mit (mindestens) einem Satz von Programmmodulen 516 sowie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten in dem Speicher 504 gespeichert sein. Jedes der Betriebssysteme, ein oder mehrere Anwendungsprogramme, andere Programmmodule und die Programmdaten oder eine beliebige Kombination daraus können eine Umsetzung einer Netzwerkumgebung enthalten. Die Programmmodule 516 führen allgemein die hierin beschriebenen Funktionen und/oder Methodiken von Ausführungsformen der Erfindung aus.
  • Das Computersystem/der Server 500 kann auch mit einer oder mehreren externen Einheiten 518 wie einer Tastatur, einer Zeigeeinheit, einer Anzeige 520 usw., einer oder mehreren Einheiten, die es einem Benutzer ermöglichen, mit dem Computersystem/Server 500 Daten auszutauschen, und/oder beliebigen Einheiten (z.B. Netzwerkkarten, Modems usw.) Daten austauschen, die es dem Computersystem/Server 500 ermöglichen, mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten auszutauschen. Ein derartiger Datenaustausch kann über die Eingabe/Ausgabe- (E/A-) Schnittstellen 514 erfolgen. Außerdem kann das Computersystem/der Server 500 über den Netzwerkadapter 522 mit einem oder mehreren Netzwerken Daten austauschen, wie zum Beispiel einem lokalen Netzwerk (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netzwerk (z.B. dem Internet). Wie abgebildet ist, kann der Netzwerkadapter 522 mit den anderen Komponenten des Computersystems/Servers 500 über den Bus 506 Daten austauschen. Es sollte klar sein, dass andere Hardware- und/oder SoftwareKomponenten in Verbindung mit dem Computersystem/Server 500 verwendet werden könnten, auch wenn diese nicht gezeigt sind. Zu Beispielen gehören folgende, ohne auf diese beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Festplattenlaufwerk-Arrays, RAID-Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw.
  • Zusätzlich kann das Engpassermittlungssystem 400 zum Erkennen eines Engpasses in einem System an das Bussystem 506 angeschlossen sein.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zwecke der Veranschaulichung aufgeführt, sollen jedoch nicht gesamthaft stehen für bzw. begrenzt sein auf die offenbarten Ausführungsformen. Für Fachleute werden viele Abänderungen und Abweichungen ersichtlich sein, ohne von dem Umfang und dem Gedanken der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung von auf dem Markt vorgefundenen Technologien bestmöglich zu erläutern oder um es anderen Fachleuten zu ermöglichen, die hierin offenbarten Ausführungsformen zu verstehen.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) beinhalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem Medium kann es sich um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem für ein Verbreitungsmedium handeln. Zu Beispielen für ein durch einen Computer lesbares Medium zählen ein Halbleiter- oder Festkörperspeicher, Magnetband, eine auswechselbare Computerdiskette, Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), eine starre Magnetplatte und eine optische Platte. Zu aktuellen Beispielen optischer Platten gehören ein Kompaktdisk-Nur-Lese-Speicher (CD-ROM), eine Lesen/Schreiben-Kompaktdisk (CD-R/W), eine DVD und eine Blu-Ray-Disk.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern durch durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und/oder die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die hierin verwendete Terminologie dient lediglich dem Zweck des Beschreibens bestimmter Ausführungsformen und soll die Erfindung nicht einschränken. Die Verwendung der Singularform „ein“, „eine“ bzw. „der“, „die“, „das“ hierin soll ebenfalls die Pluralformen einschließen, es sei denn, etwas anderes ergibt sich deutlich aus dem Zusammenhang. Es wird ferner darauf hingewiesen, dass die Begriffe „aufweisen“ und/oder „aufweisend“, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein von aufgeführten Eigenschaften, ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten angeben, jedoch nicht das Vorhandensein oder das Hinzufügen einer oder mehrerer anderer Eigenschaften, ganzer Zahlen, Schritte, Operationen, Elemente, Komponenten und/oder Gruppen hiervon ausschließen.
  • Die in den nachfolgenden Ansprüchen etwa vorhandenen, entsprechenden Strukturen, Materialien, Schritte und Entsprechungen aller Mittel oder Step-plusfunction-Elemente verstehen sich dahingehend, dass sie jede beliebige Struktur, jedes beliebige Material bzw. jeden beliebigen Schritt zur Durchführung der Funktion in Kombination mit anderen beanspruchten Elementen nach Maßgabe der konkreten Beanspruchung aufweisen. Die Beschreibung der vorliegenden Erfindung wurde zum Zwecke der Veranschaulichung und Beschreibung aufgeführt, soll jedoch nicht gesamthaft stehen für bzw. begrenzt sein auf die Erfindung in der beschriebenen Form. Für Fachleute werden viele Abänderungen und Abweichungen ersichtlich sein, ohne von dem Umfang und dem Gedanken der Erfindung abzuweichen. Die Ausführungsformen werden gewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung bestmöglich zu erläutern und um es anderen Fachleuten zu ermöglichen, die Erfindung für verschiedene Ausführungsformen mit verschiedenen Abänderungen, die für eine bestimmte in Betracht gezogene Verwendung geeignet sind, zu verstehen.

Claims (19)

  1. Verfahren zum Erkennen eines Engpasses in einem System, das Softwaremodule aufweist, die über Datenübertragungskanäle Daten miteinander austauschen, das Verfahren aufweisend: Empfangen eines Graphen, wobei ein Knoten eines der Softwaremodule darstellt, und eine Kante einen der Datenübertragungskanäle mit einem Datenfluss von einem sendenden Softwaremodul aus den Softwaremodulen zu einem empfangenden Softwaremodul aus den Softwaremodulen darstellt, und wobei ein Knoten, der ein Softwaremodul darstellt, das als sendendes Softwaremodul und als empfangendes Softwaremodul dient, sich auf einen vorbestimmten Faktor bezieht, der ein erwartetes Verhältnis einer empfangenen Menge von Eingabedaten zu einer erzeugten Menge von Ausgabedaten darstellt, die aus den Eingabedaten abgeleitet werden; für jedes Softwaremodul für ausgewählte Ressourcen Überwachen eines Verhältnisses einer Menge der von dem Softwaremodul verbrauchten Ressourcen zu einer verfügbaren Menge der Ressourcen; für jeden Datenübertragungskanal Überwachen eines Verhältnisses einer von einem der Datenübertragungskanäle verbrauchten Bandbreite zu einer verfügbaren Bandbreite des Datenübertragungskanals und einer Menge an Leerlaufzeit des Datenübertragungskanals; für ein Softwaremodul im Leerlaufmodus Durchlaufen des Graphen zum Ermitteln eines Quellsoftwaremoduls, dessen erzeugte Ausgabemenge unter der Ausgabemenge liegt, die von dem Softwaremodul benötigt wird, das sich im Leerlaufmodus befindet; und Analysieren eines Ressourcenverbrauchs des ermittelten Quellsoftwaremoduls, um eine fehlende Menge an Ressourcen für das ermittelte Quellsoftwaremodul zu ermitteln.
  2. Verfahren nach Anspruch 1, wobei der Knoten aus der Gruppe ausgewählt wird, die eine Datenquelle, ein Datenverarbeitungssystem und eine Benutzerschnittstelle aufweist.
  3. Verfahren nach Anspruch 1 oder 2, wobei es sich bei der Datenquelle um eine Datenbank, ein Dateisystem, ein Inhaltsverwaltungssystem oder eine Streaming-Datenschnittstelle handelt.
  4. Verfahren nach einem der Ansprüche 1 bis 3, wobei es sich bei mindestens einem der Softwaremodule um einen Mikrodienst handelt.
  5. Verfahren nach einem der Ansprüche 1 bis 4, wobei das Analysieren eines Ressourcenverbrauchs das Verfolgen und Melden der fehlenden Unterstützung einer Ressource über einen Zeitraum aufweist.
  6. Verfahren nach einem der Ansprüche 1 bis 5, wobei das Analysieren eines Ressourcenverbrauchs das Festlegen einer Empfehlung aufweist, um der fehlenden Unterstützung einer Ressource entgegenzuwirken.
  7. Verfahren nach einem der Ansprüche 1 bis 6, wobei das Analysieren eines Ressourcenverbrauchs das Verlagern des Softwaremoduls auf ein anderes Datenverarbeitungssystem aufweist.
  8. Verfahren nach einem der Ansprüche 1 bis 7, wobei das Analysieren eines Ressourcenverbrauchs das Vorhersagen aufweist, wie das System auf Änderungen in den Ressourcen reagieren wird.
  9. Verfahren nach einem der Ansprüche 1 bis 8, wobei das Analysieren des Ressourcenverbrauchs das Verfolgen und Melden eines anderen Softwaremoduls aufweist, das um die fehlenden Ressourcen auf demselben Datenverarbeitungssystem konkurriert.
  10. Engpassermittlungssystem zum Erkennen eines Engpasses in einem System, das Softwaremodule aufweist, die über Datenübertragungskanäle Daten miteinander austauschen, das Engpassermittlungssystem aufweisend: eine Empfangseinheit, die zum Empfangen eines Graphen eingerichtet ist, wobei ein Knoten eines der Softwaremodule darstellt, und eine Kante einen der Datenübertragungskanäle mit einem Datenfluss von einem sendenden Softwaremodul aus den Softwaremodulen zu einem empfangenden Softwaremodul aus den Softwaremodulen darstellt, und wobei ein Knoten, der ein Softwaremodul darstellt, das als sendendes Softwaremodul und als empfangendes Softwaremodul dient, sich auf einen vorbestimmten Faktor bezieht, der ein erwartetes Verhältnis einer empfangenen Menge von Eingabedaten zu einer erzeugten Menge von Ausgabedaten darstellt, die aus den Eingabedaten abgeleitet werden; eine Überwachungseinheit, die für jedes Softwaremodul für ausgewählte Ressourcen zum Überwachen eines Verhältnisses einer Menge der von dem Softwaremodul verbrauchten Ressourcen zu einer verfügbaren Menge der Ressourcen eingerichtet ist, wobei die Überwachungseinheit für jeden Datenübertragungskanal auch zum Überwachen eines Verhältnisses einer von einem der Datenübertragungskanäle verbrauchten Bandbreite zu einer verfügbaren Bandbreite auf dem Datenübertragungskanal und einer Menge an Leerlaufzeit des Datenübertragungskanals eingerichtet ist; ein Durchlaufmodul, das für ein Softwaremodul im Leerlaufmodus zum Durchlaufen des Graphen zum Ermitteln eines Quellsoftwaremoduls eingerichtet ist, dessen erzeugte Ausgabemenge unter der Ausgabemenge liegt, die von dem Softwaremodul benötigt wird, das sich im Leerlaufmodus befindet; und ein Analysemodul, das zum Analysieren eines Ressourcenverbrauchs des ermittelten Quellsoftwaremoduls eingerichtet ist, um eine fehlende Menge an Ressourcen für das ermittelte Quellsoftwaremodul zu ermitteln.
  11. Engpassermittlungssystem nach Anspruch 10, wobei der Knoten aus der Gruppe ausgewählt wird, die eine Datenquelle, ein Datenverarbeitungssystem und eine Benutzerschnittstelle aufweist.
  12. Engpassermittlungssystem nach einem der Ansprüche 10 bis 11, wobei es sich bei der Datenquelle um eine Datenbank, ein Dateisystem, ein Inhaltsverwaltungssystem oder eine Streaming-Datenschnittstelle handelt.
  13. Engpassermittlungssystem nach einem der Ansprüche 10 bis 12, wobei es sich bei mindestens einem der Softwaremodule um einen Mikrodienst handelt.
  14. Engpassermittlungssystem nach einem der Ansprüche 10 bis 13, wobei das Analysemodul auch zum Verfolgen und Melden der fehlenden Unterstützung einer Ressource über einen Zeitraum eingerichtet ist.
  15. Engpassermittlungssystem nach einem der Ansprüche 10 bis 14, wobei das Analysemodul auch zum Festlegen einer Empfehlung eingerichtet ist, um der fehlenden Unterstützung einer Ressource entgegenzuwirken.
  16. Engpassermittlungssystem nach einem der Ansprüche 10 bis 15, wobei das Analysemodul auch zum Verlagern des Softwaremoduls auf ein anderes Datenverarbeitungssystem eingerichtet ist.
  17. Engpassermittlungssystem nach einem der Ansprüche 10 bis 16, wobei das Analysemodul auch zum Vorhersagen, wie das System auf Änderungen in den Ressourcen reagieren wird, eingerichtet ist.
  18. Engpassermittlungssystem nach einem der Ansprüche 10 bis 17, wobei das Analysemodul auch zum Verfolgen und Melden eines anderen Softwaremoduls eingerichtet ist, das um die fehlenden Ressourcen auf demselben Datenverarbeitungssystem konkurriert.
  19. Computerprogrammprodukt zum Erkennen eines Engpasses in einem System, das Softwaremodule aufweist, die über Datenübertragungskanäle Daten miteinander austauschen, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium mit darauf enthaltenen Programmbefehlen aufweist, wobei die Programmbefehle von einem oder mehreren Computersystemen ausführbar sind, um das eine oder die mehreren Computersysteme zu veranlassen zum: Empfangen eines Graphen, wobei ein Knoten eines der Softwaremodule darstellt, und eine Kante einen der Datenübertragungskanäle mit einem Datenfluss von einem sendenden Softwaremodul aus den Softwaremodulen zu einem empfangenden Softwaremodul aus den Softwaremodulen darstellt, und wobei ein Knoten, der ein Softwaremodul darstellt, das als sendendes Softwaremodul und als empfangendes Softwaremodul dient, sich auf einen vorbestimmten Faktor bezieht, der ein erwartetes Verhältnis einer empfangenen Menge von Eingabedaten zu einer erzeugten Menge von Ausgabedaten darstellt, die aus den Eingabedaten abgeleitet werden; für jedes Softwaremodul für ausgewählte Ressourcen Überwachen eines Verhältnisses einer Menge der von dem Softwaremodul verbrauchten Ressourcen zu einer verfügbaren Menge der Ressourcen; für jeden Datenübertragungskanal Überwachen eines Verhältnisses einer von einem der Datenübertragungskanäle verbrauchten Bandbreite zu einer verfügbaren Bandbreite auf dem Datenübertragungskanal und einer Menge an Leerlaufzeit des Datenübertragungskanals; für ein Softwaremodul im Leerlaufmodus Durchlaufen des Graphen zum Ermitteln eines Quellsoftwaremoduls, dessen erzeugte Ausgabemenge unter der Ausgabemenge liegt, die von dem Softwaremodul benötigt wird, das sich im Leerlaufmodus befindet; und Analysieren eines Ressourcenverbrauchs des ermittelten Quellsoftwaremoduls, um eine fehlende Menge an Ressourcen für das ermittelte Quellsoftwaremodul zu ermitteln.
DE112017001376.3T 2016-06-15 2017-06-08 Erkennen und Vorhersagen von Engpässen in komplexen Systemen Pending DE112017001376T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/182,766 2016-06-15
US15/182,766 US11093836B2 (en) 2016-06-15 2016-06-15 Detecting and predicting bottlenecks in complex systems
PCT/IB2017/053390 WO2017216688A1 (en) 2016-06-15 2017-06-08 Detecting and predicting bottlenecks in complex systems

Publications (1)

Publication Number Publication Date
DE112017001376T5 true DE112017001376T5 (de) 2018-11-29

Family

ID=60659669

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017001376.3T Pending DE112017001376T5 (de) 2016-06-15 2017-06-08 Erkennen und Vorhersagen von Engpässen in komplexen Systemen

Country Status (6)

Country Link
US (1) US11093836B2 (de)
JP (1) JP6823670B2 (de)
CN (1) CN109074300A (de)
DE (1) DE112017001376T5 (de)
GB (1) GB2567570B (de)
WO (1) WO2017216688A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11093836B2 (en) * 2016-06-15 2021-08-17 International Business Machines Corporation Detecting and predicting bottlenecks in complex systems
RU2698416C1 (ru) * 2018-10-04 2019-08-26 Акционерное общество "РОТЕК" (АО "РОТЕК") Способ мониторинга и прогнозирования состояния отдельных агрегатов и сложных технологических комплексов при помощи семантически-ориентированного искусственного интеллекта
JP2021185652A (ja) * 2020-05-25 2021-12-09 日本電気株式会社 パケット伝送システム、伝送装置、伝送経路切替方法及び伝送経路切替プログラム
US11805076B2 (en) 2020-08-21 2023-10-31 Kyndryl, Inc. Microservice placement in hybrid multi-cloud using graph matching
JP2022080545A (ja) 2020-11-18 2022-05-30 富士通株式会社 サービス管理装置、サービス管理方法、及びサービス管理プログラム
US20220318117A1 (en) * 2021-04-06 2022-10-06 EMC IP Holding Company LLC Method to identify the performance bottle neck in the complex enterprise virtualized environment

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3537356B2 (ja) 1998-12-09 2004-06-14 株式会社日立製作所 ジョブシステムにおける遅延要因解析方法
US7424528B2 (en) * 2002-11-27 2008-09-09 Hewlett-Packard Development Company, L.P. System and method for measuring the capacity of a streaming media server
US7469143B2 (en) * 2003-10-07 2008-12-23 Microsoft Corporation Model and method for computing performance bounds in multi-hop wireless networks
US7289947B2 (en) 2004-06-10 2007-10-30 International Business Machines Corporation Finding and removing performance bottlenecks in large systems
EP1917631A1 (de) 2005-08-25 2008-05-07 International Business Machines Corporation Verfahren und system zum anzeigen von leistungseinschränkungen in einem fluss-design-werkzeug
US8104041B2 (en) 2006-04-24 2012-01-24 Hewlett-Packard Development Company, L.P. Computer workload redistribution based on prediction from analysis of local resource utilization chronology data
US7496683B2 (en) * 2006-07-27 2009-02-24 International Business Machines Corporation Maximization of sustained throughput of distributed continuous queries
US8225291B2 (en) 2008-01-04 2012-07-17 International Business Machines Corporation Automated detection of application performance bottlenecks
JP4872945B2 (ja) * 2008-02-25 2012-02-08 日本電気株式会社 運用管理装置、運用管理システム、情報処理方法、及び運用管理プログラム
WO2009108344A1 (en) * 2008-02-29 2009-09-03 Vkernel Corporation Method, system and apparatus for managing, modeling, predicting, allocating and utilizing resources and bottlenecks in a computer network
US8276035B1 (en) * 2008-07-28 2012-09-25 Netmotion Wireless, Inc. High performance digital communications resiliency in a roamable virtual private network
US8095507B2 (en) * 2008-08-08 2012-01-10 Oracle International Corporation Automated topology-based statistics monitoring and performance analysis
US8527238B2 (en) * 2008-09-30 2013-09-03 Microsoft Corporation Storage input/output utilization associated with a software application
JP5428075B2 (ja) * 2009-04-17 2014-02-26 株式会社日立製作所 性能モニタリングシステム、ボトルネック判定方法及び管理計算機
CN101604287A (zh) 2009-07-14 2009-12-16 浪潮电子信息产业股份有限公司 一种基于硬件计数器获取性能数据实现动态优化服务器性能的方法
US20110202650A1 (en) * 2010-02-12 2011-08-18 Brocade Communications Systems, Inc. Method and system for monitoring data flows in a network
US8738972B1 (en) * 2011-02-04 2014-05-27 Dell Software Inc. Systems and methods for real-time monitoring of virtualized environments
US8782656B2 (en) 2011-02-24 2014-07-15 International Business Machines Corporation Analysis of operator graph and dynamic reallocation of a resource to improve performance
US8756310B2 (en) 2011-03-09 2014-06-17 International Business Machines Corporation Comprehensive bottleneck detection in a multi-tier enterprise storage system
US9804893B2 (en) 2011-04-08 2017-10-31 Qualcomm Incorporated Method and apparatus for optimized execution using resource utilization maps
US9015289B2 (en) * 2012-04-12 2015-04-21 Netflix, Inc. Method and system for evaluating the resiliency of a distributed computing service by inducing a latency
GB2506164A (en) * 2012-09-24 2014-03-26 Ibm Increased database performance via migration of data to faster storage
US8954381B1 (en) * 2012-09-27 2015-02-10 Emc Corporation Determining data movements in a multi-tiered storage environment
EP2948845A4 (de) 2013-01-26 2016-09-07 F5 Networks Inc Verfahren und systeme zur erkennung, lokalisierung und sanierung einer überlasteten ressource oder strömung in einer virtuellen infrastruktur
US9665474B2 (en) 2013-03-15 2017-05-30 Microsoft Technology Licensing, Llc Relationships derived from trace data
US9471375B2 (en) * 2013-12-19 2016-10-18 International Business Machines Corporation Resource bottleneck identification for multi-stage workflows processing
US9424160B2 (en) 2014-03-18 2016-08-23 International Business Machines Corporation Detection of data flow bottlenecks and disruptions based on operator timing profiles in a parallel processing environment
CN103870374A (zh) 2014-03-27 2014-06-18 浪潮电子信息产业股份有限公司 一种分析在Linux系统测试环境服务器性能瓶颈的方法
US20150373071A1 (en) 2014-06-19 2015-12-24 International Business Machines Corporation On-demand helper operator for a streaming application
CN105511957B (zh) 2014-09-25 2019-05-07 国际商业机器公司 用于生成作业告警的方法和系统
US10009397B2 (en) * 2014-10-13 2018-06-26 Blue Jeans Network, Inc. Optimizing teleconferencing using transparent relays
US10091063B2 (en) * 2014-12-27 2018-10-02 Intel Corporation Technologies for directed power and performance management
US20160261523A1 (en) * 2015-03-06 2016-09-08 Apollo Education Group, Inc. Dynamically tuning system components for improved overall system performance
US10007580B2 (en) * 2016-04-11 2018-06-26 International Business Machines Corporation Assigning storage locations based on a graph structure of a workload
US11093836B2 (en) * 2016-06-15 2021-08-17 International Business Machines Corporation Detecting and predicting bottlenecks in complex systems
US10320957B2 (en) * 2016-09-01 2019-06-11 International Business Machines Corporation Increasing data resiliency operations based on identifying bottleneck operators

Also Published As

Publication number Publication date
GB201900356D0 (en) 2019-02-27
US20170364811A1 (en) 2017-12-21
US11093836B2 (en) 2021-08-17
JP6823670B2 (ja) 2021-02-03
GB2567570B (en) 2021-09-01
JP2019525285A (ja) 2019-09-05
CN109074300A (zh) 2018-12-21
WO2017216688A1 (en) 2017-12-21
GB2567570A (en) 2019-04-17

Similar Documents

Publication Publication Date Title
DE112017001376T5 (de) Erkennen und Vorhersagen von Engpässen in komplexen Systemen
DE112011100143B4 (de) Optimieren der elektrischen Leistungsaufnahme in einem Rechenzentrum
DE112019004076T5 (de) Dezentralisiertes verteiltes deep learning
DE112012000444T5 (de) Ermitteln einer optimalen Datenverarbeitungsumgebung zum Ausführen eines Abbildes
DE112012004999T5 (de) Beschleunigungselement zur Cloud-Bereitstellung
DE102013206172A1 (de) Beheben von Ressourcenüberlastung
DE112010003144T5 (de) Erweiterbare Grundstruktur zur Unterstützung verschiedener Einsatzarchitekturen
DE112012000797T5 (de) Mehrfach-Modellierungsparadigma für eine Vorhersageanalytik
DE112021006232T5 (de) Proaktive anomalieerkennung
DE112012005639T5 (de) Auslösen von Fensterbedingungen bei Anwendungen des Stream-Computing
DE112017003937T5 (de) System, Verfahren und Computerprogrammprodukt zur Störungserkennung und - Lokalisierung in Stromnetz
DE112017006040T5 (de) Kognitive Inhaltsfilterung
DE112012002631T5 (de) Stream-Verarbeitung unter Verwendung einer Client-Server-Architektur
DE112020004116T5 (de) Dynamisches abändern der parallelität einer aufgabe in einer pipeline
DE102013216735A1 (de) Ressourcenzuweisung in einer virtualisierten Datenverarbeitungsumgebung
DE102021109767A1 (de) Systeme und methoden zur vorausschauenden sicherheit
DE112013000904T5 (de) Durchführen von Aktualisierungen von Quellcode, der auf einer Vielzahl von Rechenknoten ausgeführt wird
DE112021000370T5 (de) Auf maschinellem lernen beruhende datenüberwachung
DE102012224492A1 (de) Auslösen von Fensterbedingungen unter Verwendung einer Ausnahmebehandlung
DE112018003087T5 (de) On-chip-rauschunterdrückung oder -minderung der versorgungsspannung unter verwendung von lokalen detektionsschleifen in einem prozessorkern
DE112020003744T5 (de) Durch dienstqualitätskriterien vorgegebenes automatisiertes betriebsdatenmanagement
DE112016004745B4 (de) Syndiziertes, auf einer Cloud beruhendes Dienstmodell "Benachrichtigung als ein Dienst" Erweiterung in einem RSS-Feed
DE102014116744A1 (de) Management von Informationstechnologieressourcen
DE102012219705A1 (de) Datenpaketverarbeitung im netzwerk
DE112019002052T5 (de) Datenschutzsensibilisierung bei der bereitstellung von arbeitslasten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0011220000

Ipc: G06F0030000000

R084 Declaration of willingness to licence