DE112014007090T5 - Verfahren und systeme zum automatischen tagging anhand von software-ausführungs-traces - Google Patents

Verfahren und systeme zum automatischen tagging anhand von software-ausführungs-traces Download PDF

Info

Publication number
DE112014007090T5
DE112014007090T5 DE112014007090.4T DE112014007090T DE112014007090T5 DE 112014007090 T5 DE112014007090 T5 DE 112014007090T5 DE 112014007090 T DE112014007090 T DE 112014007090T DE 112014007090 T5 DE112014007090 T5 DE 112014007090T5
Authority
DE
Germany
Prior art keywords
application
call stack
instance
stack information
call
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
DE112014007090.4T
Other languages
English (en)
Inventor
Xinruo Sun
Tianpeng Jin
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE112014007090T5 publication Critical patent/DE112014007090T5/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/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • 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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Telephonic Communication Services (AREA)
  • Computer And Data Communications (AREA)

Abstract

Systeme und Verfahren zur Analyse von Ausführungsmustern für Anwendungen, die auf entfernten Geräten (120) ausgeführt werden. In dem System speichert eine Wissensbasis die erfolgreichen Traces von einer Vielzahl von Instanzen (124) einer Anwendung, und ein oder mehrere Computerprozessoren (950) im System empfangen über eine Netzschnittstelle (922) Aufrufstapelinformationen von einer auf einem entfernten Gerät (120) ausgeführten Instanz (124) der Anwendung, wobei die Aufrufstapelinformationen periodische Erfassungen eines Ausführungsstatus für die Instanz (124) der Anwendung beinhalten, und stellen fest, ob eine Ähnlichkeit zwischen den von der Instanz (124) der Anwendung empfangenen Aufrufstapelinformationen und der gespeicherten Vielzahl von erfolgreichen Traces besteht. In Reaktion auf das Feststellen einer Ähnlichkeit fügen die Computerprozessoren (950) das entfernte Gerät (120) zu einer Population von Geräten hinzu, die die Vorgabe voraussichtlich ausführen werden, und ermöglichen weitere für die Gerätepopulation spezifische Aktionen.

Description

  • ALLGEMEINER STAND DER TECHNIK
  • Kostengünstige Softwareanwendungen sind für eine Reihe von Computerplattformen erhältlich. Im Allgemeinen interagieren manche Arten von Softwareanwendungen, wenn sie auf einem Hostgerät ausgeführt werden, mit vom Hostgerät entfernten Backend-Servern. Die Backend-Server können in manchen Situationen Informationen mit Anwendungsinstanzen über ein Netzwerk austauschen.
  • KURZDARSTELLUNG
  • In einigen Aspekten betrifft die Offenbarung ein System mit einer Wissensbasis, die eine gesammelte Vielzahl von erfolgreichen Traces aus einer Vielzahl von Instanzen einer Anwendung auf einer Vielzahl von entfernten Geräten speichert. Das System beinhaltet eine Netzwerkschnittstelle und einen Computerprozessor, der dafür konfiguriert ist, eine oder mehrere Einheiten von Aufrufstapelinformationen über die Netzwerkschnittstelle von einer ersten Instanz der Anwendung zu empfangen, die auf einem ersten entfernten Gerät ausgeführt wird, wobei die Aufrufstapelinformationen periodische Erfassungen eines Ausführungsstatus für die erste Instanz der Anwendung beinhalten, und dafür konfiguriert ist, von der ersten Instanz der Anwendung einen Indikator dafür zu empfangen, dass die erste Instanz der Anwendung eine Vorgabe ausgeführt hat. Der Computerprozessor ist so konfiguriert, dass er in Reaktion auf das Empfangen des Indikators die empfangenen Einheiten von Aufrufstapelinformationen bis zur ausgeführten Vorgabe als erfolgreiche Trace ansammelt und das erfolgreiche Trace in der Wissensbasis speichert. Der Computerprozessor ist so konfiguriert, dass dieser von einer zweiten Instanz der Anwendung, die auf einem zweiten entfernten Gerät ausgeführt wird, eine oder mehrere Einheiten von Aufrufstapelinformationen empfängt, wobei die Aufrufstapelinformationen periodische Erfassungen eines Ausführungsstatus für die zweite Instanz der Anwendung beinhalten; dass dieser eine Ähnlichkeit zwischen den von der zweiten Instanz der Anwendung empfangenen Aufrufstapelinformationen und der Vielzahl von erfolgreichen Traces feststellt; und dass dieser in Reaktion auf das Feststellen der Ähnlichkeit das zweite entfernte Gerät zu einer Population von Geräten hinzufügt, die die Aufgabe voraussichtlich ausführen werden.
  • In einigen Aspekten betrifft die Offenbarung ein Verfahren, das das Empfangen einer oder mehrerer Einheiten von Aufrufstapelinformationen von einer ersten Instanz einer Anwendung beinhaltet, die auf einem ersten entfernten Gerät ausgeführt wird, wobei die Aufrufstapelinformationen periodische Erfassungen eines Ausführungsstatus für die erste Instanz der Anwendung beinhalten, und das Empfangen von der ersten Instanz der Anwendung eines Indikators dafür beinhaltet, dass die erste Instanz der Anwendung eine Vorgabe ausgeführt hat. Das Verfahren beinhaltet das Aggregieren der empfangenen Einheiten von Aufrufstapelinformationen, die zu der ausgeführten Vorgabe führen, als erfolgreiche Trace, und das Sammeln einer Vielzahl von erfolgreichen Traces aus einer Vielzahl von Instanzen der Anwendung, die auf einer Vielzahl von entfernten Geräten ausgeführt werden. Das Verfahren beinhaltet weiterhin das Empfangen einer oder mehrerer Einheiten von Aufrufstapelinformationen, wobei die Aufrufstapelinformationen periodische Erfassungen eines Ausführungsstatus für die zweite Instanz der Anwendung beinhalten, die auf einem zweiten entfernten Gerät ausgeführt wird; das Feststellen einer Ähnlichkeit zwischen den von der zweiten Instanz der Anwendung empfangenen Aufrufstapelinformationen und der Vielzahl von erfolgreichen Traces; sowie das Hinzufügen des zweiten entfernten Geräts zu einer Population von Geräten, die die Aufgabe voraussichtlich ausführen werden.
  • In einigen Aspekten betrifft die Offenbarung computerlesbare Medien, auf denen Anweisungen gespeichert sind, die bei Ausführung durch ein Computergerät, das einen oder mehrere Prozessoren beinhaltet, das Computergerät zum Empfangen einer oder mehrerer Einheiten von Aufrufstapelinformationen von einer ersten Instanz einer Anwendung veranlassen, die auf einem ersten entfernten Gerät ausgeführt wird, wobei die Aufrufstapelinformationen periodische Erfassungen eines Ausführungsstatus für die erste Instanz der Anwendung beinhalten, und zum Empfangen von der ersten Instanz der Anwendung eines Indikators dafür veranlassen, dass die erste Instanz der Anwendung eine Vorgabe ausgeführt hat. Die Anweisungen veranlassen das Computergerät weiterhin zum Aggregieren der empfangenen Einheiten von Aufrufstapelinformationen, die zu der ausgeführten Vorgabe führen, als erfolgreiche Trace und zum Sammeln einer Vielzahl von erfolgreichen Traces aus einer Vielzahl von Instanzen der Anwendung, die auf einer Vielzahl von entfernten Geräten ausgeführt werden. Die Anweisungen veranlassen das Computergerät weiterhin dazu, dass dieses von einer zweiten Instanz der Anwendung, die auf einem zweiten entfernten Gerät ausgeführt wird, eine oder mehrere Einheiten von Aufrufstapelinformationen empfängt, wobei die Aufrufstapelinformationen periodische Erfassungen eines Ausführungsstatus für die zweite Instanz der Anwendung beinhalten; dass dieses eine Ähnlichkeit zwischen den von der zweiten Instanz der Anwendung empfangenen Aufrufstapelinformationen und der Vielzahl von erfolgreichen Traces feststellt; und dass dieses in Reaktion auf eine affirmative Feststellung das zweite entfernte Gerät zu einer Population von Geräten hinzufügt, die die Aufgabe voraussichtlich ausführen werden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die oben genannten und damit verbundenen Aufgaben, Merkmale und Vorteile der vorliegenden Offenbarung lassen sich unter Berücksichtigung der folgenden ausführlichen Beschreibung in Verbindung mit den beigefügten Figuren vollständiger erfassen, wobei:
  • 1 eine schematische Darstellung einer Netzwerkumgebung entsprechend einer exemplarischen Implementierung zeigt;
  • 2 eine visuelle Darstellung eines Aufrufstapels zeigt;
  • 3 ein Ablaufdiagramm zeigt, das eine Implementierung für ein Verfahren zum periodischen Erfassen und Senden von Aufrufstapelinformationen darstellt;
  • 4 ein Ablaufdiagramm zeigt, das eine Implementierung für ein Verfahren zum Sammeln und Vergleichen von Aufrufstapelinformationen für eine Vielzahl von entfernten Geräten darstellt;
  • 5 ein Ablaufdiagramm zeigt, das eine Implementierung für ein Verfahren zum Reagieren auf die Erkennung einer Segmentzuordnung für die empfangenen Aufrufstapelinformationen darstellt; und
  • 6 ein Blockdiagramm eines Computersystems zeigt, das für die Verwendung in den verschiedenen beschriebenen Implementierungen geeignet ist.
  • Zur Vereinfachung sind in den jeweiligen Figuren ggf. nicht alle Komponenten beschriftet. Die Zeichnungen sollen nicht maßstabsgetreu sein. In den verschiedenen Figuren werden gleiche Bezugszeichen und Bezeichnungen für gleiche Elemente verwendet.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Kostengünstige Softwareanwendungen sind für eine Reihe von Computerplattformen erhältlich. Ein Anwendungsbenutzer bezahlt ggf. einen kleinen Geldbetrag oder in manchen Fällen gar nichts, um eine Anwendung auf einem Benutzergerät zu installieren und die Anwendung auszuführen. Benutzer bezahlen ggf. einen kleinen Betrag, um Zusatzfunktionen der Anwendung freizuschalten oder ein Upgrade auf die Premium-Version zu erhalten. In einigen Fällen bietet die Anwendung Inhalte, die entweder vom Entwickler der Anwendung oder von einer Drittpartei bereitgestellt werden. In manchen Fällen wird die Anwendung in Verbindung mit einem anderen Produkt, zum Beispiel als Marketing-Draufgabe für eine Veranstaltung oder einen Veranstaltungsort, vertrieben. Im Allgemeinen kommunizieren manche Anwendungen, die manchmal als „Apps“ bezeichnet werden, mit einem oder mehreren Backend-Servern, um Aktualisierungen, Interaktionen mit mehreren Beteiligten und zusätzliche Inhalte zu erhalten. Die Backend-Server können die an die einzelnen Anwendungsinstanzen zu liefernden Inhalte anhand verschiedener Parameter auswählen. In einigen Implementierungen werden spezifische Ausführungsmuster für eine bestimmte Instanz der Anwendung verwendet, um die Auswahl der Inhalte zu unterstützen. Einige Ausführungsmuster können eine erhöhte Wahrscheinlichkeit für die Ausführung eines oder mehrerer bestimmter Ereignisse anzeigen. Wenn ein Ausführungsmuster nahelegt, dass eine bestimmte Anwendungsinstanz ein Zielereignis voraussichtlich ausführt, können Inhalte ausgewählt werden, die dabei helfen, einen Benutzer der Anwendung zur Vorgabe hinzuführen. Vorgaben beinhalten unter anderem die Interaktion des Benutzers mit ausgewählten Inhalten, Einkäufe innerhalb der App und die fortgesetzte Beschäftigung des Benutzers mit der Anwendung. In einem Szenario kann der Benutzer der Anwendung, wenn eine Unterhaltungsanwendung (z. B. ein Spiel) wiederholt Funktionsaufrufe von einem schwierigen Level im Spiel ausführt, an Hinweisen daran interessiert sein, wie man von einem schwierigen Level aus weiterkommt.
  • 1 zeigt eine grobe Übersicht einer schematischen Darstellung einer Netzwerkumgebung. Ein Netzwerk 110 ermöglicht Kommunikation zwischen verschiedenen Benutzergeräten 120 und Backend-Servern 130. Jedes Benutzergerät 120 (a)120 (n) führt eine jeweilige Instanz 124 (a)124 (n) einer Anwendung aus. Die Anwendungsinstanzen 124 (a)124 (n) (im Allgemeinen als Instanz 124 bezeichnet) übertragen jeweils Aufrufstapelinformationen über das Netzwerk 110 an Stapelaggregationsserver 140. Die Stapelaggregationsserver 140 speichern die empfangenen Daten im Speicher 134. Die Server 140 erkennen Ausführungsmuster in den Aufrufstapelinformationen und legen ein Segment der Anwendungsinstanzen 124 für den Empfang von speziellen Inhalten basierend auf dem erkannten Muster fest. Inhaltsserver 160 stellen den Anwendungsinstanzen 124 Inhalte bereit. Anwendungsinstanzen 124 im festgelegten Segment erhalten von den Inhaltsservern 160 die für das Segment ausgewählten speziellen Inhalte.
  • Genauer gesagt, übermittelt das Netzwerk 110 Informationen zwischen den Benutzergeräten 120 und den Backend-Servern 130. Das Netzwerk 110 setzt sich aus verschiedenen miteinander verbundenen Netzwerkgeräten zusammen, die einen oder mehrere Kommunikationspfade zwischen den beteiligten Geräten bilden. Jedes Netzwerkgerät beinhaltet mindestens eine Netzwerkschnittstelle zum Senden und Empfangen von Daten, in der Regel als ein oder mehrere Pakete. Die Netzwerkschnittstellen verbinden die Netzwerkgeräte mit dem Netzwerk 110 und über das Netzwerk 110 miteinander. Ein exemplarisches Netzwerk 110 ist das Internet; es können jedoch auch andere Netzwerke verwendet werden. Das Netzwerk 110 kann sich aus mehreren miteinander verbundenen Subnetzen zusammensetzen. Bei dem Netzwerk 110 kann es sich um ein lokales Netzwerk (LAN), zum Beispiel ein Firmen-Intranet, ein regionales Netzwerk (MAN), ein Großraumnetzwerk (WAN), ein Inter-Netzwerk wie das Internet oder ein Peer-to-Peer-Netzwerk, z. B. ein Adhoc- WLAN-Peer-to-Peer-Netzwerk, handeln. Bei den Datenverbindungen zwischen den Geräten im Netzwerk 110 kann es sich um eine beliebige Kombination von drahtgebundenen Verbindungen (z. B. Glasfaser, Kabel, Kat-5 usw.) und/oder um drahtlose Verbindungen (z. B. auf der Basis von Funk, Satellit oder Mikrowellen) handeln. Bei dem Netzwerk 110 kann es sich um ein öffentliches Netz, ein privates Netz oder eine Kombination aus öffentlichen und privaten Netzen handeln. Bei dem Netzwerk 110 kann es sich um eine beliebige Art und/oder Form von Datennetzwerken und/oder Kommunikationsnetzwerken handeln.
  • Ein Benutzergerät 120 ist in der Lage, über das Netzwerk 110 Informationen auszutauschen. Bei einem Benutzergerät 120 kann es sich um eine beliebige Art von Computergerät handeln, das zur Interaktion mit einem Benutzer konfiguriert ist. Bei einem Benutzergerät 120 kann es sich unter anderem um einen Laptop, Desktop, ein Tablet, elektronisches Tablet, einen PDA, ein Smartphone, Videospiel, Fernsehgerät, eine Set-Top-Box, einen Kiosk oder einen tragbaren Computer handeln. Im Allgemeinen und ohne Einschränkung ist ein Benutzergerät 120 in der Lage, einem Benutzer Inhalte darzustellen oder die Darstellung von Inhalten für einen Benutzer zu ermöglichen. Ein Benutzergerät 120 führt in der Regel ein Betriebssystem aus, das die Ausführung von Softwareanwendungen auf dem Benutzergerät 120 verwaltet. In einigen Implementierungen wird das Betriebssystem mit dem Benutzergerät 120 geliefert. Das unter Bezugnahme auf 6 beschriebene Computergerät ist ein Computergerät, das in einigen Konfigurationen zur Verwendung als Benutzergerät 120 geeignet ist.
  • Die Backend-Server 130 beinhalten Stapelaggregationsserver 140 und Inhaltsserver 160, die im Folgenden ausführlicher beschrieben werden. Zu den Backend-Servern 130 können in einigen Implementierungen andere unterstützende Systeme wie Netzwerkgeräte, die als Router oder Switches funktionieren, Datenverarbeitungs- und Filterserver, Datenspeichersysteme 134, Anwendungsserver und so weiter gehören. Die Backend-Server 130 können an einem einzelnen Standort untergebracht oder über mehrere Standorte verteilt und entweder durch das Netzwerk 110 und/oder durch ein sekundäres Backbone-Netzwerk miteinander verbunden sein. Einige Backend-Server 130 können virtualisiert sein, d. h. ein Backend-Server 130 kann als virtuelle Maschine auf einem anderen Computergerät gehostet werden. In manchen Fällen können ein oder mehrere virtuelle Server von einem externen Cloud-Dienstanbieter gehostet werden. Einige Backend-Server 130 können in benutzerspezifischer Hardware implementiert sein. Einige Backend-Server 130 können generische Computergeräte sein, die mit spezifischen, nichtgenerischen Funktionen konfiguriert sind. Das unter Bezugnahme auf 6 beschriebene Computergerät ist ein Computergerät, das in einigen Konfigurationen zur Verwendung als Backend-Server 130 geeignet ist.
  • Der Backend-Server 130 beinhaltet Datenspeicher 134, bei dem es sich um ein beliebiges Gerät oder eine Sammlung von Geräten handeln kann, die zum Speichern von computerlesbaren Daten geeignet sind. Bei den Datenspeichergeräten 134 kann es sich um flüchtige oder nichtflüchtige Speicher, Netzwerkspeicher oder Speichernetzwerke handeln. Datenspeichergeräte 134 können ein oder mehrere Massenspeichergeräte umfassen, die sich am gleichen Standort befinden oder verteilt angeordnet sein können. Zu den zum Speichern von Daten geeigneten Medien gehören sämtliche Arten von Festspeichern, Medien und Speichergeräten, einschließlich Halbleiterspeicherelemente, wie beispielsweise EPROM, EEPROM, SDRAM und Flash-Speichergeräte; magnetische Festplatten, wie z. B. interne Festplatten oder Wechselplatten; magneto-optische Festplatten; und CD-ROM-, DVD-ROM- und Blu-Ray®-Disc-Laufwerke. Datenspeichergeräte können virtualisiert sein. Auf Datenspeichergeräte kann über einen zwischengeschalteten Server und/oder über ein Netzwerk zugegriffen werden. Datenspeichergeräte können Daten als eine Sammlung von Dateien oder Datenblöcken (Chunks) strukturieren. Bei einigen Datenspeichergeräten kann durch redundante Speicher und/oder Fehlerkorrekturdaten (z. B. Paritätsbits) eine Fehlerkorrektur vorgesehen sein. Der Datenspeicher 134 kann eine Datenbank, z. B. eine relationale Datenbank, hosten. Der Datenspeicher 134 kann ein Dateiablagesystem hosten. Im Datenspeicher 134 gespeicherten Daten können als Wissensbasis gegliedert sein. Die Daten können in verschlüsselter Form gespeichert sein. Der Zugriff auf den Datenspeicher 134 kann durch ein oder mehrere Authentifizierungssysteme beschränkt werden.
  • Ein Benutzer kann ein Benutzergerät 120 so betreiben, dass es mit verschiedenen Backend-Servern 130 über das Netzwerk 110 entfernt interagiert. In manchen Szenarien kann ein Benutzer mit einem Clientgerät 120 ein oder mehrere Inhaltselemente von einem Backend-Server 130, z. B. einem Inhaltsserver 160, anfordern. In Reaktion auf vom Backend-Server 130 empfangene Anfragen werden angeforderte Inhalte von einem oder mehreren Inhaltsservern 160 über das Netzwerk 110 an das Clientgerät 120 geliefert. Das Clientgerät 120 gibt die empfangenen Inhalte dann zur Darstellung für den Benutzer wieder. Ein Benutzer kann mit den Backend-Servern 130 so interagieren, dass eine Reihe von Anfragen, Antworten und darauf folgenden Anforderungen eine Sitzung ergeben kann. Die Sitzung des Benutzers wird fortgesetzt, bis der Benutzer keine Inhaltselemente mehr anfordert. In einigen Implementierungen bleibt die Sitzung für einen festen Zeitraum nach Lieferung des letzten Inhaltselements aktiv und gibt dem Benutzer so Zeit, sich mit den Inhalten zu beschäftigen und eine nachfolgende Anfrage auszulösen. In einigen Implementierungen sind die an das Clientgerät 120 gelieferten Inhalte so konfiguriert, dass diese periodisch Anfragen zum Backend-Server 130 senden, damit die Sitzung aktiv bleibt. In einigen Implementierungen entspricht eine Sitzung einer über einen bestimmten Zeitraum erfolgenden logischen Gruppierung von Anfragen von einem Clientgerät 120.
  • In einigen Implementierungen hat jedes Benutzergerät 120 eine Kennung, mit der zwischen verschiedenen Benutzergeräteinstanzen unterschieden werden kann. Die Kennungen können eindeutig sein. In einigen Implementierungen wird eine IP-Adresse als Kennung verwendet. In einigen Implementierungen ordnet ein Hersteller oder Lieferant einem Benutzergerät 120 eine permanente Systemkennung, zum Beispiel eine DUID, INID, IMSI oder MIN zu, die z. B. in einer SIM-Karte gespeichert ist und als Kennung verwendet wird. In einigen Implementierungen liefert ein Benutzer Informationen, mit denen ein Benutzergerät 120 identifiziert wird. In einigen Implementierungen wird eine Kennung an ein Benutzergerät 120 geliefert und im Benutzergerät, z. B. als Cookie, gespeichert. Wenn ein Benutzergerät 120 mit einem Backend-Server 130 interagiert, kann das Benutzergerät 120 die gespeicherte Kennung für den Server 130 bereitstellen. In einigen Implementierungen ist die zur Speicherung an das Benutzergerät 120 gelieferte Kennung eine beliebige oder zufällig ausgewählte Zahl oder Zeichenkette. In einigen Implementierungen führt ein Backend-Server 130 eine Sequenznummer; für jede erste Interaktion mit einem Benutzergerät 120 sendet der Server 130 diese Sequenznummer an das neu vorgefundene Benutzergerät 120 als Kennung und erhöht dann die Sequenznummer um einen festen oder dynamischen Betrag. In einigen Implementierungen ist die zum Speichern im Benutzergerät 120 gelieferte Kennung eine Funktion von Datum und Uhrzeit einer ersten Interaktion zwischen dem Benutzergerät 120 und dem Backend-Server 130. In einigen Implementierungen erhält jede Anwendungsinstanz 124 ihre eigene Kennung, die nicht zu den von anderen Anwendungen auf dem gleichen Host-Benutzergerät 120 verwendeten Kennungen gehört. In einigen Implementierungen hat die zum Speichern im Benutzergerät 120 gelieferte Kennung keine andere Bedeutung, als dass sie eindeutig einer bestimmten Instanz eines Benutzergeräts 120 (oder einer Anwendung 124, die auf einem Benutzergerät 120 ausgeführt wird) zugeordnet ist, sodass die Kennzeichnung in keiner Weise die Identität eines Benutzers online oder offline angibt oder mit derselben zusammenhängt.
  • Benutzergeräte 120 führen verschiedene Softwareanwendungen aus. In einigen Implementierungen sind eine oder mehrere Softwareanwendungen so eingerichtet, dass sie periodisch Statusinformationen erzeugen und diese Statusinformationen periodisch an einen Backend-Server 130 senden. In einigen Implementierungen sind die Statusinformationen Aufrufstapelinformationen für eine bestimmte Anwendungsinstanz 124. In einigen Implementierungen stellen die Aufrufstapelinformationen eine Momentaufnahme des aktuellen Ausführungsstatus einer Anwendung dar. Aufrufstapelinformationen werden ausführlicher unter Bezugnahme auf 2 beschrieben, die einer Darstellung der Aufrufstapelinformationen entspricht. Eine spezifische Anwendungsinstanz 124 kann periodisch Statusinformationen erzeugen, indem sie Aufrufstapelinformationen erfasst und die Statusinformationen an den Backend-Server 130 sendet. Die übertragenen Informationen können mit einer Kennung für die Anwendungsinstanz 124 assoziiert sein, brauchen jedoch keine persönlichen Daten über den Benutzer zu beinhalten. Das Senden von Aufrufstapelinformationen wird ausführlicher mit Bezug auf 3 beschrieben, die einem Ablaufdiagramm entspricht, das eine Implementierung für ein Verfahren zum periodischen Erfassen und Senden von Aufrufstapelinformationen darstellt. Die 2 und 3 werden nachstehend näher beschrieben. In einigen Implementierungen kann ein Benutzer eine Option zum Deaktivieren des Sendens von Statusinformationen an den Backend-Server 130 auswählen.
  • Ein Stapelaggregationsserver 140 ist ein Backend-Server 130, der für das Empfangen von Aufrufstapelinformationen von den verschiedenen Benutzergeräten 120 über das Netzwerk 110 konfiguriert ist. In einigen Implementierungen verarbeitet der Stapelaggregationsserver 140 die Aufrufstapelinformationen, filtert z. B. anhand einer Reihe von Regeln Informationen heraus und/oder ermittelt anhand der Aufrufstapelinformationen, ob die sendende Anwendungsinstanz 124 eine bestimmte Funktion oder ein bestimmtes Ereignis ausgeführt hat. In einigen Implementierungen zeichnet der Stapelaggregationsserver 140 alle oder einige der empfangenen Aufrufstapelinformationen im Datenspeicher 134 auf. In einigen Implementierungen arbeitet ein Stapelaggregationsserver 140 in Verbindung mit einem oder mehreren zusätzlichen Stapelaggregationsservern 140. In einigen Implementierungen greifen die mehreren Stapelaggregationsserver 140 auf einen gemeinsamen Datenspeicher, z. B. den Datenspeicher 134, zu. In einigen Implementierungen vergleicht der Stapelaggregationsserver 140 empfangene Aufrufstapelinformationen mit den gespeicherten Aufrufstapelinformationen und erkennt eventuelle Ähnlichkeiten. Die im Folgenden beschriebene 4 zeigt ein Ablaufdiagramm, das eine Implementierung für ein Verfahren zum Sammeln und Vergleichen von Aufrufstapelinformationen für eine Vielzahl von entfernten Geräten darstellt.
  • Im Allgemeinen ist der Stapelaggregationsserver 140 für das Empfangen von Aufrufstapelinformationen von einem Benutzergerät 120 (z. B. Benutzergerät 120 (a)) und zum Vergleichen der empfangenen Aufrufstapelinformationen mit den aggregierten Aufrufstapelinformationen, die zuvor von anderen Benutzergeräten 120 (z. B. Benutzergeräten 120 (b)120 (n)) empfangen wurden, konfiguriert. Genauer gesagt, können die aggregierten Aufrufstapelinformationen in zwei oder mehrere (als „Segmente“ bezeichnete) Untergruppen der Quellenbenutzergeräte 120 unterteilt werden. In einigen Implementierungen werden die Gruppen anhand von in den Vergleichen erkannten Ähnlichkeiten eingeteilt, sodass ein Benutzergerät 120 in Abhängigkeit von den Ähnlichkeiten zwischen den Aufrufstapelinformationen, die der Stapelaggregationsserver 140 von den verschiedenen Benutzergeräten 120 empfangen hat, als Teil eines Segments oder eines anderen Segments angesehen werden kann. In einigen Implementierungen werden die Gruppen anhand von zusätzlichen Faktoren eingeteilt. In einigen dieser Implementierungen beinhalten die zusätzlichen Faktoren, ob eine Anwendungsinstanz andere Vorgaben, zum Beispiel ein bestimmtes Spiel-Level oder den Abschluss eines Kaufs innerhalb einer App, erreicht hat. In einigen Implementierungen werden Segmente durch Anwenden eines Clustering-Algorithmus, z. B. eines hierarchischen Clustering-Algorithmus, auf die empfangenen Aufrufstapelinformationen generiert.
  • In einigen Implementierungen sind die Aufrufstapelinformationen anwendungsspezifisch, sodass nur Benutzergeräte 120, die eine Instanz 124 der Anwendung ausführen, Aufrufstapelinformationen für die Vergleiche einreichen. Wenn eine spezielle Aktion für Benutzergeräte 120 in einem bestimmten Segment reserviert ist, kann der Stapelaggregationsserver 140 oder ein anderer Backend-Server 130, wie z. B. ein Inhaltsserver 160, die bestimmte Aktion in Reaktion auf die Feststellung ausführen, dass das Benutzergerät 120 zu dem bestimmten Segment gehört. In einigen Implementierungen können spezielle Inhalte an ein Benutzergerät geliefert werden, das in ein bestimmtes Segment fällt. In einigen Implementierungen kann eine Spielanwendung mit mehreren Levels bestimmen, dass Benutzern, die wiederholt bestimmte Funktionen bei einem besonders schwierigen Level aufrufen, ein Hinweis darauf, wie man zum nächsten Level gelangt, von Nutzen sein könnte; während in Reaktion auf diese Feststellung die Anwendungsinstanzen der Benutzer eine spezielle Nachricht mit dem Hinweis empfangen oder den Empfänger zum Kauf des Hinweises auffordern können. Die im Folgenden beschriebene 5 zeigt ein Ablaufdiagramm, das eine Implementierung für ein Verfahren zum Reagieren auf das Erkennen einer Segmentzuordnung für die empfangenen Aufrufstapelinformationen darstellt, und das die Quelle der empfangenen Aufrufstapelinformationen zum Empfangen von speziellen Inhalten vorsieht, wenn die Quelle als Teil des bestimmten Segments erkannt wird.
  • 2 zeigt eine grobe Übersicht einer Aufrufstapel-Visualisierung 200. Aufrufstapel können als Daten strukturiert sein, die Zustandsdaten von Subroutinen enthalten. Eine Aufrufstapel-Momentaufnahme setzt sich aus Stapelrahmen für jeden Thread einer Anwendung zu einem gegebenen Moment zusammen. Jeder Stapelrahmen im Aufrufstapel entspricht einem Aufruf an eine Subroutine, die noch nicht mit einer Rückgabe abgeschlossen ist. In einigen Implementierungen bindet der Anwendungsentwickler eine Instrumentierungsbibliothek ein, die in regelmäßigen Abständen eine Spur des Aufrufstapels der Anwendung erfasst. In einigen Implementierungen erfasst das Betriebssystem selbst in periodischen Abständen Aufrufstapelinformationen für die Anwendung. In einigen Implementierungen stellen die Aufrufstapelinformationen eine Momentaufnahme des aktuellen Betriebsstatus einer Anwendung dar, z. B. welche Threads welche Funktionen aufgerufen haben und zum Zeitpunkt der Momentaufnahme darauf warten, dass die Funktionen ihre Ausführung beenden. Die Daten in der Darstellung können normalisiert sein. In einigen Implementierungen entsprechen die Aufrufstapelinformationen einem Satz von Thread-Kennungen, Objektkennungen und Verfahrensnamen. In einigen Implementierungen werden die Aufrufstapelinformationen als Datenfeld oder verlinkte Liste von Objektnamen und Verfahrensnamen dargestellt oder gespeichert.
  • 3 zeigt eine grobe Übersicht eines Ablaufdiagramms, das eine Implementierung für ein Verfahren zum periodischen Erfassen und Senden von Aufrufstapelinformationen darstellt. Im Verfahren 300 erfasst ein Stapeldaten-Erfassungsmodul an einem Benutzergerät 120 in Schritt 310 Aufrufstapelinformationen zum Ausführen einer Anwendung und generiert und speichert in Schritt 320 eine lokale Repräsentation der erfassten Aufrufstapelinformationen. Das Modul wiederholt das Erfassen aus Schritt 310 und das Speichern aus Schritt 320 in regelmäßigen Abständen, was durch den Pfeil 330 angegeben wird. Nach dem Generieren einer Repräsentation von mindestens einem Aufrufstapel bündelt das Modul in Schritt 340 einen Satz von einer oder mehreren Repräsentationen von erfassten Aufrufstapelinformationen und sendet den gebündelten Satz von Aufrufstapelinformationen in Schritt 350 über das Netzwerk 110 an die Backend-Server 130. Das Stapeldaten-Erfassungsmodul kann ein im Benutzergerät 120 implementierter Hardware-Schaltkreis, z. B. ein ASIC, oder ein Softwaremodul sein, das entweder vom Betriebssystem des Benutzergeräts 120 oder von einer in die Anwendungsinstanz 124 eingebundenen Softwarebibliothek bereitgestellt wird. In einigen Implementierungen erhalten Softwareanwendungsentwickler eine Softwarebibliothek zum Einbinden in die Anwendung, während eine Anwendungsinstanz 124 mit einer oder mehreren Bibliotheksanweisungen das Stapeldaten-Erfassungsmodul aufruft.
  • Das Verfahren 300 beinhaltet unter ausführlicherer Bezugnahme auf 3 das periodische Erfassen von Aufrufstapelinformationen (Schritt 310) und das Erzeugen einer lokalen Repräsentation der erfassten Aufrufstapelinformationen (Schritt 320).
  • Bei Schritt 310 erfasst ein Stapeldaten-Erfassungsmodul Aufrufstapelinformationen an einem Benutzergerät 120. Ein Aufrufstapel gibt, wie mit Bezug auf 2 beschrieben, den Zustand der einzelnen Threads für eine Anwendung an. In einigen Implementierungen erfasst ein Stapeldaten-Erfassungsmodul an einem Benutzergerät 120 in Schritt 310 Aufrufstapelinformationen für eine in Ausführung befindliche Anwendung, indem es eine Defektlokalisierungsfunktion aufruft. Das Ergebnis der Funktion sind Aufrufstapelinformationen, z. B. Traces oder Trace-Speicherinhaltsausgaben. In einigen Implementierungen werden Aufrufstapelinformationen von einem Aufruf an eine Betriebssystemanweisung, die den Zustand der Ausführung einer Anwendung ausgibt, erfasst. In einigen Implementierungen werden Aufrufstapelinformationen von einem Aufruf an eine Programmausführungsumgebung (z. B. einen Debugger oder Perl-Interpreter) oder eine virtuelle Maschine (z. B. Java Virtual Machine), die den Zustand der Ausführung einer Anwendung ausgibt, erfasst. Die Aufrufstapel-Generierungsanweisungen beinhalten unter anderem: „jstack“ in Java; „caller“ in Perl; „debug_backtrace“ in PHP; „backtrace“ in Linux; „android: CallStack“ in Android; „Environment.StackTrace“ und „TraceEventCache.Callstack“ in .NET; sowie „StackTrace“ in C++, von der mscorlib. dll library.
  • In Schritt 320 verarbeitet das Stapeldaten-Erfassungsmodul die Aufrufstapelinformationen und generiert eine Repräsentation der erfassten Aufrufstapelinformationen, die es dann im lokalen Speicher des Benutzergeräts 120 speichert. Die lokale Repräsentation der Aufrufstapelinformationen kann in einigen Implementierungen als Datenfeld oder verlinkte Liste von Objektnamen und Verfahrensnamen strukturiert sein. In einigen Implementierungen beinhaltet die Darstellungsstruktur hierarchische Daten. In einigen Implementierungen filtert das Aufrufstapel-Erfassungsmodul in Schritt 320 Funktionsaufrufe heraus, die nicht informativ sind. In einigen Implementierungen werden dann, wenn es nicht ausreicht zu wissen, dass eine hochrangige Funktion aufgerufen wurde, von der hochrangigen Funktion aufgerufene untergeordnete Funktionen durch ein Filter entfernt. Das heißt, wenn ein Aufruf darin besteht, dass eine Schaltfläche auf dem Bildschirm dargestellt wird und es nicht ausreicht zu wissen, dass die Schaltfläche dargestellt wird, braucht man nicht zu wissen, wie genau die Schaltfläche dargestellt wird, und das Filter kann die am Darstellen der Schaltfläche beteiligten untergeordneten Funktionen auslassen. In einigen Implementierungen ist die lokale Repräsentation komprimiert.
  • Die Schritte 310 und 320 zum Erfassen und Speichern von Aufrufstapelinformationen werden, wie durch den Pfeil 330 angegeben, wiederholt. In einigen Implementierungen werden die Schritte in regelmäßigen periodischen Intervallen im Bereich von einer Iteration alle Zehntelsekunden (oder weniger) bis zu einer Iteration alle sechzig Sekunden (oder mehr) wiederholt. In einigen Implementierungen ist das periodische Intervall festgelegt. In einigen Implementierungen wird das periodische Intervall vom Anwendungsentwickler festgelegt. In einigen Implementierungen ist das periodische Intervall, z. B. mit beliebigen Intervalllängen oder mit Intervalllängen, die routinemäßig angepasst werden, variabel, um eine Auswirkung auf die Leistung zu verhindern.
  • Nachdem eine oder mehrere Repräsentationen der Aufrufstapelinformationen in Schritt 320 generiert und gespeichert wurden, bündelt das Stapeldaten-Erfassungsmodul die Daten (Schritt 340) und sendet den gebündelten Satz von Aufrufstapelinformationen an den Backend-Server 130 (Schritt 350). In einigen Implementierungen basiert die Anzahl der in Schritt 340 gebündelten iterativen Aufrufstapel-Repräsentationen auf einer vorbestimmten Anzahl von Iterationen, z. B. alle fünf Iterationen. In einigen Implementierungen basiert die Anzahl der in Schritt 340 gebündelten iterativen Aufrufstapel-Repräsentationen auf einer vorbestimmten Zeitspanne, z. B. sämtliche alle fünf Minuten erfassten Daten. In einigen Implementierungen werden die Iterationen 330 fortgesetzt, bis der Prozessorbedarf unter einen prozentualen Auslastungsschwellenwert fällt. In einigen Implementierungen werden die Iterationen 330 fortgesetzt, bis die Netzwerkbandbreite unter einen Schwellenwert fällt. In einigen Implementierungen werden die Iterationen 330 fortgesetzt, bis die Netzwerkqualität über einem Schwellenwert liegt. In einigen Implementierungen werden die Daten nicht über eine mobile Netzwerkverbindung, zum Beispiel eine 3G- oder 4G-Netzwerkverbindung gesendet, sondern werden zurückgehalten, bis eine WLAN-Netzwerkverbindung zur Verfügung steht.
  • Die Aufrufstapelinformationen können in Schritt 350 mit einem beliebigen geeigneten Netzwerkprotokoll, z. B. dem Transmission Control Protocol (TCP), dem Stream Control Transmission Protocol (SCTP) oder dem User Datagram Protocol (UDP), gesendet werden. In einigen Implementierungen werden die Aufrufstapelinformationen mit dem File Transfer Protocol (FTP) übertragen. In einigen Implementierungen werden die Aufrufstapelinformationen mit einem benutzerspezifischen Protokoll übertragen, womit eines der anderen Protokolle, wie z. B. TCP, SCTP oder TCP, überlagert wird.
  • 4 zeigt eine grobe Übersicht eines Ablaufdiagramms, das eine Implementierung für ein Verfahren 400 zum Sammeln und Vergleichen von Aufrufstapelinformationen für eine Vielzahl von entfernten Geräten darstellt. Ein Stapelaggregationsserver 140 sammelt eine Vielzahl von erfolgreichen Traces aus einer Vielzahl von „ersten“ Instanzen 124 einer Anwendung, wobei jede Instanz auf einem jeweiligen entfernten Gerät 120 in einer Vielzahl von entfernten Geräten ausgeführt wird (Schritt 410). Nach dem Sammeln von mindestens einigen erfolgreichen Traces in Schritt 410 empfängt der Stapelaggregationsserver 140 Aufrufstapelinformationen von einer „zweiten“ Instanz 124 der Anwendung, die auf einem entfernten Gerät 120 ausgeführt wird (Schritt 430). Der Stapelaggregationsserver 140 bestimmt eine Ähnlichkeit zwischen den Aufrufstapelinformationen, die von der zweiten Instanz 124 der Anwendung empfangen wurden, und den Aufrufstapelinformationen in der Vielzahl von erfolgreichen Traces, die von den ersten Anwendungsinstanzen (Schritt 450) empfangen wurden. In Reaktion auf eine affirmative Feststellung in Schritt 450, dass die Aufrufstapelinformationen, die von der zweiten Instanz 124 der Anwendung empfangen wurden, mit den in Schritt 410 gesammelten erfolgreichen Traces vergleichbar sind, fügt der Stapelaggregationsserver 140 dann das entfernte Benutzergerät 120 zu einer Population von Geräten hinzu, bei denen davon ausgegangen wird, dass sie die bestimmte Vorgabe (Schritt 470) voraussichtlich ausführen werden.
  • Unter ausführlicherer Bezugnahme auf 4 beginnt das Verfahren 400 damit, dass ein Stapelaggregationsserver 140 eine Vielzahl von erfolgreichen Traces aus einer Vielzahl von Instanzen 124 einer Anwendung sammelt, wobei jede Instanz auf einem jeweiligen entfernten Gerät 120 in einer Vielzahl von entfernten Geräten (Schritt 410) ausgeführt wird. Zum Sammeln in Schritt 410 gehört, dass der Stapelaggregationsserver 140 in Schritt 422 Aufrufstapelinformationen von einer ersten Instanz 124 einer auf einem Benutzergerät 120 ausgeführten Anwendung (z. B. unter Bezugnahme auf 1 der Anwendungsinstanz 124 (a), die auf Benutzergerät 120 (a) ausgeführt wird) empfängt und in Schritt 424 einen Indikator empfängt, dass die erste Instanz 124 (a) der Anwendung eine Vorgabe ausgeführt hat. Der Stapelaggregationsserver 140 aggregiert in Reaktion auf den Indikator die bis zur ausgeführten Vorgabe empfangenen Aufrufstapelinformationen und behandelt die aggregierten Daten in Schritt 426 als erfolgreicher Trace. Die Sammlung von erfolgreichen Traces in Schritt 410 ist fortlaufend und kann gleichzeitig mit dem Empfang von Stapeldaten zum Vergleich mit den erfolgreichen Traces oder nach dem Empfang dieser Daten erfolgen.
  • In Schritt 422 empfängt der Stapelaggregationsserver 140 Aufrufstapelinformationen von einer ersten Instanz 124 (a) einer Anwendung, die auf einem ersten entfernten Gerät 120 (a) ausgeführt wird. Das entfernte Benutzergerät 120 legt die Daten, z. B. wie mit Bezug auf 3 beschrieben, zum Empfang durch den Server 140 vor. In einigen Implementierungen, wenn der Stapelaggregationsserver 140 Aufrufstapelinformationen empfängt, speichert der Server 140 die empfangenen Aufrufstapelinformationen im Datenspeicher 134. In einigen Implementierungen identifiziert der Stapelaggregationsserver 140 eine Quelle für die empfangenen Aufrufstapelinformationen, z. B. eine Kennung, die mit der ersten Anwendungsinstanz 124 (a) und/oder dem ersten entfernten Gerät 120 (a) assoziiert ist. In einigen Implementierungen aggregiert der Stapelaggregationsserver 140 die empfangenen Daten mit zuvor von der gleichen Anwendungsinstanz 124 (a) und/oder dem gleichen entfernten Gerät 120 (a) empfangenen Daten. In einigen Implementierungen filtert der Stapelaggregationsserver 140 die empfangenen Daten, z. B. um nicht informative Funktionsaufrufe herauszufiltern. In einigen Implementierungen werden dann, wenn es nicht ausreicht zu wissen, dass eine hochrangige Funktion aufgerufen wurde, von der hochrangigen Funktion aufgerufene untergeordnete Funktionen durch ein Filter entfernt. In einigen Implementierungen erkennt das Filter dynamisch Funktionsaufrufe, die in allen, von allen Anwendungsinstanzen empfangenen Aufrufstapelinformationen übereinstimmen, und entfernt die so erkannten Funktionsaufrufdaten. In einigen Implementierungen können alle Aufrufstapelinformationen, die für die Unterscheidung zwischen Ausführungsmustern nicht von Nutzen sind, herausgefiltert und entfernt werden. In einigen Implementierungen, wenn der Stapelaggregationsserver 140 in Schritt 430 Aufrufstapelinformationen von einer Anwendungsinstanz empfängt, behandelt der Server 140 in Schritt 422 auch diese empfangenen Daten als Dateneingang.
  • In Schritt 424 empfängt der Stapelaggregationsserver 140 einen Indikator, dass die erste Instanz 124 (a) der Anwendung eine Vorgabe ausgeführt hat. In einigen Implementierungen ist der Indikator ein ausdrücklicher von der Anwendungsinstanz 124 ausgehender Indikator. In einigen Implementierungen wird der Indikator durch Analyse der in Schritt 422 empfangenen Aufrufstapelinformationen identifiziert. In einigen Implementierungen besteht die Vorgabe im Ausführen eines bestimmten Funktionsaufrufs (oder einer Reihe von Funktionsaufrufen); in einigen dieser Implementierungen bedeutet der Indikator, dass die bestimmte Vorgabe ausgeführt wurde, dass der bestimmte Funktionsaufruf (oder die Reihe von Funktionsaufrufen) ausgeführt wurde, was durch Vorhandensein der Funktion(en) in den empfangenen Aufrufstapelinformationen erkannt wird. In einigen Implementierungen wird der Indikator von einem Backend-Server 130 empfangen. In einigen Implementierungen wird die Vorgabe durch Interaktion zwischen dem Benutzergerät 120 und einem Backend-Server 130 ausgeführt, wobei der Server 130 den Indikator für die erfolgreiche Ausführung der Vorgabe (an den Stapelaggregationsserver 140) meldet. In einigen Implementierungen besteht der Indikator darin, dass die empfangenen Aufrufstapelinformationen für ein Ausführungsmuster mit der erfolgreichen Ausführung der Vorgabe übereinstimmen. In einigen dieser Implementierungen verwendet der Stapelaggregationsserver 140 einen Clustering-Algorithmus, um zu bestimmen, ob die empfangenen Aufrufstapelinformationen den Aufrufstapelinformationen für Anwendungsinstanzen entsprechen, die die Vorgabe ausgeführt haben, und gibt, wenn dies der Fall ist, an, dass die Anwendungsinstanz ebenfalls die Vorgabe ausgeführt hat. In einigen dieser Implementierungen generiert der Clustering-Algorithmus eine Vertrauenswertung, und der Stapelaggregationsserver 140 verwendet eine über einem vorbestimmten Schwellenwert liegende Vertrauenswertung als Indikator dafür, dass die Anwendungsinstanz die Vorgabe ausgeführt hat. In Schritt 424 bestimmt der Stapelaggregationsserver 140, ob die erste Instanz 124 (a) der Anwendung die Vorgabe ausgeführt hat, sodass die Aufrufstapelinformationen, die in Schritt 422 empfangen wurden, Aufrufstapelinformationen darstellen, die mit Ausführungsmustern übereinstimmen, die voraussichtlich die Ausführung der Vorgabe beinhalten.
  • In Schritt 426 aggregiert der Stapelaggregationsserver 140 in Reaktion auf den Indikator die bis zur ausgeführten Vorgabe empfangenen Aufrufstapelinformationen und behandelt die aggregierten Daten als erfolgreichen Trace. In einigen Implementierungen werden die aggregierten Aufrufstapelinformationen und/oder der Indikator, z. B. im Speicher 134, gespeichert. Die in Schritt 410 gesammelte Vielzahl von erfolgreichen Traces beinhaltet die aggregierten Aufrufstapelinformationen aus Schritt 426 für jede von einer Vielzahl von Anwendungsinstanzen 124.
  • Nach dem Sammeln von mindestens einigen erfolgreichen Traces in Schritt 410 empfängt der Stapelaggregationsserver 140 in Schritt 430 Aufrufstapelinformationen von einer Instanz 124 der Anwendung, die auf einem entfernten Gerät 120 ausgeführt wird (z. B. Anwendungsinstanz 124 (b) die wie in 1 dargestellt auf Benutzergerät 120 (b) ausgeführt wird). Die Anwendungsinstanz in den Schritten 430, 450 und 470 wird als „zweite Instanz“ der Anwendung im Vergleich zu den verschiedenen „ersten Instanzen“ der Anwendung, die in der Vielzahl von Instanzen in Schritt 410 verwendet wurden, bezeichnet. In einigen Implementierungen kann eine „zweite Instanz“ der Anwendung bereits als „erste Instanz“ beteiligt gewesen sein, während die „zweite Instanz“ in anderen Implementierungen speziell von einer Beteiligung als „erste Instanz“ ausgeschlossen sein kann. Der Stapelaggregationsserver 140 empfängt die Aufrufstapelinformationen von einem entfernten Benutzergerät 120 über das Netzwerk 110. Das entfernte Benutzergerät 120 legt die Daten, z. B. wie mit Bezug auf 3 beschrieben, zum Empfang durch den Server 140 vor. In einigen Implementierungen filtert der Stapelaggregationsserver 140 die empfangenen Daten, z. B. um nicht informative Funktionsaufrufe herauszufiltern. In einigen Implementierungen entfernt das Filter Funktionsaufrufe, die in von allen Instanzen der Anwendung empfangenen Aufrufstapelinformationen übereinstimmen. In einigen Implementierungen können alle Aufrufstapelinformationen, die für die Unterscheidung zwischen Ausführungsmustern nicht von Nutzen sind, herausgefiltert und entfernt werden.
  • In Schritt 450 bestimmt der Stapelaggregationsserver 140 eine Ähnlichkeit zwischen den Aufrufstapelinformationen, die in Schritt 430 von der zweiten Instanz 124 (b) der Anwendung empfangen wurden, und den Aufrufstapelinformationen in der Vielzahl der in Schritt 410 gesammelten erfolgreichen Traces. In einigen Implementierungen werden Ähnlichkeiten durch Anwenden eines Clustering-Algorithmus auf die empfangenen Aufrufstapelinformationen identifiziert. Ein Clustering-Algorithmus, zum Beispiel ein hierarchischer Clustering-Algorithmus, erkennt Cluster von empfangenen Aufrufstapelinformationen, die einen hohen Grad von Ähnlichkeit aufweisen. Ein oder mehrere dieser Cluster sind mit erfolgreichen Traces assoziiert, und sollten die in Schritt 430 von der zweiten Instanz 124 (b) der Anwendung empfangenen Aufrufstapelinformationen mit einem mit erfolgreichen Traces assoziierten Cluster gruppiert werden, sind die in Schritt 430 empfangenen Aufrufstapelinformationen für eine Anwendungsinstanz bestimmt, die voraussichtlich Teil eines erfolgreichen Trace ist. In einigen Implementierungen wird der Ähnlichkeitsgrad durch eine Ähnlichkeitswertung gemessen, wobei die Ähnlichkeitswertung in Schritt 450 über einem Schwellenwert liegen muss, damit die in Schritt 430 empfangenen Aufrufstapelinformationen als einem bestimmten Cluster von Aufrufstapelinformationen hinreichend ähnlich angesehen werden. In einigen Implementierungen legt der Stapelaggregationsserver 140 fest, dass die Aufrufstapelinformationen das Benutzergerät aus dem Segment von Benutzergeräten, die die Vorgabe voraussichtlich ausführen, ausschließen. Das heißt, dass in manchen Fällen keine Ähnlichkeit zwischen den empfangenen Aufrufstapelinformationen und den Aufrufstapelinformationen in der Vielzahl der in Schritt 410 gesammelten erfolgreichen Traces besteht. In einigen Implementierungen wird diese Unähnlichkeit als alternatives Segment aufgezeichnet.
  • In Reaktion auf eine affirmative Feststellung in Schritt 450, dass die Aufrufstapelinformationen, die von der zweiten Instanz 124 der Anwendung empfangen wurden, mit den in Schritt 410 gesammelten erfolgreichen Traces vergleichbar sind, fügt der Stapelaggregationsserver 140 dann in Schritt 470 das entfernte Benutzergerät 120 zu einer Population von Geräten hinzu, bei denen davon ausgegangen wird, dass sie die bestimmte Vorgabe (Schritt 470) voraussichtlich ausführen werden. In einigen Implementierungen wird ein mit einer Kennung für das Benutzergerät verbundener Datensatz z. B. im Speicher 134 mit einem Tag oder einer Kennung aktualisiert, dass das Benutzergerät eine Anwendung hostet, die sich in dem bestimmten Segment befindet, das die bestimmte Vorgabe voraussichtlich ausführen wird.
  • 5 zeigt eine grobe Übersicht eines Ablaufdiagramms, das eine Implementierung für ein Verfahren 500 zum Reagieren auf die Erkennung einer Segmentzuordnung für die empfangenen Aufrufstapelinformationen darstellt. Ein Stapelaggregationsserver 140 empfängt, wie mit Bezug auf 4 beschrieben, Aufrufstapelinformationen von einer Instanz 124 der auf einem entfernten Benutzergerät 120 ausgeführten Anwendung. Der Stapelaggregationsserver 140 erkennt in Schritt 530 des Verfahrens 500 eine Segmentzuordnung für das entfernte Gerät 120 anhand der Aufrufstapelinformationen, die von der Anwendung empfangen wurden, die auf dem entfernten Benutzergerät ausgeführt wird. Der Stapelaggregationsserver 140 bestimmt in Schritt 540, ob es für das erkannte Segment spezielle Inhalte gibt. und bezeichnet, wenn dies der Fall ist, in Schritt 550 das entfernte Gerät für den Empfang der speziellen Inhalte. Der Stapelaggregationsserver 140 speichert in Schritt 560 die empfangenen Aufrufstapelinformationen und die erkannte Segmentzuordnung in einer Wissensbasis, die z. B. im Datenspeicher 134 gespeichert ist.
  • Unter ausführlicherer Bezugnahme auf 5 erkennt der Stapelaggregationsserver 140 in Schritt 530 des Verfahrens 500 eine Segmentzuordnung für das entfernte Gerät 120 anhand der Aufrufstapelinformationen, die von der Anwendung empfangen wurden, die auf dem entfernten Benutzergerät ausgeführt wird. Der Stapelaggregationsserver 140 empfängt die Aufrufstapelinformationen in der zuvor beschriebenen Weise von dem entfernten Benutzergerät 120. Das heißt, das Benutzergerät 120 erfasst die Aufrufstapelinformationen und sendet die Daten über das Netzwerk 110 zum Stapelaggregationsserver 140, der die Daten empfängt. Der Stapelaggregationsserver 140 erkennt, wie mit Bezug auf 4 beschrieben, eine Segmentzuordnung für das Benutzergerät 120 anhand der empfangenen Aufrufstapelinformationen. In einigen Implementierungen verwendet der Stapelaggregationsserver 140 einen Clustering-Algorithmus zum Vergleichen der empfangenen Aufrufstapelinformationen mit zuvor empfangenen Daten und zum Erkennen einer Teilmenge der zuvor empfangenen Daten, die am meisten mit den neu empfangenen Daten übereinstimmen. Die auf diese Weise erkannte Teilmenge entspricht einem Populationssegment. Der Stapelaggregationsserver 140 erkennt in Schritt 530 die Segmentzuordnung für das Benutzergerät auf der Grundlage dieser Vergleiche.
  • In Schritt 540 stellt der Stapelaggregationsserver 140 dann fest, ob spezielle Inhalte für das erkannte Segment vorliegen. In einigen Implementierungen können Inhalte für das Segment vorliegen, wenn davon ausgegangen wird, dass das bestimmte Segment eine bestimmte Vorgabe voraussichtlich ausführen wird, wobei die Inhalte die Ausführung der bestimmten Vorgabe unterstützen sollen. In einigen Implementierungen werden die Inhalte von einem Entwickler oder Lieferanten der jeweiligen Softwareanwendung designiert. In einigen Implementierungen werden die Inhalte von (oder auf Anforderung von) einer Drittpartei angegeben. In einigen Implementierungen ist die Festlegung, ob spezielle Inhalte vorliegen, vom Empfangen der Aufrufstapelinformationen getrennt. Das heißt, dass der Stapelaggregationsserver 140 die Aufrufstapelinformationen in einem ersten Zeitraum empfangen kann, und dann in einem späteren zweiten Zeitraum feststellt, ob es spezielle Inhalte für das erkannte Segment gibt.
  • Falls der Stapelaggregationsserver 140 in Schritt 540 feststellt, dass es für die Lieferung an das in Schritt 530 erkannte Segment spezielle Inhalte gibt, gibt der Server 140 in Schritt 550 das entfernte Gerät für den Empfang der speziellen Inhalte an. In einigen Implementierungen veranlasst der Stapelaggregationsserver 140 einen Inhaltsserver 160 dazu, die Inhalte an das Benutzergerät 120 zu senden. In einigen Implementierungen setzt der Stapelaggregationsserver 140 ein Flag oder verzeichnet einen von einem Inhaltsserver 160 verwendeten Indikator zur Kennzeichnung der für die speziellen Inhalte designierten Empfänger. In einigen Implementierungen aktualisiert der Stapelaggregationsserver 140 eine Wissensbasis mit einem Datensatz, der mit dem Benutzergerät 120 assoziiert ist, das die Anwendungsinstanz 124 hostet. Die Aktualisierung zeigt einem Inhaltsserver 160 an, dass das Benutzergerät 120 die speziellen Inhalte empfangen sollte. Der Inhaltsserver 160 sendet dann in Reaktion auf den Datensatz den Inhalt über das Netzwerk 110 an das Benutzergerät 120.
  • In Schritt 560 speichert der Stapelaggregationsserver 140 die empfangenen Aufrufstapelinformationen und die erkannte Segmentzuordnung in einer Wissensbasis, z. B. im Datenspeicher 134. In einigen Implementierungen werden diese Daten, wie mit Bezug auf 4 beschrieben, auf die gleiche Weise gespeichert.
  • 6 zeigt ein Blockdiagramm eines Computersystems 910, das für die Verwendung in den verschiedenen beschriebenen Implementierungen geeignet ist. In grober Übersicht beinhaltet das Computersystem 910 mindestens einen Prozessor 950 für die Durchführung von Aktionen in Übereinstimmung mit Anweisungen, sowie ein oder mehrere Speichergeräte 970 und/oder 975 zum Speichern von Anweisungen und Daten. Das dargestellte Computersystem 910 beinhaltet einen oder mehrere Prozessoren 950 in Kommunikation über einen Bus 915 mit Speicher 970 und mit mindestens einem Netzwerkschnittstellen-Controller 920 mit einer Netzwerkschnittstelle 922, zum Anschließen an externe Netzwerkgeräte 924, die z. B. an einem Netzwerk (wie den in 1 dargestellten Netzwerken 110, 160 und 180) beteiligt sind. Der eine oder die mehreren Prozessoren 950 sind ebenfalls über den Bus 915 mit E/A-Geräten an einer oder mehreren E/A-Schnittstellen 930 und beliebigen anderen Geräten 980 verbunden. Der dargestellte Prozessor 950 ist in Zwischenspeicher 975 integriert oder direkt mit demselben verbunden. Im Allgemeinen führt ein Prozessor Anweisungen aus, die vom Speicher empfangen werden.
  • Genauer gesagt, kann es sich bei dem Prozessor 950 um eine beliebige Logikschaltung handeln, die Anweisungen, z. B. Anweisungen, die aus dem Speicher 970 oder Zwischenspeicher 975 geholt werden, verarbeitet. In vielen Ausführungsformen ist der Prozessor 950 eine Mikroprozessoreinheit oder ein Spezialprozessor. Das Computergerät 910 kann auf einem beliebigen Prozessor oder einem Satz von Prozessoren basieren, der/die in der Lage ist/sind, wie hierin beschrieben zu funktionieren. Der Prozessor 950 kann ein Einzelkern- oder Multikernprozessor sein. Der Prozessor 950 kann aus mehreren Prozessoren bestehen.
  • Der Speicher 970 kann ein beliebiges Gerät sein, das für die Speicherung computerlesbarer Daten geeignet ist. Der Speicher 970 kann ein Gerät mit Festspeicher oder ein Gerät zum Einlesen von Wechselspeichermedien sein. Der Speicher 970 kann sämtliche Formen von nicht flüchtigem Speicher, Medien und Speichergeräten, Halbleiterspeichergeräten (z. B. EPROM, EEPROM, SDRAM und USB-Flash-Speichergeräte), magnetische Datenträger, magneto-optische Datenträger und optische Datenträger (z. B. CD-ROM, DVD-ROM und Blu-Ray®-Discs) beinhalten. Ein Computersystem 910 kann eine beliebige Anzahl von Speichergeräten 970 aufweisen.
  • Der Zwischenspeicher 975 entspricht im Allgemeinen einer Form von Computerspeicher, der für schnelle Lesezeiten in unmittelbarer Nähe zum Prozessor 950 angeordnet ist. In einigen Implementierungen ist der Zwischenspeicher 975 Teil von oder auf dem gleichen Chip angeordnet wie der Prozessor 950. In einigen Implementierungen gibt es mehrere Zwischenspeicherebenen 975, z. B. Zwischenspeicherschichten L2 und L3.
  • Der Netzwerkschnittstellen-Controller 920 verwaltet den Datenaustausch über die Netzwerkschnittstelle 922. Der Netzwerkschnittstellen-Controller 920 verarbeitet die physischen und Datenverbindungsschichten des OSI-Modells für die Netzwerkkommunikation. In einigen Implementierungen werden Aufgaben des Netzwerkschnittstellen-Controllers von dem Prozessor 950 verarbeitet. In einigen Implementierungen ist der Netzwerkschnittstellen-Controller 920 Teil des Prozessors 950. In einigen Implementierungen hat ein Computersystem 910 mehrere Netzwerkschnittstellen-Controller 920. In einigen Implementierungen ist die Netzwerkschnittstelle 922 ein Anschlusspunkt für eine physische Netzwerkverbindung, z. B. ein RJ45-Steckverbinder. In einigen Implementierungen unterstützt der Netzwerkschnittstellen-Controller 920 drahtlose Netzwerkverbindungen, während ein Schnittstellenport 922 einem drahtlosen Empfänger/Sender entspricht. Im Allgemeinen tauscht ein Computergerät 910 Daten mit anderen Computergeräten 924 über physische oder drahtlose Verbindungen mit einer Netzwerkschnittstelle 922 aus. In einigen Implementierungen implementiert der Netzwerkschnittstellen-Controller 920 ein Netzwerkprotokoll, wie zum Beispiel Ethernet.
  • Die anderen Computergeräte 924 sind mit dem Computergerät 910 über eine Netzwerkschnittstelle 922 (manchmal zur Unterscheidung von einem Anschluss auf Protokollebene als „Port“ oder „physischer Anschluss“ bezeichnet) verbunden. Bei den anderen Computergeräten 924 kann es sich um ein gleichrangiges Computergerät, ein Netzwerkgerät oder ein beliebiges anderes Computergerät mit Netzwerkfunktion handeln. In einigen Implementierungen kann das andere Computergerät 924 ein Netzwerkgerät, wie z. B. ein Hub, eine Bridge, ein Switch oder ein Router sein, sodass das andere Computergerät 924 das Computergerät 910 mit einem Datennetzwerk wie dem Internet verbindet.
  • In manchen Verwendungen unterstützt die E/A-Schnittstelle 930 ein Eingabegerät und/oder ein Ausgabegerät (nicht dargestellt). In manchen Verwendungen sind Eingabegerät und Ausgabegerät, z. B. als Touchscreen, in die gleiche Hardware integriert. In manchen Verwendungen, z. B. in einem Serverkontext, gibt es keine E/A-Schnittstelle 930 oder wird die E/A-Schnittstelle 930 nicht verwendet. In manchen Verwendungen sind zusätzliche Komponenten 980 mit dem Computersystem 910, z. B. über einen Universal Serial Bus (USB) angeschlossene externe Geräte, verbunden.
  • Die anderen Geräte 980 können eine E/A-Schnittstelle 930, serielle Anschlüsse für externe Geräte und beliebige zusätzliche Coprozessoren beinhalten. In einigen Implementierungen beinhaltet das Computersystem 910 eine Schnittstelle (z. B. eine Universal Serial Bus(„USB“)-Schnittstelle) zum Anschließen von Eingabegeräten (z. B. eine Tastatur, ein Mikrofon, eine Maus oder ein anderes Zeigegerät, Ausgabegeräte (z. B. Videoanzeige, Lautsprecher, ein aktualisierbares Braille-Terminal oder einen Drucker) oder zusätzliche Speichergeräte (wie z. B. einen tragbaren Flash-Speicher oder ein externes Medienlaufwerk). In einigen Implementierungen ist das E/A-Gerät in das Computersystem 910, z. B. als Touchscreen auf einem Tablet-Gerät, integriert. In einigen Implementierungen beinhaltet ein Computergerät 910 ein zusätzliches Gerät 980, wie zum Beispiel einen Coprozessor, z. B. kann ein mathematischer Coprozessor den Prozessor 950 bei Berechnungen mit hoher Präzision oder komplexen Berechnungen unterstützen.
  • Implementierungen des Gegenstands und die in dieser Spezifikation beschriebenen Vorgänge können in digitalen elektronischen Schaltungen oder in Computer-Software implementiert sein, die in einem physischen Medium, Firmware oder Hardware, einschließlich der in dieser Spezifikation offenbarten Strukturen und ihrer strukturellen Entsprechungen oder in Kombinationen von einer oder mehreren derselben, enthalten sind. Implementierungen des in dieser Spezifikation beschriebenen Gegenstandes können als ein oder mehrere Computerprogramme implementiert werden, die auf einem physischen Medium, d. h. als ein oder mehrere Module mit Computerprogrammanweisungen enthalten sind, die auf einem oder mehreren Computerspeichermedien codiert sind, um von einem Datenverarbeitungsgerät ausgeführt zu werden bzw. den Betrieb desselben zu steuern. Bei einem Computerspeichermedium kann es sich um ein computerlesbares Speichergerät, ein computerlesbares Speichersubstrat, eine frei adressierbare oder serielle Zugriffsspeicheranordnung oder -Vorrichtung oder eine Kombination aus einem oder mehreren derselben handeln, oder kann darin enthalten sein. Bei dem Computerspeichermedium kann es sich zudem um eine oder mehrere separate Komponenten oder Medien (z. B. mehrere CDs, Datenträger oder andere Speichervorrichtungen) handeln bzw. diese können darin enthalten sein. Das Computerspeichermedium kann physisch und nicht transitorisch sein.
  • Die in dieser Spezifikation beschriebenen Vorgänge können als Vorgänge implementiert werden, die durch eine Datenverarbeitungsvorrichtung an Daten ausgeführt werden, die auf einer oder mehreren computerlesbaren Speichervorrichtung(en) gespeichert oder von anderen Quellen empfangen werden. Die Prozesse und Logikabläufe können zudem durch eine Zwecklogikschaltung, wie z. B. einen FPGA (Field Programmable Gate Array) oder einen ASIC (anwendungsspezifischen integrierten Schaltkreis) ausgeführt und das Gerät in Form derselben implementiert werden.
  • Auch wenn diese Spezifikation viele spezifische Implementierungsdetails enthält, sollten diese nicht als Einschränkungen des Umfangs der Erfindungen oder der Ansprüche ausgelegt werden, sondern als Beschreibungen von Merkmalen, die für bestimmte Implementierungen bestimmter Erfindungen spezifisch sind. Bestimmte Merkmale, die in dieser Spezifikation im Zusammenhang mit separaten Implementierungen beschrieben werden, können darüber hinaus in Kombination in einer einzelnen Implementierung implementiert werden. Umgekehrt können verschiedene Merkmale, die im Zusammenhang mit einer einzelnen Implementierung beschrieben werden, auch in mehreren Implementierungen separat oder in einer geeigneten Teilkombination implementiert werden. Außerdem können, auch wenn die Merkmale weiter oben ggf. als in bestimmten Kombinationen wirkend beschrieben und sogar zunächst als solche beansprucht werden, in einigen Fällen ein oder mehrere Merkmale einer beanspruchten Kombination aus der Kombination herausgeschnitten und die beanspruchte Kombination auf eine Teilkombination oder eine Variante einer Teilkombination gerichtet werden.
  • Verweise auf „oder“ können als einschließend ausgelegt werden, sodass alle Begriffe, die mithilfe von „oder“ beschrieben werden, einen beliebigen einzelnen, mehr als einen oder alle beschriebenen Begriffe angeben können. Die Begriffe „erster“, „zweiter“, „dritter“ usw. sollen nicht notwendigerweise eine Reihenfolge angeben und dienen im Allgemeinen lediglich zur Unterscheidung zwischen gleichartigen oder ähnlichen Gegenständen oder Elementen.
  • Es wurden somit bestimmte Implementierungen des Gegenstands beschrieben. Andere Implementierungen liegen innerhalb des Umfangs der folgenden Ansprüche. So können in einigen Fällen die in den Patentansprüchen angegebenen Aktionen in einer anderen Reihenfolge durchgeführt werden und dennoch die erwünschten Ergebnisse erzielen. Außerdem erfordern die in den beigefügten Figuren dargestellten Prozesse nicht unbedingt die gezeigte spezielle Reihenfolge oder fortlaufende Reihenfolge, um die erwünschten Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking oder Parallelverarbeitung verwendet werden.

Claims (20)

  1. System, umfassend: eine Wissensbasis, die eine gesammelte Vielzahl von erfolgreichen Traces von einer Vielzahl von Instanzen einer Anwendung auf einer Vielzahl von entfernten Geräten speichert; eine Netzwerkschnittstelle; und einen Computerprozessor, konfiguriert zum: Empfangen einer oder mehrerer Einheiten von Aufrufstapelinformationen über die Netzwerkschnittstelle von einer ersten Instanz der Anwendung, die auf einem ersten entfernten Gerät ausgeführt wird, wobei die Aufrufstapelinformationen periodische Erfassungen eines Ausführungsstatus für die erste Instanz der Anwendung beinhalten; Empfangen von der ersten Instanz der Anwendung eines Indikators dafür, dass die erste Instanz der Anwendung eine Vorgabe ausgeführt hat; Aggregieren, in Reaktion auf das Empfangen des Indikators, der empfangenen Einheiten von Aufrufstapelinformationen, die zu der ausgeführten Vorgabe führen, als erfolgreicher Trace und Speichern des erfolgreichen Trace in der Wissensbasis; Empfangen einer oder mehrerer Einheiten von Aufrufstapelinformationen von einer zweiten Instanz der Anwendung, die auf einem zweiten entfernten Gerät ausgeführt wird, wobei die Aufrufstapelinformationen periodische Erfassungen eines Ausführungsstatus für die zweite Instanz der Anwendung beinhalten; Feststellen einer Ähnlichkeit zwischen den von der zweiten Instanz der Anwendung empfangenen Aufrufstapelinformationen und der Vielzahl von erfolgreichen Traces; und Hinzufügen, in Reaktion auf das Feststellen der Ähnlichkeit, des zweiten entfernten Geräts zu einer Population von Geräten, die die Vorgabe voraussichtlich ausführen wird.
  2. System nach Anspruch 1, weiterhin umfassend ein Filter, das für die Verwendung eines Regelsatzes konfiguriert ist, um Informationen, die alle Instanzen der Anwendung gemeinsam haben, aus jeder empfangenen Einheit von Aufrufstapelinformationen auszuschließen.
  3. System nach Anspruch 2, wobei der Computerprozessor konfiguriert ist, den Regelsatz anhand der gesammelten Vielzahl von erfolgreichen Traces zu aktualisieren.
  4. System nach Anspruch 2, wobei der Computerprozessor konfiguriert ist, den Regelsatz anhand von Aufrufstapel-Traces, bei denen die Vorgabe nicht ausgeführt wurde, zu aktualisieren.
  5. System nach Anspruch 1, wobei die Aufrufstapelinformationen von einer mit der Anwendung verknüpften Bibliothek empfangen werden.
  6. System nach Anspruch 1, wobei eine Einheit von Aufrufstapelinformationen mehrere gebündelte Aufrufstapel-Erfassungen beinhaltet.
  7. System nach Anspruch 1, wobei die Periodizität der Aufrufstapel-Erfassungen zwischen einer Erfassung pro Sekunde und einer Erfassung pro Minute liegt.
  8. System nach Anspruch 1, wobei das Feststellen einer Ähnlichkeit zwischen den Aufrufstapelinformationen, die von der zweiten Instanz der Anwendung empfangen wurden, und der Vielzahl von erfolgreichen Traces das Verwenden eines Clustering-Algorithmus umfasst, mit dem bestimmt wird, ob von der zweiten Instanz der Anwendung empfangene Aufrufstapelinformationen zu einem Cluster von erfolgreichen Traces gehören.
  9. System nach Anspruch 1, wobei die Vorgabe ein Kaufereignis ist.
  10. Verfahren, umfassend: Empfangen einer oder mehrerer Einheiten von Aufrufstapelinformationen von einer ersten Instanz der Anwendung, die auf einem ersten entfernten Gerät ausgeführt wird, wobei die Aufrufstapelinformationen periodische Erfassungen eines Ausführungsstatus für die erste Instanz der Anwendung beinhalten; Empfangen von der ersten Instanz der Anwendung eines Indikators dafür, dass die erste Instanz der Anwendung eine Vorgabe ausgeführt hat; Aggregieren der empfangenen Einheiten von Aufrufstapelinformationen, die zu der ausgeführten Vorgabe führen, als erfolgreicher Trace; Sammeln einer Vielzahl von erfolgreichen Traces aus einer Vielzahl von Instanzen der Anwendung, die auf einer Vielzahl von entfernten Geräten ausgeführt werden; Empfangen einer oder mehrerer Einheiten von Aufrufstapelinformationen von einer zweiten Instanz der Anwendung, die auf einem zweiten entfernten Gerät ausgeführt wird, wobei die Aufrufstapelinformationen periodische Erfassungen eines Ausführungsstatus für die zweite Instanz der Anwendung beinhalten; Feststellen einer Ähnlichkeit zwischen den von der zweiten Instanz der Anwendung empfangenen Aufrufstapelinformationen und der Vielzahl von erfolgreichen Traces; sowie Hinzufügen des zweiten entfernten Geräts zu einer Population von Geräten, die die Vorgabe voraussichtlich ausführen werden.
  11. Verfahren nach Anspruch 10, weiterhin umfassend das Filtern der Aufrufstapelinformationen mit einem Regelsatz, um alle Informationen, die alle Instanzen der Anwendung gemeinsam haben, auszuschließen.
  12. Verfahren nach Anspruch 11, umfassend das Aktualisieren des Regelsatzes anhand der gesammelten Vielzahl von erfolgreichen Traces.
  13. Verfahren nach Anspruch 11, umfassend das Aktualisieren des Regelsatzes anhand von Aufrufstapel-Traces, bei denen die Vorgabe nicht ausgeführt wurde.
  14. Verfahren nach Anspruch 10, umfassend, dass die Aufrufstapelinformationen von einer mit der Anwendung verknüpften Bibliothek empfangen werden.
  15. Verfahren nach Anspruch 10, wobei eine Einheit von Aufrufstapelinformationen mehrere gebündelte Aufrufstapel-Erfassungen beinhaltet.
  16. Verfahren nach Anspruch 10, wobei die Periodizität der Aufrufstapel-Erfassungen zwischen einer Erfassung pro Sekunde und einer Erfassung pro Minute liegt.
  17. Verfahren nach Anspruch 10, wobei das Feststellen einer Ähnlichkeit zwischen den Aufrufstapelinformationen, die von der zweiten Instanz der Anwendung empfangen wurden, und der Vielzahl von erfolgreichen Traces das Verwenden eines Clustering-Algorithmus umfasst, mit dem bestimmt wird, ob von der zweiten Instanz der Anwendung empfangene Aufrufstapelinformationen zu einem Cluster von erfolgreichen Traces gehören.
  18. Verfahren nach Anspruch 10, wobei die Vorgabe ein Kaufereignis ist.
  19. Nicht-flüchtiges computerlesbares Medium, auf dem Anweisungen gespeichert sind, die bei Ausführung durch einen oder mehrere Computerprozessoren den einen oder die mehreren Computerprozessoren veranlassen zum: Empfangen einer oder mehrerer Einheiten von Aufrufstapelinformationen von einer ersten Instanz der Anwendung, die auf einem ersten entfernten Gerät ausgeführt wird, wobei die Aufrufstapelinformationen periodische Erfassungen eines Ausführungsstatus für die erste Instanz der Anwendung einschließen; Empfangen von der ersten Instanz der Anwendung eines Indikators dafür, dass die erste Instanz der Anwendung eine Vorgabe ausgeführt hat; Aggregieren, in Reaktion auf das Empfangen des Indikators, der empfangenen Einheiten von Aufrufstapelinformationen, die zu der ausgeführten Vorgabe führen, als erfolgreicher Trace und Speichern des erfolgreichen Trace in einer Wissensbasis, die eine gesammelte Vielzahl von erfolgreichen Traces aus einer Vielzahl von Instanzen der Anwendung speichert, die auf einer Vielzahl von entfernten Geräten ausgeführt werden; Empfangen einer oder mehrerer Einheiten von Aufrufstapelinformationen von einer zweiten Instanz der Anwendung, die auf einem zweiten entfernten Gerät ausgeführt wird, wobei die Aufrufstapelinformationen periodische Erfassungen eines Ausführungsstatus für die zweite Instanz der Anwendung beinhalten; Feststellen einer Ähnlichkeit zwischen den von der zweiten Instanz der Anwendung empfangenen Aufrufstapelinformationen und der Vielzahl von erfolgreichen Traces; und Hinzufügen des zweiten entfernten Geräts zu einer Population von Geräten, die die Vorgabe voraussichtlich ausführen werden.
  20. Nicht-flüchtiges computerlesbares Medium nach Anspruch 19, auf dem Anweisungen gespeichert sind, die bei Ausführung durch einen oder mehrere Computerprozessoren den einen oder die mehreren Computerprozessoren dazu veranlassen, die Aufrufstapelinformationen mit einem Regelsatz zu filtern, um Aufrufstapelinformationen, die alle Instanzen der Anwendung gemeinsam haben, auszuschließen.
DE112014007090.4T 2014-10-24 2014-10-24 Verfahren und systeme zum automatischen tagging anhand von software-ausführungs-traces Pending DE112014007090T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/089468 WO2016061820A1 (en) 2014-10-24 2014-10-24 Methods and systems for automated tagging based on software execution traces

Publications (1)

Publication Number Publication Date
DE112014007090T5 true DE112014007090T5 (de) 2017-07-13

Family

ID=55760101

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112014007090.4T Pending DE112014007090T5 (de) 2014-10-24 2014-10-24 Verfahren und systeme zum automatischen tagging anhand von software-ausführungs-traces

Country Status (5)

Country Link
US (4) US9940579B2 (de)
CN (2) CN107077341B (de)
DE (1) DE112014007090T5 (de)
GB (1) GB2546205B (de)
WO (1) WO2016061820A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9330119B2 (en) 2013-04-11 2016-05-03 Oracle International Corporation Knowledge intensive data management system for business process and case management
KR102408649B1 (ko) * 2016-02-19 2022-06-15 삼성전자주식회사 환경 설정 방법 및 장치
US11074609B1 (en) * 2016-03-03 2021-07-27 Google Llc Systems and method for improving mediated sponsored content networks using a stack trace
US10534643B2 (en) 2016-05-09 2020-01-14 Oracle International Corporation Correlation of thread intensity and heap usage to identify heap-hoarding stack traces
US10268601B2 (en) * 2016-06-17 2019-04-23 Massachusetts Institute Of Technology Timely randomized memory protection
US10310991B2 (en) 2016-08-11 2019-06-04 Massachusetts Institute Of Technology Timely address space randomization
US11314623B2 (en) * 2019-01-23 2022-04-26 Red Hat, Inc. Software tracing in a multitenant environment
US11074155B2 (en) * 2019-04-04 2021-07-27 International Business Machines Corporation Generating representative microbenchmarks
US11080114B2 (en) 2019-11-26 2021-08-03 International Business Machines Corporation Controlling interaction with a scalable application
CN111611161B (zh) * 2020-05-20 2023-08-08 中电科航空电子有限公司 一种应用于航空电子软件的轻量级调试工具的实现方法
US20220116782A1 (en) * 2020-10-08 2022-04-14 Qatar Foundation For Education, Science And Community Development Compromised mobile device detection system and method
US11356524B1 (en) 2020-12-18 2022-06-07 International Business Machines Corporation Coordinating requests actioned at a scalable application
US11422880B1 (en) * 2021-04-30 2022-08-23 Intuit Inc. Methods and systems for determining crash similarity based on stack traces and user action sequence information
CN117749854A (zh) * 2022-09-13 2024-03-22 腾讯科技(深圳)有限公司 一种建立网络连接的方法、装置、电子设备及存储介质

Family Cites Families (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5848396A (en) 1996-04-26 1998-12-08 Freedom Of Information, Inc. Method and apparatus for determining behavioral profile of a computer user
US5928369A (en) 1996-06-28 1999-07-27 Synopsys, Inc. Automatic support system and method based on user submitted stack trace
US6282701B1 (en) 1997-07-31 2001-08-28 Mutek Solutions, Ltd. System and method for monitoring and analyzing the execution of computer programs
US6112240A (en) 1997-09-03 2000-08-29 International Business Machines Corporation Web site client information tracker
US6651243B1 (en) 1997-12-12 2003-11-18 International Business Machines Corporation Method and system for periodic trace sampling for real-time generation of segments of call stack trees
US6751789B1 (en) 1997-12-12 2004-06-15 International Business Machines Corporation Method and system for periodic trace sampling for real-time generation of segments of call stack trees augmented with call stack position determination
US6002872A (en) 1998-03-31 1999-12-14 International Machines Corporation Method and apparatus for structured profiling of data processing systems and applications
US6857120B1 (en) 2000-11-01 2005-02-15 International Business Machines Corporation Method for characterizing program execution by periodic call stack inspection
US6944660B2 (en) 2001-05-04 2005-09-13 Hewlett-Packard Development Company, L.P. System and method for monitoring browser event activities
CA2491419A1 (en) 2002-06-28 2004-01-08 Omniture, Inc. Capturing and presenting site visitation path data
US7458078B2 (en) * 2003-11-06 2008-11-25 International Business Machines Corporation Apparatus and method for autonomic hardware assisted thread stack tracking
US7987453B2 (en) * 2004-03-18 2011-07-26 International Business Machines Corporation Method and apparatus for determining computer program flows autonomically using hardware assisted thread stack tracking and cataloged symbolic data
US7299319B2 (en) * 2004-03-22 2007-11-20 International Business Machines Corporation Method and apparatus for providing hardware assistance for code coverage
US7421684B2 (en) * 2004-03-22 2008-09-02 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for data coverage
US7792954B2 (en) 2004-04-02 2010-09-07 Webtrends, Inc. Systems and methods for tracking web activity
US7730460B1 (en) * 2004-06-18 2010-06-01 Apple Inc. Code execution visualization using software fingerprinting
CN1606307A (zh) * 2004-11-15 2005-04-13 南京大学 基于安全操作系统的网络强制访问控制的方法
US20060130001A1 (en) * 2004-11-30 2006-06-15 International Business Machines Corporation Apparatus and method for call stack profiling for a software application
US7509632B2 (en) * 2005-03-24 2009-03-24 International Business Machines Corporation Method and apparatus for analyzing call history data derived from execution of a computer program
US7792919B2 (en) * 2005-04-15 2010-09-07 Microsoft Corporation Methods and apparatus for performing diagnostics of web applications and services
US7356590B2 (en) 2005-07-12 2008-04-08 Visible Measures Corp. Distributed capture and aggregation of dynamic application usage information
US7734768B2 (en) 2005-07-26 2010-06-08 International Business Machines Corporation System and method for adaptively collecting performance and event information
US20070038896A1 (en) * 2005-08-12 2007-02-15 International Business Machines Corporation Call-stack pattern matching for problem resolution within software
JP5090661B2 (ja) 2006-04-12 2012-12-05 株式会社エヌ・ティ・ティ・ドコモ ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法
US20080005281A1 (en) * 2006-06-29 2008-01-03 Microsoft Corporation Error capture and reporting in a distributed computing environment
US20080052678A1 (en) * 2006-08-07 2008-02-28 Bryan Christopher Chagoly Method for Providing Annotated Transaction Monitoring Data for Initially Hidden Software components
GB0623355D0 (en) * 2006-11-23 2007-01-03 Ibm Software tracing
GB0623354D0 (en) * 2006-11-23 2007-01-03 Ibm Software tracing
US7533130B2 (en) 2006-12-19 2009-05-12 Yahoo! Inc. User behavior reporting based on pre-aggregated activity data
JP5081480B2 (ja) * 2007-03-28 2012-11-28 株式会社エヌ・ティ・ティ・ドコモ ソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法
US8214806B2 (en) * 2007-05-09 2012-07-03 International Business Machines Corporation Iterative, non-uniform profiling method for automatically refining performance bottleneck regions in scientific code
US8185880B2 (en) * 2007-10-04 2012-05-22 International Business Machines Corporation Optimizing heap memory usage
US10664889B2 (en) 2008-04-01 2020-05-26 Certona Corporation System and method for combining and optimizing business strategies
CN101582048A (zh) * 2008-05-16 2009-11-18 国际商业机器公司 一种用于缺陷管理的方法和系统
US20090328005A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Debugger call stack caching
CN101615143B (zh) * 2008-06-27 2013-04-17 国际商业机器公司 用于内存泄漏诊断的方法和装置
CN101661425B (zh) 2008-08-26 2012-03-21 国际商业机器公司 测试覆盖分析方法和装置
US7877642B2 (en) * 2008-10-22 2011-01-25 International Business Machines Corporation Automatic software fault diagnosis by exploiting application signatures
US8578019B2 (en) 2008-11-02 2013-11-05 Observepoint, Llc Monitoring the health of web page analytics code
US8713157B2 (en) 2008-11-14 2014-04-29 Interpret, Llc System for collecting computer application usage data of targeted application programs executed on a plurality of client devices
WO2010093996A1 (en) * 2009-02-13 2010-08-19 Peter Anthony Crosby Memory utilization analysis
US8930818B2 (en) 2009-03-31 2015-01-06 International Business Machines Corporation Visualization of website analytics
CN101561775B (zh) * 2009-05-12 2010-09-15 华为技术有限公司 内存监控方法和装置
US9020939B2 (en) * 2009-06-30 2015-04-28 International Business Machines Corporation Correlating queries issued by applications with their source lines and analyzing applications for problem determination and where used analysis
US20100333071A1 (en) * 2009-06-30 2010-12-30 International Business Machines Corporation Time Based Context Sampling of Trace Data with Support for Multiple Virtual Machines
CN101937439B (zh) 2009-06-30 2013-02-20 国际商业机器公司 用于收集用户访问相关信息的方法和系统
US8453027B2 (en) * 2009-09-17 2013-05-28 Microsoft Corporation Similarity detection for error reports
CA2776913C (en) * 2009-10-08 2017-01-03 Irdeto Canada Corporation A system and method for aggressive self-modification in dynamic function call systems
US9600347B2 (en) * 2009-11-26 2017-03-21 International Business Machines Corporation Verifying synchronization coverage in logic code
US8584098B2 (en) * 2009-12-04 2013-11-12 Sap Ag Component statistics for application profiling
US9081888B2 (en) 2010-03-31 2015-07-14 Cloudera, Inc. Collecting and aggregating log data with fault tolerance
CN102262527B (zh) * 2010-05-31 2015-12-09 国际商业机器公司 生成网络服务的方法和系统
US8959442B2 (en) * 2010-06-11 2015-02-17 Microsoft Corporation Memory allocation visualization for unmanaged languages
US8799872B2 (en) * 2010-06-27 2014-08-05 International Business Machines Corporation Sampling with sample pacing
US20120078708A1 (en) 2010-09-23 2012-03-29 Kate Taylor System and Method for Recording and Analyzing Internet Browser Traffic Independent of Individual or Specific Digital Platforms or Websites
US8949675B2 (en) * 2010-11-30 2015-02-03 Microsoft Corporation Error report processing using call stack similarity
US9274919B2 (en) * 2011-04-29 2016-03-01 Dynatrace Software Gmbh Transaction tracing mechanism of distributed heterogenous transactions having instrumented byte code with constant memory consumption and independent of instrumented method call depth
US8898290B2 (en) 2011-05-11 2014-11-25 Google Inc. Personally identifiable information independent utilization of analytics data
US9146909B2 (en) 2011-07-27 2015-09-29 Qualcomm Incorporated Web browsing enhanced by cloud computing
US8881107B2 (en) 2011-08-24 2014-11-04 Microsoft Corporation Automatic memory leak detection
JP5686199B2 (ja) * 2011-09-22 2015-03-18 富士通株式会社 サーバ装置、ログ転送プログラム、ログ転送方法およびログ転送システム
US20130227352A1 (en) * 2012-02-24 2013-08-29 Commvault Systems, Inc. Log monitoring
US20130249917A1 (en) * 2012-03-26 2013-09-26 Microsoft Corporation Profile data visualization
US9183108B2 (en) * 2012-03-27 2015-11-10 Microsoft Technology Licensing, Llc Logical grouping of profile data
US10063645B2 (en) 2012-05-10 2018-08-28 Clicktale Ltd. Method and system for monitoring and tracking browsing activity on handled devices
US8719791B1 (en) * 2012-05-31 2014-05-06 Google Inc. Display of aggregated stack traces in a source code viewer
US9317460B2 (en) * 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US20140040786A1 (en) 2012-08-01 2014-02-06 KeyMetric, Inc. Automatic tracking of user engagement with computing interfaces
US9658941B2 (en) * 2013-01-28 2017-05-23 Rackspace Us, Inc. Methods and systems of function-specific tracing
US9135145B2 (en) * 2013-01-28 2015-09-15 Rackspace Us, Inc. Methods and systems of distributed tracing
US9223681B2 (en) * 2013-02-15 2015-12-29 International Business Machines Corporation Automated debug trace specification
US9021448B1 (en) * 2013-02-28 2015-04-28 Ca, Inc. Automated pattern detection in software for optimal instrumentation
US10817312B2 (en) * 2013-03-14 2020-10-27 Microsoft Technology Licensing, Llc Programming model for performant computing in document-oriented storage services
US9465717B2 (en) * 2013-03-14 2016-10-11 Riverbed Technology, Inc. Native code profiler framework
US9256515B2 (en) * 2013-08-21 2016-02-09 Vmware, Inc. Stack trace compression
US9697545B1 (en) * 2014-03-11 2017-07-04 Vmware, Inc. Service monitor for monitoring and tracking the performance of an application running on different mobile devices
US9183116B1 (en) * 2014-04-23 2015-11-10 Microsoft Technology Licensing, Llc Call chain interval resource impact aggregation differencing
US9588872B2 (en) * 2015-02-20 2017-03-07 Vmware, Inc. Discovery of code paths
US10949316B2 (en) 2018-06-03 2021-03-16 Apple Inc. Detection and analysis of energy consumption of software applications

Also Published As

Publication number Publication date
GB2546205A (en) 2017-07-12
US10977561B2 (en) 2021-04-13
WO2016061820A1 (en) 2016-04-28
GB2546205B (en) 2021-07-21
US20210081812A1 (en) 2021-03-18
US11379734B2 (en) 2022-07-05
US20180225575A1 (en) 2018-08-09
US20160140031A1 (en) 2016-05-19
US9940579B2 (en) 2018-04-10
CN111913875A (zh) 2020-11-10
US20210056439A1 (en) 2021-02-25
CN107077341B (zh) 2020-07-14
CN111913875B (zh) 2024-04-26
CN107077341A (zh) 2017-08-18
GB201705847D0 (en) 2017-05-24

Similar Documents

Publication Publication Date Title
DE112014007090T5 (de) Verfahren und systeme zum automatischen tagging anhand von software-ausführungs-traces
DE102017121758A1 (de) Intelligente Assistenz für wiederholte Aktionen
DE102015004127A1 (de) Verfahren und System zum Vergleichen von verschienenen Versionen einer cloud-basierten Anwendung in einer Produktionsumgebung unter Verwendung von getrennten Back-End-Systemen
DE112016002120T5 (de) Entwicklungs- und Vetriebsplattform für Software
DE112010003144T5 (de) Erweiterbare Grundstruktur zur Unterstützung verschiedener Einsatzarchitekturen
DE202015009298U1 (de) Dynamische Anpassung von Shard-Zuweisungen
DE202017106604U1 (de) Benutzerdefinierte digitale Komponenten
DE112012002362T5 (de) Automatisierte Empfehlungen für Cloud-Computing-Optionen
DE112021002820T5 (de) Dynamische automatisierung einer auswahl von pipeline-artefakten
DE102014114005A1 (de) Risikobeurteilung von Interaktionen von Anwendungen für mobile Einheiten aufgrund von Reputation
DE202014010940U1 (de) Dynamische Shuffle-Rekonfiguration
DE102013201664B4 (de) Vorausschauendes Zwischenspeichern bei Telekommunikationstürmen unter Verwendung der Weitergabe der Kennung von Elementen von Daten mit hohem Bedarf auf einer geographischen Ebene
DE112012004776T5 (de) Erzeugen einer Produktionsserver-Lastaktivität für einen Testserver
DE112012001441B4 (de) Umsetzen von HTTP-Anforderungen in Vertrauenswürdigkeitsnachrichten zur Sicherheitsverarbeitung
DE112016002226T5 (de) Systeme und verfahren zur verwendung von webseitenskripten zu segmenten von kundensitzungen auf einer webseite
DE102014116744B4 (de) Management von Informationstechnologieressourcen
DE202014010924U1 (de) Nichtflüchtiges Shuffle-System
DE112012000305B4 (de) Gemeinsame Wiederherstellung von Datenquellen
DE112013006588T5 (de) Verwaltungssystem zum Verwalten eines Computersystems und Verwaltungsverfahren hierfür
DE112014002960T5 (de) Ableitung verallgemeinerter Testfälle
DE112020004760T5 (de) Steuern von interaktionen mit einer skalierbaren anwendung
DE102013209934A1 (de) Systemverwaltungsvorrichtung, Systemverwaltungsverfahren und Speichermedien
US11726893B2 (en) System for automatically evaluating a change in a large population of processing jobs
DE112021004854T5 (de) Dynamische ersetzung von verarbeitungselementen mit einem leistungsabfall in streaming-anwendungen
DE112020004688T5 (de) Debuggen und erstellen von profilen von maschinenlernmodelltraining

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: KASTEL, STEFAN, DIPL.-PHYS.UNIV., DE

Representative=s name: KILBURN & STRODE LLP, GB

Representative=s name: KILBURN & STRODE LLP, NL

Representative=s name: MAIKOWSKI & NINNEMANN PATENTANWAELTE PARTNERSC, DE

R082 Change of representative

Representative=s name: KASTEL, STEFAN, DIPL.-PHYS.UNIV., DE

Representative=s name: KILBURN & STRODE LLP, GB

Representative=s name: KILBURN & STRODE LLP, NL

R082 Change of representative

Representative=s name: KASTEL, STEFAN, DIPL.-PHYS.UNIV., DE

Representative=s name: KILBURN & STRODE LLP, GB

Representative=s name: KILBURN & STRODE LLP, NL

R082 Change of representative

Representative=s name: KILBURN & STRODE LLP, GB

Representative=s name: KILBURN & STRODE LLP, NL

R082 Change of representative

Representative=s name: KILBURN & STRODE LLP, GB

Representative=s name: KILBURN & STRODE LLP, NL

R082 Change of representative

Representative=s name: KILBURN & STRODE LLP, NL