Mehr

Empfehlungen zur grafischen Benutzeroberfläche für ArcPy/Python-Skript

Empfehlungen zur grafischen Benutzeroberfläche für ArcPy/Python-Skript


Ich habe einige Skripte mit ArcPy und Python erstellt und möchte eine Schnittstelle erstellen, um ein Shapefile auszuwählen. Was sind die besten Grafiktools für Python, um dies zu erreichen?

Ich brauche keine hochdetaillierte Grafik.


ArcGIS-basierte Lösung (Skriptwerkzeuge + Python-Add-Ins)

Mit einem Python-Skript können Sie ein benutzerdefiniertes Skriptwerkzeug erstellen, das über die GUI jedes anderen Core-Geoverarbeitungswerkzeugs verfügt. Es gibt Bedienfelder und Felder mit Durchsuchen-Schaltflächen, Sie können mit Dropdown-Listen, Kontrollkästchen, Tabellen mit mehreren Werten und vielem mehr arbeiten. Lesen Sie alle verfügbaren Parametertypen durch (Sie können Benutzern erlauben, auf die Karte zu klicken, Features zu zeichnen und diese Features in der Analyse und vielen anderen erweiterten Features zu verwenden).

Sie können Ihr Skript als Skriptwerkzeug in eine Geoverarbeitungs-Toolbox und als Python-Toolbox einbetten. Weitere Informationen finden Sie auf dieser Hilfeseite. Vergleich von benutzerdefinierten und Python-Toolboxen und dieser GIS.SE Warum Python-Toolboxen gegenüber Python-Skripttools lernen/verwenden? Frage, um mehr zu erfahren, wann welche zu verwenden ist. Wenn Sie gerade erst mit ArcGIS beginnen, sollten Sie zuerst Skriptwerkzeuge testen, bevor Sie mit Python-Toolboxen spielen. Imo ist es viel einfacher, mit ihnen zu arbeiten.

Als letzten Ausweg, wenn Sie möchten, dass Ihre Endbenutzer ein benutzerdefiniertes Dialogfeld haben, wenn sie Ihre Tools ausführen, sowie einige zusätzliche Parameterbehandlungen, sollten Sie Ihr Python-Skript-Tool in ein benutzerdefiniertes C++/.NET-Tool einbetten, das einige bieten könnte zusätzliche GUI-Funktionen, aber Sie sind sowieso auf den GUI-Bereich von GP Tools beschränkt.

Denken Sie daran, dass Sie über Python-Add-Ins verfügen, die zusätzliche Funktionen mit den Fenstern, Meldungen und Dialogfeldern bieten. Sie sind einfach zu bauen und zu verteilen und da Sie mit Python und arcpy vertraut sind, können Sie im Handumdrehen mit der Entwicklung beginnen.

Desktop-App / externe GUI in ein Toolbox-Tool einbetten

Wenn Sie eine eigenständige Anwendung entwickeln möchten (z. B. eine .exe-Datei für Windows), müssen Sie Ihr Skript mit einem beliebigen Dienstprogramm wie py2exe in eine .exe-Datei konvertieren. Damit dieses Skript ausgeführt werden kann, muss ArcGIS auf dem Computer installiert sein, da es das arcpy-Site-Paket verwenden muss, das bei der Installation von ArcGIS installiert wird.

Was die benutzerdefinierte GUI betrifft, haben Sie TKinter, PyQt/PySide, wxPython (einige der am häufigsten verwendeten). Es gibt eine Liste von Ressourcen, aus denen Sie lernen können.

Aufgrund der ArcGIS-Architektur können beim Ausführen der benutzerdefinierten GUI im selben Prozess wie ArcMap möglicherweise Probleme auftreten. Ich habe einige Beispiele mit Tkinter gesehen, aber im Allgemeinen gibt es viele Probleme, mit denen man sich beschäftigen muss.

Nach dem, was ich erlebt habe, kann ich sagen, dass es wahrscheinlich besser ist, entweder bei der GUI-Kernschnittstelle zu bleiben, die in den meisten Fällen alles bietet, was Sie jemals brauchen würden, oder eine benutzerdefinierte Anwendung zu entwickeln, die arcpy importiert (mit etwas mehr Konfigurationsanpassungen). und Arbeiten mit der benutzerdefinierten GUI (wie sie mit PyQt entwickelt wurde), ohne eine ArcGIS-Anwendung zu starten.

Es gibt einen ArcGIS Idea Form Builder für Python Tools, aber ich bezweifle ernsthaft, dass Esri diesen entwickeln wird, also suchen Sie besser nach anderen Alternativen.

Ich habe einige Tests durchgeführt, bei denen ein benutzerdefiniertes Python-Skript in eine Toolbox in ArcGIS Pro eingebettet wurde, indem das PyQt-Skript aufgerufen wurde, und es gab keine Probleme beim Einrichten und Ausführen. Wenn die Verwendung von Pro eine Option für Sie ist, sollten Sie dies in Betracht ziehen - es ist viel einfacher, benutzerdefinierte Python-Werkzeuge mit eigener GUI in Pro einzubetten als in ArcMap. Einer der Fallstricke ist, dass Pro Python 3.4 verwendet und es sich um 64-Bit-Python handelt, was bestimmte Auswirkungen auf die Kompatibilität mit PyQt oder einer anderen Plattform Ihrer Wahl hat.


Inventarisierung von Computernamen, MAC und Netzwerkschnittstelle mit einem GPO-Startskript

Ich möchte eine Liste mit Computernamen, MAC-Adressen und Computernamen in meinem Netzwerk erstellen. Die Idee ist, diese Informationen mit einem Startskript auf dem Client zu sammeln, das von einem GPO in meiner Windows-Serverdomäne aufgerufen wird. Das gewünschte Format sollte eine reine Textdatei auf einer Windows-Server-Dateifreigabe sein, zum Beispiel Server echnicinventory.txt

Format einer Datenzeile in der Inventory.txt:

Alle Clients sind Windows 10-Clients. Neue oder aktualisierte Datensätze sollten an die Datei Inventory.txt angehängt werden

Wenn es mehr als eine MAC-Adresse pro Computer gibt (zB LAN und WLAN), dann möchte ich für jede MAC eine eigene Zeile haben.

Wie erreiche ich dies mit einem Befehlszeilenskript? Das Skript läuft mit Adminrechten, der Zugriff auf die server echnicinventory.txt ist gewährleistet. Meine angeforderten Informationen befinden sich in der Ausgabe des Befehls "ipconfig /all", aber wie können Sie die Informationen daraus extrahieren, um das gewünschte Ausgabeformat zu erhalten?

Es kann besser sein, auf die Informationen anders zuzugreifen als über "ipconfig /all", da die Ausgabe von ipconfig sprachabhängig ist. Sprachunabhängige Lösungen sind wahrscheinlich besser. Da ich Powershell-Skripte auch von der Kommandozeile aus starten kann, sind auch Lösungen in Powershell willkommen.


Neueste Apple-Patente:

Diese Anmeldung beansprucht die Priorität der US-Patentanmeldung Seriennr. 62/855,288, eingereicht am 31. Mai 2019, mit dem Titel „Third Party Application Performance Improvement Toolkit“, vollständig und für alle Zwecke.

Die vorliegende Offenbarung betrifft allgemein Techniken zum Überwachen und Messen von Leistungs-, Leistungs- und Eingabe-/Ausgabe-(I/O)-Metriken zum Testen von Beta- und verschiedenen kommerziellen Releaseversionen von Anwendungen für elektronische Geräte.

Verbraucher können sich mit dem Stromverbrauch, der Leistung und den E/A-Kennzahlen für Anwendungen beschäftigen. Elektronische Geräte können eine begrenzte Batterielebensdauer, Verarbeitungsleistung und Anzahl von Schreibvorgängen auf ein Solid-State-Speichergerät aufweisen. Die Messung dieser Metriken kann für Drittentwickler schwierig sein, die keine fundierten Kenntnisse des Betriebssystems besitzen. Frühere Bemühungen zur Überwachung und Messung dieser Metriken waren oft ungenau, ineffizient und beeinträchtigten die Leistung des Betriebssystems. Entwickler wussten oft nicht, welche Leistungskennzahlen sie sammeln sollten, um die Leistung der Anwendung zu verbessern. Die Bereitstellung dieser Metriken für Drittentwickler in einem verwendbaren Format kann zu effizienteren, leistungsfähigeren Anwendungen führen, was zu einer insgesamt verbesserten Kundenzufriedenheit mit den Anwendungen führt.

KURZE ZUSAMMENFASSUNG

Bestimmte Ausführungsformen richten sich auf Techniken (z. B. ein Verfahren, ein Speicher oder ein nichtflüchtiges computerlesbares Medium, das Code oder Anweisungen speichert, die von einem oder mehreren Prozessoren ausführbar sind) zum Messen von Leistungskennzahlen sowie zum Bereitstellen dieser Kennzahlen über eine Anwendungsprogrammierschnittstelle (API). ) auf den Entwickler zugreifen können, um ihre Anwendungen zu optimieren. Ein Ziel besteht darin, diese Metriken auf eine Weise zu überwachen und anzuzeigen, die wenig oder keine Auswirkungen auf die Leistung der Anwendung, des Betriebssystems und des elektronischen Geräts hat. Die Leistungsmetriken können von verschiedenen Teilen des Betriebssystems überwacht oder abgerufen werden, einige im Kernelbereich und einige im Benutzerbereich. Die Metriken können für mehrere Geräte gesammelt werden, auf denen die Anwendung ausgeführt wird, und zur Überprüfung durch Entwickler in einer integrierten Entwicklungsumgebung aggregiert werden.

Diese und andere Ausführungsformen der Erfindung werden unten im Detail beschrieben. Zum Beispiel sind andere Ausführungsformen auf Systeme, Vorrichtungen und computerlesbare Medien gerichtet, die mit hierin beschriebenen Verfahren verbunden sind.

Weitere Anwendungsbereiche der vorliegenden Offenbarung werden aus der nachstehenden ausführlichen Beschreibung ersichtlich. Es versteht sich, dass die detaillierte Beschreibung und die spezifischen Beispiele, während sie verschiedene Ausführungsformen angeben, nur zum Zwecke der Veranschaulichung gedacht sind und den Umfang der Offenbarung nicht notwendigerweise einschränken sollen.

KURZE BESCHREIBUNG DER ZEICHNUNGEN

FEIGE. 1 veranschaulicht ein vereinfachtes, beispielhaftes Diagramm eines Systems zum Sammeln, Aggregieren und Visualisieren von Betriebsmetriken zum Bewerten von Drittanwendungen.

FEIGE. 2 veranschaulicht ein beispielhaftes Diagramm eines Systems zum Sammeln, Aggregieren und Visualisieren von Betriebsmetriken zum Bewerten von Drittanwendungen.

FEIGE. 3 veranschaulicht eine beispielhafte Architektur für ein System für ein Toolkit zur Verbesserung der Anwendungsleistungsfähigkeit von Drittanbietern.

FEIGE. 4 veranschaulicht ein Flussdiagramm zum Sammeln und Aggregieren von Metrikdatensatzdaten für die Berechnung von Betriebsmetriken.

FEIGE. 5 veranschaulicht ein beispielhaftes Diagramm regionaler Markierungstechniken.

FEIGE. 6 veranschaulicht eine beispielhafte Architektur für die Datenaufnahme und -verarbeitung.

FEIGE. 7 veranschaulicht einen beispielhaften Prozess zur Metrik-Aggregation.

FEIGE. 8 veranschaulicht ein beispielhaftes Diagramm für ein Aggregationsmodul.

FEIGE. 9 veranschaulicht ein Flussdiagramm zum Zuweisen von Metriken zu Datenstrukturen und Clustern in Abhängigkeit von Klasse und Modell des Geräts.

FEIGE. 10 veranschaulicht ein Flussdiagramm, das eine Datenstruktur zum Aggregieren von Metrikdatensätzen in Cluster von segmentierten Wertebereichen erzeugt.

FEIGE. 11 veranschaulicht ein beispielhaftes System zur Visualisierung.

FEIGE. 12 veranschaulicht ein Flussdiagramm zum Auswählen und Anzeigen einer oder mehrerer Betriebsmetriken unter Verwendung einer grafischen Benutzeroberfläche.

FEIGE. 13 veranschaulicht eine beispielhafte grafische Benutzeroberfläche für den Anwendungsstromverbrauch.

FEIGE. 14 veranschaulicht eine zweite beispielhafte grafische Benutzeroberfläche für den Anwendungsstromverbrauch.

FEIGE. 15 veranschaulicht eine dritte beispielhafte grafische Benutzeroberfläche zum Anzeigen von Anwendungsleistungsmetriken.

FEIGE. 16 veranschaulicht eine beispielhafte grafische Benutzeroberfläche zum Anzeigen von Anwendungsleistungsmetriken.

FEIGE. 17 veranschaulicht eine beispielhafte grafische Benutzeroberfläche für logische Schreibvorgänge in ein Halbleiterbauelement.

FEIGE. 18 veranschaulicht ein Blockdiagramm für eine beispielhafte Vorrichtung, um die eine oder die mehreren hierin beschriebenen Techniken auszuführen.

In den beigefügten Figuren können ähnliche Komponenten und/oder Merkmale das gleiche Bezugszeichen aufweisen. Ferner können verschiedene Komponenten des gleichen Typs dadurch unterschieden werden, dass dem Referenzetikett ein Strich und ein zweites Etikett folgen, das zwischen den ähnlichen Komponenten unterscheidet. Wenn in der Spezifikation nur das erste Referenzetikett verwendet wird, ist die Beschreibung auf jede der ähnlichen Komponenten mit demselben ersten Referenzetikett unabhängig von dem zweiten Referenzetikett anwendbar.

DETAILLIERTE BESCHREIBUNG

Bestimmte Ausführungsformen der vorliegenden Offenbarung beziehen sich auf Geräte, computerlesbare Medien und Verfahren zum Messen von Betriebsmetriken (z. B. Leistungs- und Leistungsmetriken), die diese Metriken über eine Anwendungsprogrammierschnittstelle (API) bereitstellen, damit Entwickler darauf zugreifen können, um ihre Anwendungen zu optimieren. Bei den offenbarten Techniken kann ein Prozessor einen Ausführungstrigger von einer Drittanwendung empfangen, der eine Datenprotokollierungsroutine informiert, um eine oder mehrere Rohdatenmetriken zu sammeln. Der Ausführungstrigger kann allgemein für die Anwendung sein oder spezifisch für eine bestimmte Routine der Anwendung sein (z. B. Videostreaming-Routine einer Social-Media-Anwendung). Die Techniken können steuern, wie die Kennungen verwendet werden, um so anzupassen, wie die Betriebsmetriken gemessen werden. Die Techniken können bestimmen, welche Metriken gemessen werden sollen, und Anweisungen an Systemroutinen bereitstellen, die die Rohdaten für Ereignisse erfassen. Als Beispiele können die Rohdaten für diese Metriken vom Gerätekern in dem einen oder mehreren Prozessoren, einer Protokollierungsroutine des Betriebssystems (z. B. iOS) und einer Hardwareprotokollierungsroutine erfasst werden. Die Ereignisdaten können periodisch über den Tag verteilt in einem persistenten Speicher gespeichert werden (z. B. N Mal pro Tag). Nachts können die Techniken die Ereignisdaten zusammenfassen und die zusammengefassten Daten können an einen Aggregationsserver gesendet werden. Der Aggregationsserver kann Betriebsmetrikdaten für verschiedene Geräte sammeln. Der Aggregationsserver kann den Betriebsmetriken zugeordnete Metadaten überprüfen, um die Klassifizierung und das Modell der elektronischen Geräte zu bestimmen, auf denen die Anwendung ausgeführt wird. Ein Visualisierungsserver kann Entwicklereingaben empfangen, um die Anzeige der Daten für die Analyse anzupassen. Ein Entwickler kann beispielsweise die Klassifizierung des Geräts (z. B. Smartphone oder Tablet) und das Modell des Geräts (z. B. iPhone X) auswählen, um zu bestimmen, welche Betriebsmetriken bereitgestellt werden können. Der Visualisierungsserver präsentiert die Betriebsmetrikdaten auf einem Display in einer Weise, die vom Entwickler leicht überprüft und analysiert werden kann.

Wie hierin verwendet, handelt es sich bei einem metrischen Datensatz um Rohdaten von einem elektronischen Gerät, die ein Maß für einen gewissen Betrieb des Geräts sind. Wie hierin verwendet, ist eine Betriebsmetrik ein Wert, der aus einem oder mehreren Metrikdatensätzen berechnet wird, die verwendet werden können, um einen Betriebszustand einer Anwendung zu messen (z. B. Stromverbrauch oder Leistung einer Anwendung). Wie hierin verwendet, wird eine Klassifizierung verwendet, um eine allgemeine Beschreibung eines elektronischen Geräts (z. B. eines Tablets oder eines Smartphones) zu beschreiben. Wie hierin verwendet, beschreibt ein Modell eine spezifische Ausführungsform (z. B. ein iPhone X oder iPhone 8 usw.) eines elektronischen Geräts einer bestimmten Klasse (z. B. eines Smartphones). Wie hierin verwendet, ist eine Datenstruktur eine Sammlung von Datenwerten, den Beziehungen zwischen ihnen und den Funktionen oder Operationen, die auf die Daten angewendet werden können. Eine Datenstruktur kann eine Anzahl von Clustern umfassen, wobei jeder Cluster einen segmentierten Wertebereich umfasst.

I. Datenaufnahme und -verarbeitung

A. Sammeln und Aggregieren von Metrikdatensätzen

Die hierin offenbarten Techniken können einen Prozess zur Datenaufnahme und Verarbeitung von Rohdaten umfassen, die verwendet werden können, um eine oder mehrere Betriebsmetriken zu berechnen. Die Rohdaten für diese Metriken können vom Gerätekern, einer Protokollierungsroutine (z. B. Powerlog) des Betriebssystems (z. B. iOS) und einer Hardware-Protokollierungsroutine (z. B. Signpost) erfasst werden.

FEIGE. 1 veranschaulicht ein vereinfachtes, beispielhaftes Diagramm eines Systems 100 zum Sammeln, Aggregieren und Visualisieren von Betriebskennzahlen zur Bewertung von Drittanbieteranwendungen 102. Eine Drittanbieteranwendung 102 ist ein Programm (z. B. eine Anwendung oder App), das von einem Entwickler erstellt wurde, der sich vom Hersteller des elektronischen Geräts, auf dem die Anwendung ausgeführt wird, oder dem Eigentümer der Website, die sie anbietet, unterscheidet. Die Drittanbieteranwendung 102 in einen Speicher des Geräts geladen und auf einem oder mehreren Prozessoren des Geräts ausgeführt werden können. Eine Drittanbieteranwendung 102 kann einem Benutzer Informationen auf einem Display des elektronischen Geräts präsentieren 104.

Das System 100 kann ein oder mehrere elektronische Geräte enthalten 104, ein Aggregationsserver 106 und einen Visualisierungsserver 108. Die elektronischen Geräte 104 können ein Smartphone, ein Tablet, einen tragbaren Computer oder ein tragbares Gerät umfassen, sind aber nicht darauf beschränkt. Die elektronischen Geräte 104 kann verschiedene Klassifizierungen sowie verschiedene Gerätemodelle umfassen. Das elektronische Gerät 104 kann ein Betriebssystem ausführen 110 um eine oder mehrere Anweisungen aus einer Vielzahl von Codes auszuführen, die in einem Speicher gespeichert sind 112 auf dem elektronischen Gerät 104. Ein Betriebssystem (OS) 110 ist eine Systemsoftware, die Hardware- und Softwareressourcen verwaltet und allgemeine Dienste für Programme (z. B. Anwendungen) bereitstellt. Ein Kernel 114 ist der zentrale Teil eines Betriebssystems 110. Der Kernel 114 verwaltet den Betrieb des elektronischen Geräts 104 und die Hardware, insbesondere Speicher- und CPU-Zeit. Der Aggregationsserver 106 kann metrische Datensatzdaten für eine Vielzahl verschiedener elektronischer Geräte sammeln 104 und zur Berechnung verschiedener verschiedener Betriebskennzahlen. Der Visualisierungsserver 108 empfängt aggregierte Betriebskennzahlen, um die Betriebskennzahlen zur Bewertung der Leistung von Drittanbieteranwendungen anzuzeigen 102.

FEIGE. 2 liefert zusätzliche Details zum System 100 in FIG. 1. Die Drittanbieteranwendung 202 kann eine Kennung an das Betriebssystem übermitteln 210. Die Kennung kann dazu führen, dass die Betriebsmetrikroutine 226 um einen Prozess auszuführen, um eine Vielzahl von Metrikdatensätzen zu sammeln. In einigen Ausführungsformen kann die Kennung die Betriebsmetrikroutine informieren 226 die Arten von Metriken, die der Entwickler sammeln wollte. In einigen Ausführungsformen kann ein Entwickler die Anwendung registrieren 202 mit dem Betriebssystementwickler. Der Bewerbungsregistrierungsprozess kann Auskunft über die Bewerbung geben 202 und kann die betriebliche Metrik-Routine informieren 226 der spezifischen Betriebskennzahlen, die der Entwickler messen möchte.

Das Betriebssystem 210 des elektronischen Geräts 204 kann verschiedene Protokollierungsroutinen beinhalten 216. In verschiedenen Ausführungsformen können die Protokollierungsroutinen kontinuierlich vom Betriebssystem des Geräts erzeugte Daten erfassen und die Daten in einem dauerhaften Speicher (z. B. einem Speicher) speichern. Die Protokollierungsroutine 216 kann Betriebssystemdaten erfassen 218 (z. B. Vordergrundzeit, Hintergrundzeit, Netzwerkbytes (pro Anwendung) und Standortaktivität). Die Protokollierungsroutine 216 kann die Betriebsdaten sammeln 218 und stellen Sie es der betrieblichen Metrikroutine zur Verfügung 226.

Die Protokollierungsroutine 216 kann Metriken zu CPU-Zeit, GPU-Zeit, CPU-Anweisungen sammeln, durchschnittliche Pixelluminanz, Mobilfunknetzbedingungen, Anzahl logischer Schreibvorgänge und Speichernutzung anzeigen. Die Protokollierungsroutine 216 erfasst Snapshots für diese Metriken für alle Prozesse und Anwendungen, die auf dem Betriebssystem ausgeführt werden 210 aus verschiedenen Datenquellen bei signifikanten Batteriewechselereignissen (SBC). Diese Ereignisse treten auf, wenn sich der Batteriestand des elektronischen Geräts während des normalen Gebrauchs des Geräts ändert. Die Protokollierungsroutine 216 ist konfigurierbar, um zusätzliche Snapshots bei anderen wichtigen Ereignissen auf Systemebene zu ermöglichen. In einigen Ausführungsformen wird die Protokollierungsroutine einmal täglich 216 fasst diese Metriken pro Anwendung aus den letzten 24 Stunden (Mitternacht bis Mitternacht) zusammen und liefert die Nutzlast an die operative Metrikroutine 226 über eine prozessübergreifende Kommunikationsplattform (z. B. XPC). Nach Erhalt dieser Daten wird die Betriebsmetrikroutine 226 speichert diese Daten in seinem lokalen persistenten Speicher 212.

Im Kernel 214, eine Vielzahl von Kerneldaten 222 erzeugt werden kann. Die Kernel-Daten 222 kann die Zeit der CPU/Grafikprozessoreinheit (GPU), die Anzahl der logischen Schreibvorgänge auf ein Solid-State-Gerät (SSD) und die Speichernutzung umfassen. Eine Kernel-Logging-Routine 224 kann die Kerneldaten sammeln collect 222 und der betrieblichen Metrikroutine zur Verfügung stellen 226. Die Betriebsmetrikroutine kann die Kerneldaten im Speicher speichern data 212.

Wie bereits erwähnt, sind die Daten aus verschiedenen Quellen des Betriebssystems 210 einschließlich der Kernel-Logging-Routine 224 wird von der Logging-Routine aufgenommen 216 und an die operative Protokollierungsroutine übergeben 216 einmal täglich über eine prozessübergreifende Kommunikationsplattform (z. B. XPC). Die Kernel-Logging-Routine 224 unterhält verschiedene kumulative Zähler pro Prozess (z. B. CPU-Zeit, GPU-Zeit, CPU-Anweisungen usw.), die während der Ausführung dieser Prozesse kontinuierlich im Speicher aktualisiert werden.

Das Betriebssystem 210 kann auch Instrumentierung beinhalten 220. Die Instrumentierung 220 ermöglicht die selektive Erfassung einer oder mehrerer Betriebsmetriken, die ein bestimmtes Ereignis umgeben, während eines diskreten Zeitraums oder während der Ausführung einer bestimmten Funktion einer Anwendung 202. Die Instrumentierung 220 kann Daten auf Systemebene protokollieren (z. B. Start- und Wiederaufnahmezeiten, Hangdauer, Bildraten). Außerdem ist die Instrumentierung 220 kann verwendet werden, um regionale Markierungen zu setzen, um Funktionen der Anwendungen zu bewerten 202. Die regionalen Marker des Betriebssystems (OS) können verwendet werden, um die CPU-Zeit, die Anzahl der CPU-Befehle, den aktuellen und Spitzenspeicher sowie logische Schreibvorgänge auszuwerten.

Benutzerdefinierte Protokollierungsroutinenmarkierungen (z. B. MXSignposts) werden auf den Bereichsmarkierungen der Betriebssystemroutine (z. B. os_signpost) aufgebaut. Benutzerdefinierte Protokollierungsroutinen bieten eine Momentaufnahme einer Teilmenge von Metriken für ihren Prozess aus der Kernel-Protokollierungsroutine 224 und diese Daten im Metadatenfeld der operativen regionalen Markierungen zu speichern. Benutzerdefinierte Protokollierungsroutinen ermöglichen es Entwicklern, kritische Abschnitte ihres Codes zu markieren und Leistungs- und Leistungsmetriken für diese markierten Abschnitte zu sammeln.

Für die Wegweiserdaten auf Systemebene instrumentieren die Entwickler intern verschiedene Teile des Systems. Zum Beispiel werden Startzeiten gemessen, indem der Gerätebetriebssystemmanager zum Handhaben von Vordergrundaufgaben (z. B. Frontboard) mit Betriebssystemmarkierungen (z. B. os_signposts) instrumentiert wird. Benutzerdefinierte Protokollierungsroutinenmarkierungen (z. B. MXSignposts) werden durch das System von den anderen Betriebssystemmarkierungen (z. B. os_signposts) unter Verwendung des Subsystemfeldwerts von os_signposts unterschieden. Benutzerdefinierte Protokollierungsroutinenmarkierungen werden intern mit einem Subsystemwert gekennzeichnet, der für die Kundenprotokollierungsroutinenmarkierungen eindeutig ist.

Die Drittanbieteranwendung 202 kann die Metrikdatensatzdaten sammeln (aus der betrieblichen Metrikroutine gesammelt) 226) und speichern Sie die metrischen Datensatzdaten im Speicher 212. Darüber hinaus kann die Drittanbieteranwendung die Messwertaufzeichnungsdaten außerhalb des elektronischen Geräts übertragen transmit 204. Die metrischen Datensatzdaten können über ein Netzwerk (z. B. das Internet) übertragen werden. Die Metrikdatensatzdaten können mit Metrikdaten von anderen Geräten im Aggregationsserver aggregiert werden 206. Der Aggregationsserver 206 kann die metrischen Datensatzdaten entschlüsseln. Eine Vielzahl von Metadaten begleitet die metrischen Datensatzdaten. Die Vielzahl von Metadaten kann die Klassifizierung des Gerätemodells identifizieren 204 aus dem die Daten stammen. Der Aggregationsserver 206 kann die Daten basierend auf dem Wert der Betriebsmetrik in einer Datenstruktur speichern. Der Aggregationsserver 206 kann eine effiziente Analyse der Betriebskennzahlen ermöglichen.

Der Visualisierungsserver 208 erhält aggregierte Betriebsmetrikdaten, um die Daten zur Bewertung der Leistung von Drittanbieteranwendungen anzuzeigen 202.

FEIGE. 3 veranschaulicht eine beispielhafte Architektur 300 für ein System zur Datenaufnahme und -verarbeitung. Die Architektur 300 enthält eine Toolkit-Anwendung 302, ein Betriebssystem, das Instrumentierungsroutinen enthält 320, eine operative Metrik-Routine 326, ein oder mehrere Speichergeräte 312, ein Visualisierungsserver 308, und eine oder mehrere Datenquellen 322.

Die Toolkit-Anwendung 302 stellt eine Schnittstelle zwischen einem Daemon für Betriebsmetrikroutinen bereit, um Betriebsmetriken zu verarbeiten und auf einen oder mehrere Visualisierungsserver hochzuladen 308. Die Toolkit-Anwendung 302 enthält Anwendungscode 328 das bewirkt, dass der eine oder die mehreren Prozessoren des elektronischen Geräts bestimmte Funktionen ausführen. Die Toolkit-Anwendung 302 kann beim Betriebssystem registriert werden, um die Betriebsmetriken für andere Anwendungen (z. B. Anwendungen von Drittanbietern) auszuwerten, die auf dem elektronischen Gerät ausgeführt werden. Die Toolkit-Anwendung 302 Schnittstellen zur betrieblichen Messroutine 326 durch das Metrik-Routine-Plugin 330.

Das Metrik-Routine-Plugin 330 kann eine bestimmte überwachte Anwendung registrieren. Der Registrierungsprozess kann die betriebliche Metrikroutine informieren 326 der spezifischen Betriebsmetriken, die für überwachte Anwendungen gemessen und bewertet werden sollen. In einigen Ausführungsformen ist ein API-Aufruf von der Metrik-Plugin-Routine 330 kann die Betriebsmetrikroutine anfordern 326 um die zusammengefassten Metriken zu übermitteln. In einigen Ausführungsformen können die zusammengefassten Metriken in einem Cache gespeichert werden 332 der Toolkit-Anwendung 302. Der Cache 332 in FIG. 3 kann die Metrikzusammenfassung pro Anwendung behalten, bis sie an die Anwendung geliefert werden kann 302. Um den Energieaufwand für die Bereitstellung dieser Daten an die Anwendung zu minimieren 302, die Zusammenfassung wird nicht an die Anwendung geliefert 302 bis es vom Benutzer gestartet wird. Dadurch kann das System 300 um die Anwendung nicht aufzuwecken 302 zum alleinigen Zweck der Bereitstellung dieser Metrikzusammenfassung und verbrauchen dadurch zusätzliche Energie. Die operative Metrik-Routine 326 kann eine Liste von Anwendungspaket-IDs führen, die bei der Betriebsmetrikroutine registriert wurden 326.

Die Betriebsmetrikroutine 326 kann eine Daemon-Routine sein, die bei Bedarf gestartet werden kann und Daten vom Datenlogger sammelt 316, und andere Datenquellen 318, und im persistenten Speicher gespeichert werden 312. Die operative Metrik-Routine 326 liest die im persistenten Speicher gespeicherten Daten data 312 und liefert eine Zusammenfassung der Metriken pro Anwendung an einen Cache 332 für die Toolkit-Anwendung 302. Das metrische Routine-Plugin 330 kann den Cache lesen 332 wenn die Toolkit-Anwendung 302 läuft. Der Anwendungscode 328 kann die Metriken verarbeiten und auf einen oder mehrere Visualisierungsserver hochladen 308 zur Analyse und Anzeige.

Sobald ein Datensatz an die Anwendung geliefert wurde 302, kann es aus dem persistenten Speicher gelöscht werden 312. In einigen Ausführungsformen wird derselbe Satz von Metriken für alle überwachten Anwendungen aufgezeichnet. In einigen Ausführungsformen ist die Toolkit-Anwendung 302 kann den spezifischen Satz von Metriken steuern, die für die überwachten Anwendungen protokolliert wurden.

Ein Datenlogger 316 kann eine oder mehrere Datenquellen überwachen 316 für die Betriebskennzahlen, die bei der Betriebskennzahlen-Routine registriert sind 326. Die Betriebsmetriken können bei verschiedenen Ereignissen auf Betriebssystem- und Anwendungsebene gesammelt werden. Beispielsweise kann die Startzeit während der ersten Ausführung der Anwendung erfasst werden. Die Zusammenfassung der Metriken pro Anwendung ist eine Zusammenfassung der Leistungs- und Leistungsmetriken aus einem vorbestimmten Zeitraum (z. B. einem Zeitraum von 24 Stunden). Diese Daten können der Anwendung wieder zur Verfügung gestellt werden 302 unter Verwendung einer Datenstruktur, die alle Metriken enthält. Die Datenstruktur bietet auch Mechanismen zum Exportieren dieser Daten in andere Datenverarbeitungsformate (z. B. JSON und Dictionary). Nachfolgend eine beispielhafte Nutzlast: <„foreground_time“: 625, „background_time“: 625, „cpu_time“: 80, „gpu_time“: 20, „average_app_apl“: 58,6, „bytes“: <“wifi_up“: 102323, „ wifi_down“: 4202399, „bb_up“: 23332, „bb_down“: 5454,>>

Die operative Metrik-Routine 326 kann Rohdaten aus mehreren verschiedenen Quellen abrufen, einschließlich einer Protokollierungsroutine des Betriebssystems 316 (z. B. Powerlog) und Kernel-Logs (z. B. Coalitions). Andere Datenquellen werden erwartet. Die offenbarten Techniken können vorhandene Protokollierungssysteme verwenden, und diese Protokollierungssysteme wurden so implementiert, dass sie optimal funktionieren. Diese Systeme zahlen während des Betriebs eine Leistungseinbuße, da sie selbst CPU-, E/A- und Speicherressourcen verwenden, um die Daten zu erfassen, zu berechnen und in einem persistenten Speicher zu speichern.

Die Rohdaten 322 kann mit einem Aggregationsserver aggregiert werden 306 und periodisch an die Betriebsmetrikroutine geliefert 326. In einigen Ausführungsformen ist der Datenlogger 316 kann die Daten an die operative Metrik-Routine liefern 326 mehrmals täglich. Das System 300 bietet auch Systemmarker 320 um Betriebskennzahlen während eines diskreten Zeitraums zu messen (z. B. während eines Ereignisses zwischen einer Start- und Endzeit). Die Instrumentierungsroutine 320 kann eine Reihe von Start- und Stoppmarkerinformationen in einem dauerhaften Speicher speichern 312. Die Markerinformationen können von einem Markerleser im Datenlogger gelesen werden 316.

In verschiedenen Ausführungsformen kann das Betriebssystem (OS) des Geräts integrierte Protokollierungssysteme oder Instrumentierung bereitstellen, die Ereignisse auf Systemebene aufzeichnen können (z. B. Hochfahren, Hängezeit und Frameraten). Die Betriebssysteminstrumentierung kann Betriebssystemmarkierungen bereitstellen, um den Start und das Stoppen bestimmter Ereignisse zu kennzeichnen. Die Betriebssystemmarker können in einem persistenten Speicher abgelegt werden 312. Das Metrik-Routine-Plugin 330 kann Anwendungsintervalle und Metriken mit benutzerdefinierten regionalen Markierungen protokollieren. Wenn ein Entwickler beispielsweise die Speichernutzung während einer Streaming-Video-Routine einer überwachten Anwendung messen möchte, können benutzerdefinierte regionale Markierungen den Start und das Ende der Stream-Video-Routine bestimmen. Die benutzerdefinierten regionalen Markierungsinformationen können in einem dauerhaften Speicher gespeichert werden.

Der Datenlogger 316 kann das Betriebssystem und benutzerdefinierte regionale Marker lesen, die im persistenten Speicher gespeichert sind, um Intervalle für die Messung bestimmter Leistungsmetriken zu bestimmen (z. B. Start- und Wiederaufnahmezeiten, Handzustandsdauer und Anzeigebildraten). Die Markerinformationen können an den Aggregationsserver gesendet werden 306. Die Bereichsmarkierung wird später ausführlicher beschrieben.

Die operative Messroutine 326 kann zusätzliche Daten aus einer oder mehreren zusätzlichen Datenquellen erhalten 318 (z. B. Tailspin, Speicherdiagramme, Ausführungsberichte, Diagnose).

FEIGE. 4 veranschaulicht ein Flussdiagramm 400 für ein Verfahren zur Datenaufnahme und -verarbeitung. Beim 402umfasst die Technik das Empfangen einer Kennung, die die Ausführung einer Anwendung auf einem elektronischen Gerät anzeigt. Die Anwendung kann eine Drittanbieteranwendung sein, d. h. die Anwendung wurde von einer anderen Partei als dem Entwickler des Betriebssystems entwickelt. Das elektronische Gerät kann ein Smartphone (z. B. ein iPhone), ein tragbares Gerät (z. B. eine iWatch), ein Tablet (z. B. ein iPad), ein tragbares elektrisches Gerät oder ein Desktop-Computer sein. Die Kennung kann von einer Metrikroutine auf dem elektronischen Gerät bereitgestellt werden.

Beim 404kann die Technik das Bestimmen der einen oder mehreren zu messenden Betriebsmetriken umfassen. Das Bestimmen kann durch die Metrikroutine durchgeführt werden. In einigen Ausführungsformen können die Betriebsmetriken umfassen, sind aber nicht beschränkt auf: CPU-/GPU-Zeit, Vordergrund-/Hintergrundzeit, Netzwerkbytes pro Anwendung, Standortaktivität, durchschnittliche Bildluminanz der Anzeige, Mobilfunknetzbedingungen, Spitzenspeicher, Anzahl logischer Schreibvorgänge, Start- und Fortsetzungszeiten, Framerate-Metriken und Hänger. Die zu messenden Metriken können von einem Entwickler bei der Registrierung der zu bewertenden Anwendung vorgegeben werden. Die Messwerte, die gemessen werden können, können für alle Anwendungen generisch sein (z. B. Anwendungsstartzeit) oder können spezifisch für den Anwendungstyp sein (z. B. wird eine Messaging-Anwendung wahrscheinlich andere Leistungsprobleme haben als eine Spieleanwendung).

Beim 406kann die Technik das Identifizieren einer oder mehrerer Protokollierungsroutinen zum Erfassen der einen oder mehreren Metriken umfassen. In einigen Ausführungsformen können die eine oder mehreren Protokollierungsroutinen Kernel-Instrumentierung (z. B. rusage4/coalitions), Betriebssystem-Instrumentierung, Framework-Instrumentierung (z. B. Signpost) und Hardware-/Treiber-Instrumentierung umfassen, sind aber nicht darauf beschränkt. Während der Registrierung einer Anwendung bei einer Anwendungsleistungsroutine kann ein Entwickler die Betriebsleistungsmetriken angeben, die er hinsichtlich der Leistung der Anwendung überwachen möchte. Basierend auf dieser Registrierung kann die Technik die eine oder die mehreren Protokollierungsroutinen identifizieren, die am besten geeignet sind, um die Betriebsleistungsmetriken zu sammeln.

In einigen Ausführungsformen ist die Zeit der zentralen Verarbeitungseinheit (CPU) die gewünschte zu messende Betriebsmetrik. Die CPU-Zeit kann ein Maß für die Zeit sein, die eine Anwendung mit der Verarbeitung von Informationen auf der CPU verbringt. Zur Messung der CPU-Zeit kann als Logging-Routine eine Unix-Zählerroutine gewählt werden. Die Kernel-Protokollierungsroutine kann die CPU-Zeit für jeden Prozess auf dem elektronischen Gerät aggregieren. Weiterhin kann die CPU-Zeit in diskrete Zeitintervalle aggregiert werden. Die aggregierten Daten können im persistenten Speicher gespeichert werden.

In einigen Ausführungsformen ist die Zeit der Grafikverarbeitungseinheit (GPU) die gewünschte zu messende Betriebsmetrik. Die GPU-Zeit kann ein Maß für die Zeit sein, die eine Anwendung mit der Verarbeitung von Grafikinformationen auf der GPU verbringt. Zur Messung der GPU-Zeit kann als Logging-Routine eine Unix-Zähler-Routine gewählt werden. Die Kernel-Protokollierungsroutine kann die GPU-Zeit für jeden Prozess auf dem elektronischen Gerät aggregieren. Außerdem kann die GPU-Zeit in diskrete Zeitintervalle aggregiert werden. Die aggregierten Daten können im persistenten Speicher gespeichert werden.

In einigen Ausführungsformen ist die zellulare Zustandszeit die gewünschte zu messende Betriebsmetrik. Die Mobilfunkzustandszeit kann eine verstrichene Zeit messen, die das elektronische Gerät in einem von mehreren definierten Mobilfunkbedingungen verbringt, wobei die Mobilfunkbedingungen eine Art von Netzverbindung und Netzeigenschaften umfassen. Zur Messung der Mobilfunkzustandszeit kann eine Mobilfunküberwachungsroutine als Protokollierungsroutine ausgewählt werden. Die Basisband-Firmware des elektronischen Geräts kann ereignisbasierte Aktualisierungen der aktuellen Mobilfunkbedingungen für das elektronische Gerät bereitstellen. Eine Protokollierungsroutine kann die zelluläre Zustandszeit pro Prozess zusammenfassen. Die aggregierte zellulare Zustandszeit kann in einem dauerhaften Speichergerät gespeichert werden.

In einigen Ausführungsformen sind die Anwendungsmodus-Zeitdaten die gewünschte zu messende Betriebsmetrik. Die Anwendungsmoduszeit kann die verstrichene Zeit messen, die die Anwendung entweder im Vordergrund oder im Hintergrund verbringt. Zum Beispiel kann die Anwendung entweder im Vordergrund (d. h., dass die Benutzeroberfläche der Anwendung in mindestens einem Teil der Geräteanzeige angezeigt wird) oder im Hintergrund (d. h., dass die Benutzeroberfläche der Anwendung in keinem Teil der Geräteanzeige angezeigt wird) ausgeführt werden ). Eine Moduserkennungsroutine kann erkennen, wenn die Anwendung läuft, und die verstrichene Zeit messen, während sie in einem Vordergrund- oder Hintergrundmodus läuft. Die Protokollierungsroutine kann die Moduszeitdaten (z. B. Vordergrund oder Hintergrund) pro Anwendung aggregieren. Die Zeitdaten des aggregierten Modus können auf einem dauerhaften Speichergerät gespeichert werden.

In einigen Ausführungsformen ist die Standorterfassungszeit die gewünschte zu messende Betriebsmetrik. Techniken zum Bestimmen des genauen Standorts des elektronischen Geräts können ein Treiber des Energieverbrauchs sein. Die Zeit, die zum Erfassen eines genauen Standorts benötigt wird, und der erreichte Genauigkeitsgrad können durch eine Standorterfassungsroutine gemessen werden. Die Standorterfassungsroutine kann die Zeit zum Erfassen eines Standorts für verschiedene Genauigkeitsniveaus messen. Die Standorterfassungszeit kann nach Genauigkeitsstufen aggregiert und auf einem dauerhaften Speichergerät gespeichert werden.

In einigen Ausführungsformen kann die durchschnittliche Pixelluminanz für die Anzeige die gewünschte zu messende Betriebsmetrik sein. Die Pixelluminanz bestimmt die Helligkeit eines Pixels auf einem Display. Die durchschnittliche Pixelluminanz ist ein numerischer Durchschnitt des Maßes der Helligkeit aller Pixel auf dem Display. Im Allgemeinen ist der Stromverbrauch umso höher, je höher die durchschnittliche Pixelluminanz ist. Eine Pixelluminanz-Erfassungsroutine kann einen Durchschnitt der Pixelluminanz für die Anzeige messen. Die Protokollierungsroutine kann die gemessene durchschnittliche Pixelluminanz nach Anwendung aggregieren. Die aggregierten Daten können auf einem persistenten Speichergerät gespeichert werden.

In einigen Ausführungsformen sind die Netzwerkübertragungsbytes die gewünschte zu messende Betriebsmetrik. Die Anzahl der über ein Netzwerkgerät gesendeten und/oder empfangenen Bytes kann ebenfalls zum Stromverbrauch beitragen. Im Allgemeinen ist der Stromverbrauch umso höher, je höher die Anzahl der Netzwerkübertragungsbytes ist. Die Datenübertragungsroutine kann die Anzahl von Bytes messen, die von der elektronischen Vorrichtung übertragen und von ihr empfangen werden. Die Protokollierungsroutine kann die Anzahl der Bytes pro Anwendung zusammenfassen. Die aggregierten Daten können auf einem persistenten Speichergerät gespeichert werden.

In einigen Ausführungsformen ist die Anwendungsantwortzeit die gewünschte zu messende Betriebsmetrik. Eine Hangtracer-Routine kann die Zeit messen, die eine Anwendung damit verbringt, nicht auf Benutzereingaben zu reagieren. Die Antwortzeit der Anwendung kann nach Anwendung aggregiert werden und die Daten können auf einem dauerhaften Speichergerät gespeichert werden.

In einigen Ausführungsformen ist die Anwendungsstartzeit die gewünschte zu messende Betriebsmetrik. Eine Startzeitroutine kann eine verstrichene Zeit zwischen dem Empfangen einer Auswahl eines Anwendungssymbols und dem Zeichnen eines ersten sichtbaren Pixels auf einer Anzeige des elektronischen Geräts messen. Die Anwendungsstartzeit kann nach Anwendung aggregiert und auf einem persistenten Speichergerät gespeichert werden.

In einigen Ausführungsformen ist die Anwendungswiederaufnahmezeit die gewünschte zu messende Betriebsmetrik. Eine Startzeitroutine kann eine verstrichene Zeit zwischen dem Empfangen einer Auswahl eines Anwendungssymbols und dem Neuzeichnen eines ersten sichtbaren Pixels auf einer Anzeige des elektronischen Geräts messen. Die Anwendungsstartzeit kann nach Anwendung aggregiert und auf einem persistenten Speichergerät gespeichert werden.

In einigen Ausführungsformen ist die Anzahl der logischen Schreibvorgänge die gewünschte zu messende Betriebsmetrik. Solid-State-Speichergeräte haben eine begrenzte Anzahl von logischen Schreibvorgängen. Je größer die Anzahl logischer Schreibvorgänge auf ein Festkörperspeichergerät ist, desto kürzer wird die Lebensdauer des Flash-Speichers des Festkörperspeichergeräts. Die Anzahl der logischen Schreibvorgänge kann über einen diskreten Zeitraum (z. B. einen Tag) aggregiert werden. Die Anzahl der logischen Schreibvorgänge kann auf einem persistenten Speichergerät gespeichert werden.

Beim 408kann die Technik das Bereitstellen von Befehlen umfassen, um das Erfassen von Metrikdatensatzdaten zu initiieren, die mit der einen oder den mehreren Metriken verbunden sind. In einigen Ausführungsformen kann die Metrikroutine die Befehle ausgeben. Die Dauer und die Zeitachse zum Erfassen der Metrikdatensatzdaten können durch die Metrikroutine bereitgestellt werden. Die zu erfassenden Metrikdatensatzdaten können auch durch die Metrikroutine identifiziert werden.

Beim 410kann die Technik das Erfassen von Ereignisdaten während der Ausführung der Drittanwendung unter Verwendung der einen oder mehreren Protokollierungsroutinen umfassen. In einigen Ausführungsformen können die Protokollierungsroutinen eine Kernel-Protokollierungsroutine, eine Betriebssystemprotokollierungsroutine (z. B. Powerlog) und/oder Betriebssysteminstrumentierung (z. B. Signpost) umfassen.

Beim 412, kann die Technik das Speichern der Metrikdatensatzdaten in einem dauerhaften Speicher umfassen. In einigen Ausführungsformen kann das Speichern durch die Protokollierungsroutinen erreicht werden. In verschiedenen Ausführungsformen kann der dauerhafte Speicher der Speicher des elektronischen Geräts oder ein externes Speichergerät sein. Zusätzlich zu den Metrikdatensatzdaten kann die Technik zugehörige identifizierende Metadaten speichern (z. B. Daten, die die Klasse und das Modell des die Daten erzeugenden Geräts identifizieren). In verschiedenen Ausführungsformen kann die Technik auch eine Identifikation der überwachten Anwendung, die Version der überwachten Anwendung, die Version des Betriebssystems des die Daten erzeugenden Geräts speichern. Die Metrikdatensatzdaten können in Datenstrukturen gespeichert werden. In einigen Ausführungsformen können die Metrikdatensätze, die im dauerhaften Speicher gespeichert sind, gelöscht werden, nachdem die Daten an eine Datenbank übertragen wurden.

Beim 414können die Techniken die Verwendung einer Aggregationsroutine umfassen, um die Metrikdatensatzdaten für die Drittanwendungen abzurufen und zu aggregieren. Für ein gegebenes elektronisches Gerät können mehrere verschiedene Anwendungen überwacht werden.Darüber hinaus können auch mehrere unterschiedliche Merkmale einer bestimmten Anwendung überwacht und bewertet werden. Die metrischen Datensatzdaten können Informationen zu Batterie, Leistung und Festplattennutzung für jede überwachte Anwendung und jede überwachte Funktion im dauerhaften Speicher speichern. Eine Aggregationsroutine kann die Metrikdatensatzdaten für eine bestimmte Anwendung oder ein bestimmtes Merkmal zur Übertragung an die Datenbank sammeln. Die Aggregationsroutine kann auf gespeicherte Metadaten verweisen, um die überwachte Anwendung oder das überwachte Merkmal zu identifizieren.

Beim 416kann die Technik das Übertragen der einen oder mehreren Betriebsmetriken über ein Netzwerk an eine Datenbank umfassen. In verschiedenen Ausführungsformen kann die Technik eine drahtlose Verbindung mit der Datenbank über das Internet herstellen, um die eine oder mehreren Betriebsmetriken über die drahtlose Verbindung zu übertragen. In einigen Ausführungsformen kann die Technik die eine oder die mehreren Metriken über eine drahtgebundene Verbindung übertragen. In einigen Ausführungsformen kann die Technik die eine oder die mehreren Betriebsmetriken nach einem vorbestimmten Zeitplan (z. B. stündlich, täglich, monatlich usw.) übertragen. In einigen Ausführungsformen können die eine oder die mehreren Betriebsmetriken bei Bedarf übertragen werden. In einigen Ausführungsformen kann die Technik Daten auf einer Ad-hoc-Basis übertragen. In einigen Ausführungsformen können alle Betriebsmetriken, die zuvor nicht an die Datenbank gesendet wurden, während einer Übertragungssitzung übertragen werden. In verschiedenen Ausführungsformen können die Daten inkrementell übertragen werden. In verschiedenen Ausführungsformen können die Daten als aggregierte Daten übertragen werden. In anderen Ausführungsformen können die Daten für mehrere verschiedene überwachte Anwendungen in einer Sitzung übertragen werden. Der Entwickler kann über eine Entwicklerschnittstelle auf die eine oder die mehreren Betriebsmetriken zugreifen, die an die Datenbank übertragen wurden.

In einem Aspekt umfasst ein Verfahren durch ein elektronisches Gerät: Empfangen einer Kennung in einer Metrikroutine, um die Ausführung einer Drittanwendung auf dem elektronischen Gerät anzuzeigen, Bestimmen einer oder mehrerer zu messender Betriebsmetriken durch die Metrikroutine, die einen identifizieren oder mehrere Protokollierungsroutinen zum Erfassen einer oder mehrerer Betriebskennzahlen, wobei eine bestimmte Protokollierungsroutine identifiziert wird, um eine bestimmte Kennzahl zu sammeln, die Befehle von der Kennzahlenroutine an die eine oder mehreren Protokollierungsroutinen bereitstellt, um die Erfassung von Ereignisdaten in Verbindung mit der einen oder den mehreren Betriebskennzahlen zu initiieren Erfassen der Ereignisdaten durch die eine oder mehreren Protokollierungsroutinen während der Ausführung der Drittanwendung über die eine oder mehreren Protokollierungsroutinen Speichern der Ereignisdaten durch die eine oder mehreren Protokollierungsroutinen in einem persistenten Speicher bei Trigger unter Verwendung einer Aggregation Routine zum Abrufen und Aggregieren der Ereignisdaten für die Drittanbieteranwendung, um die eine oder die mehreren Betriebsmetriken zu messen und Übertragen der einen oder mehreren Betriebsmetriken über ein Netzwerk an eine Datenbank.

In verschiedenen Ausführungsformen umfasst das Verfahren ferner: Bestimmen der Zeit der Zentraleinheit als die eine oder die mehreren zu messenden Betriebsmetriken Identifizieren einer Unix-Zählerroutine zum Sammeln der Zeit der Zentraleinheit, wobei ein Kernel die Zeit der Zentraleinheit für jeden Prozess, der auf dem ausgeführt wird, aggregiert elektronisches Gerät, das durch eine Protokollierungsroutine die Zeit der Zentraleinheit in diskrete Zeitintervalle aggregiert und die aggregierte Zeit der Zentraleinheit im dauerhaften Speicher speichert.

In verschiedenen Ausführungsformen umfasst das Verfahren ferner: Bestimmen der Zeit der Grafikverarbeitungseinheit als die eine oder die mehreren zu messenden Betriebsmetriken Identifizieren einer Unix-Zählerroutine zum Sammeln der Zeit der Grafikverarbeitungseinheit, wobei ein Kernel die Zeit der Grafikverarbeitungseinheit für jeden Prozess aggregiert, der auf dem elektronisches Gerät, das durch eine Protokollierungsroutine die Zeit der Grafikverarbeitungseinheit in diskrete Zeitintervalle aggregiert und die aggregierte Zeit der Grafikverarbeitungseinheit im dauerhaften Speicher speichert.

In verschiedenen Ausführungsformen umfasst das Verfahren ferner: Bestimmen der Mobilfunkzustandszeit als die eine oder die mehreren zu messenden Betriebsmetriken, wobei die Mobilfunkzustandszeit eine verstrichene Zeit misst, die das elektronische Gerät in einem von mehreren definierten Mobilfunkzuständen verbringt, wobei die definierte Mobilfunkbedingungen umfassen eine Art von Netzwerkverbindung und Netzwerkeigenschaften, die eine Mobilfunküberwachungsroutine identifizieren, wobei die Basisband-Firmware ereignisbasierte Aktualisierungen des aktuellen Mobilfunkzustands für das elektronische Gerät bereitstellt, die durch eine Protokollierungsroutine die Mobilfunkzustandszeit pro Prozess aggregiert und den aggregierten Mobilfunkzustand speichert Zeit in den persistenten Speicher.

In verschiedenen Ausführungsformen umfasst das Verfahren: Bestimmen einer Anwendungsmoduszeit als die eine oder mehreren zu messenden Betriebsmetriken, die eine Anwendungsmodus-Erkennungsroutine identifizieren, wobei die Anwendungsmodus-Erkennungsroutine erkennt, ob die Drittanwendung in einem Vordergrund oder in einem Hintergrundaggregieren der Anwendungsmoduszeit pro Anwendung durch eine Protokollierungsroutine und Speichern der aggregierten Anwendungsmoduszeit in dem dauerhaften Speicher.

In verschiedenen Ausführungsformen umfasst das Verfahren ferner: Bestimmen der Standorterfassungszeit als die eine oder mehreren zu messenden Betriebsmetriken Identifizieren einer Standorterfassungsroutine, wobei die Standorterfassungsroutine die Zeiterfassung des Standorts für verschiedene Genauigkeitsstufen misst, Aggregation einer verstrichenen Zeit durch eine Protokollierungsroutine Erfassen des Standorts nach Genauigkeitsstufen und Speichern der aggregierten Standorterfassungszeit im dauerhaften Speicher.

In verschiedenen Ausführungsformen umfasst das Verfahren ferner: Bestimmen der durchschnittlichen Pixelluminanz als die eine oder mehreren zu messenden Betriebsmetriken, Identifizieren einer Pixelluminanzerkennungsroutine, wobei die Pixelluminanzerkennungsroutine einen Durchschnitt der Pixelluminanz für eine Anzeige des elektronischen Geräts misst durch eine Protokollierungsroutine der durchschnittlichen Pixelluminanz nach Anwendung und Speichern der aggregierten durchschnittlichen Pixelluminanz im dauerhaften Speicher.

In verschiedenen Ausführungsformen umfasst das Verfahren ferner: Bestimmen von Netzwerkübertragungsbytes als die eine oder mehreren zu messenden Betriebsmetriken, Identifizieren einer Datenübertragungsroutine, wobei die Datenübertragungsroutine die Datenübertragung über ein Netzwerk misst, Aggregation der Netzwerkübertragungsbytes durch eine Protokollierungsroutine Anwendung und Speichern der aggregierten Netzwerkübertragungsbytes im persistenten Speicher.

In verschiedenen Ausführungsformen umfasst das Verfahren ferner: Bestimmen von Speicherverbrauchsdaten als die eine oder mehreren zu messenden Betriebsmetriken, Identifizieren einer Speicherverwendungsroutine, wobei die Speicherverwendungsroutine den Spitzen- und durchschnittlichen Speicherverbrauch durch die Drittanwendung misst, die durch eine Protokollierungsroutine aggregiert wird der Speicherverbrauchsdaten nach Anwendung und Speichern der Speicherverbrauchsdaten im dauerhaften Speicher.

In verschiedenen Ausführungsformen umfasst das Verfahren ferner: Bestimmen der Anwendungsreaktionszeit als die eine oder mehreren zu messenden Betriebsmetriken Identifizieren einer Hangtracer-Routine zum Messen von Minuten der Nichtreaktionszeit der Drittanwendung Aggregation der Anwendungsreaktionszeit nach Anwendung durch eine Protokollierungsroutine und Speichern der aggregierten Antwortzeit der Anwendung im persistenten Speicher.

In verschiedenen Ausführungsformen umfasst das Verfahren ferner: Bestimmen der Anwendungsstartzeit als die eine oder mehreren zu messenden Betriebsmetriken, die eine Startzeitroutine identifizieren, wobei die Startzeitroutine eine verstrichene Zeit zwischen dem Empfangen einer Auswahl eines Anwendungssymbols und dem Zeichnen eines ersten misst sichtbares Pixel auf einer Anzeige des elektronischen Geräts, das durch eine Protokollierungsroutine die Anwendungsstartzeit für die Anwendung aggregiert und die Anwendungsstartzeit im dauerhaften Speicher speichert.

In verschiedenen Ausführungsformen umfasst das Verfahren ferner: Bestimmen einer Anzahl von logischen Schreibvorgängen als die eine oder mehreren zu messenden Betriebsmetriken, die eine Speicherüberwachungsroutine identifizieren, wobei die Speicherüberwachungsroutine die Anzahl von logischen Schreibvorgängen eines Speichergeräts der elektronischen Geräteaggregation misst durch eine Protokollierungsroutinenanwendung die Anzahl logischer Schreibvorgänge in diskrete Zeitintervalle und Speichern der Anzahl logischer Schreibvorgänge in dem dauerhaften Speicher.

In verschiedenen Ausführungsformen umfasst das Verfahren ferner: Ausführen einer Anwendungsprogrammierschnittstelle auf dem elektronischen Gerät, wobei die Anwendungsprogrammierschnittstelle ein angepasstes Intervall für die eine oder mehreren Protokollierungsroutinen zum Speichern einer Startmarkierung und einer Endmarkierung in einem Protokollspeicher auf der elektronischen Vorrichtung bereitstellt Gerät und Erfassen einer oder mehrerer Betriebsmetriken zwischen der Startmarkierung und der Endmarkierung.

In einem anderen Aspekt umfasst eine Computervorrichtung: einen oder mehrere Speicher und einen oder mehrere Prozessoren in Kommunikation mit dem einen oder den mehreren Speichern und konfiguriert zum Ausführen von Anweisungen, die in dem einen oder den mehreren Speichern gespeichert sind, zum Ausführen von Operationen verschiedener oben beschriebener Ausführungsformen.

In einem anderen Aspekt ein computerlesbares Medium, das eine Vielzahl von Anweisungen speichert, die, wenn sie von einem oder mehreren Prozessoren einer Computervorrichtung ausgeführt werden, bewirken, dass der eine oder die mehreren Prozessoren Operationen der oben beschriebenen verschiedenen Ausführungsformen ausführen.

Es versteht sich, dass die in FIG. 4 stellen bestimmte Techniken zum Erfassen und Aggregieren von Betriebsmetriken für eine Drittanwendung gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung bereit. Gemäß alternativen Ausführungsformen können auch andere Schrittfolgen durchgeführt werden. Beispielsweise können alternative Ausführungsformen der vorliegenden Erfindung die oben umrissenen Schritte in einer anderen Reihenfolge ausführen. Darüber hinaus sind die einzelnen Schritte, die in FIG. 4 kann mehrere Unterschritte umfassen, die in verschiedenen Sequenzen ausgeführt werden können, wie es für den einzelnen Schritt angemessen ist. Darüber hinaus können in Abhängigkeit von den jeweiligen Anwendungen zusätzliche Schritte hinzugefügt oder entfernt werden. Ein Durchschnittsfachmann würde viele Variationen, Modifikationen und Alternativen erkennen.

B. Regionale Marker zur Bewertung von Funktionen

In einigen Ausführungsformen ermöglichen die Techniken die Platzierung von Bereichsmarkierungen, um die Leistung für bestimmte Anwendungsmerkmale (z. B. ein Streaming-Merkmal) zu messen. Ein Wegweiser ist ein Protokolleintrag, der eine sehr leichte Form der Protokollierung darstellt. Es ist ein Ereignis, das mit einigen Metadaten und einigen zusätzlichen Informationen wie einem Namen und einer Kategorie gekennzeichnet werden kann. Ein Zweck von Wegweisern besteht darin, Aktionen auf Benutzeroberflächenebene für Benutzer oder einen Start/Stopp-Typ eines Intervallsystems zu kennzeichnen. Eine benutzerdefinierte Protokollierungsroutine mit benutzerdefinierten Markierungen (z. B. MXSignpost) kann auf der Protokollierungsroutine (z. B. OSSignpost) aufgebaut werden, da sie zusätzlich zur Start/Stopp-Funktionalität und der geringen Größe die zusätzlichen Kernel-Informationen sammelt. Die zusätzlichen Kernel-Informationen können die RUsage-Informationen einschließlich der CPU-Informationen und logische Schreibvorgänge sein, die zwischen dem Start- und Endpunkt eines Wegweisers für das Markierungssystem erfasst werden können.

Die Start- und Wiederaufnahmezeitmetriken können auch von Wegweisern abgerufen werden. Innerhalb des Benutzerschnittstellen-Frameworks auf dem elektronischen Gerät, Benutzerschnittstellen-Anwendung. Die Techniken können Wegweiser bei Startereignissen ablegen und Ereignisse in den Wegweiser-Stream fortsetzen, und der System-Daemon (z. B. XPC-Dienst) kann die Metriken lesen und sie pro Anwendung aggregieren.

FEIGE. 5 veranschaulicht eine beispielhafte Sequenz 500 für Region Marker Architektur. In einigen Ausführungsformen möchten Entwickler Betriebsmetriken für ein bestimmtes Merkmal einer Anwendung auswerten. Zum Beispiel kann eine Social-Media-Anwendung eine Streaming-Media-Funktion als Teil der Anwendung umfassen. Die Funktion wird möglicherweise nicht immer auf der Anwendung ausgeführt, daher möchte ein Entwickler möglicherweise die Betriebsmetriken (z. B. Leistungs- und Leistungsmetriken) für die Anwendung während des Betriebs der Funktion messen. Regionale Markierungen können verwendet werden, um den Anfang und das Ende des Features zu notieren, sodass ein oder mehrere Snapshots erstellt werden können, um die Leistungsmetriken für dieses Feature auszuwerten.

Der Anwendungsstart 502 kann vermerkt werden, um die Betriebsmetrikroutine zu informieren, um auf die Ausführung eines oder mehrerer Merkmale (z. B. Streaming-Dienst) zu achten. Zum Beispiel wurde die Social-Media-Anwendung gestartet, aber zu diesem Zeitpunkt wurde die Streaming-Media-Funktion noch nicht ausgeführt. Daher werden die maßgeschneiderten Metriken für die CPU-Auslastung an dieser Stelle nicht erfasst.

Beim Start 504 der Streaming-Funktion kann die Technik einen benutzerdefinierten regionalen Startmarker ausführen 508 Notieren der Startzeit des Features im Datenstrom. An dieser Stelle kann ein Snapshot erstellt werden, um den CPU-Zustand, den GPU-Zustand und den Speicherzustand kurz vor der Ausführung der Streaming-Media-Funktion zu erfassen. Auf diese Weise kann die Technik die Auswirkungen des Startens der Streaming-Media-Funktion auf diese Betriebsmetriken erfassen.

Nach dem Streaming-Stopp 506, kann die Technik einen endbenutzerdefinierten regionalen Marker ausführen 510 im Datenstrom. Metrikdatensatzdaten (z. B. CPU-, GPU- oder Speicherinformationen) können zwischen dem benutzerdefinierten regionalen Startmarker erfasst werden 508 und der benutzerdefinierte regionale Marker am Ende 510. Die Technik kann eine Aggregation sammeln 514 eines oder mehrerer benutzerdefinierter regionaler Intervall-Snapshots und senden Sie diese Informationen an die Betriebsmetrikroutine 512. Obwohl in FIG. 5 können mehrere Snapshots zwischen den benutzerdefinierten regionalen Start- und Endmarkierungen erfasst werden. Diese Snapshots können Informationen über die Änderung des Zustands der Betriebsmetriken während der Ausführung der spezifischen Funktion liefern.

Diese Protokollierung kann unter Verwendung von Betriebssystemmarkern (z. B. os_signposts) implementiert werden. Betriebssystemmarker haben ein Subsystem- und Kategoriefeld, um den Typ der Betriebssystemdaten anzuzeigen. Alle Betriebssystemmarkierungen können in einem Betriebssystemprotokoll (z. B. os_log) gespeichert werden, das ein Protokollierungssystem auf Systemebene ist. Um bestimmte Typen von Markierungen zu identifizieren, können die Instrumentierungsfilter Betriebssystemmarkierungen unter Verwendung der relevanten Subsystem- und Kategoriewerte kennzeichnen.

In einigen Ausführungsformen können mehrere regionale Markierungen verwendet werden, um die Start- und Endzeit eines bestimmten Merkmals zu notieren. Eine Anwendung kann beispielsweise mehrere Funktionen aufweisen, die nur diskret ausgeführt werden können. Diese Funktionen können erhebliche Auswirkungen auf den Akku oder die Leistung haben. Es kann nützlich sein, die Startzeit für die Ausführung dieser Funktionen und die Endzeit für die Ausführung dieser Funktionen festzulegen, um die Auswirkung der Funktion auf Betriebsmetriken zu bewerten. Außerdem können unterschiedliche regionale Markierungen verwendet werden, um die Start-Endzeit verschiedener Funktionen für dieselbe oder unterschiedliche Anwendungen zu notieren.

Zwischen den Start- und Stoppmarkierungen können verschiedene Metriken gemessen werden. Beispielsweise kann die CPU-Zeit für ein Anwendungsmerkmal gemessen werden, das zwischen den Start- und Stoppmarkierungen auftritt. Die CPU-Zeitdaten können vom Kernel bereitgestellt werden. Als weiteres Beispiel kann die Anzahl der CPU-Befehle für ein Anwendungsmerkmal gemessen werden, das zwischen den Start- und Stoppmarkierungen auftritt. Die CPU-Anweisungen können vom Kernel bereitgestellt werden. Als weiteres Beispiel können der Strom- und Spitzenspeicher für ein Merkmal der Anwendung gemessen werden, das zwischen den Start- und Stoppmarkierungen auftritt. Die aktuellen und Spitzenspeicherdaten können vom Kernel bereitgestellt werden. Als weiteres Beispiel kann die Anzahl der logischen Schreibvorgänge auf ein Halbleiterbauelement für ein Anwendungsmerkmal gemessen werden, das zwischen den Start- und Stoppmarkierungen auftritt. Die logischen Schreibvorgänge können vom Kernel bereitgestellt werden.

II. Betriebssysteminstrumentierung von Betriebskennzahlen

Die Betriebskennzahlen können in zwei Kategorien eingeteilt werden: Leistungskennzahlen und Leistungskennzahlen. Die Leistungsmetriken erfassen Rohdaten und berechnen den Leistungsbedarf für bestimmte Aspekte einer Anwendung. Ein übermäßiger Stromverbrauch kann eine Ursache für Kundenunzufriedenheit sein, und Entwickler sind oft damit beschäftigt, den Stromverbrauch einer Anwendung zu überwachen und so weit wie möglich zu minimieren. Die Leistungsverbrauchsmetriken können umfassen: Zeit der zentralen Verarbeitungseinheit (CPU)/Grafikverarbeitungseinheit (GPU), Vordergrund- und Hintergrundverarbeitungszeit, Netzwerkbytes (pro Anwendung), Standortaktivität, durchschnittliche Bildluminanz der Anzeige und zellulare Netzwerkbedingungen.

Die Betriebsmetriken können eine oder mehrere Leistungsmetriken umfassen. Die Leistungsmetriken können verwendet werden, um die Anwendungsleistung zu messen, insbesondere die, mit denen die Verbraucher beschäftigt sind. Die Leistungsmetriken können umfassen: Spitzenspeicher, logische Schreibvorgänge auf ein Solid-State-Gerät, Start- und Wiederaufnahmezeiten, Bildratenmetriken und Anwendungsaufhängungszeit.

Die Techniken können auch Funktionen (z. B. Streaming) für Anwendungen von Drittanbietern bewerten. Durch die Verwendung von Bereichsmarkierungen können die Techniken Metriken wie CPU-Zeit, eine Anzahl von CPU-Befehlen, aktuelle und Spitzenspeichernutzung und Anzahl logischer Schreibvorgänge auf das Halbleitergerät für den markierten Bereich der Anwendung auswerten.

1. Zeit der Zentraleinheit/Grafikeinheit

Die Zeit der Central Processing Unit (CPU) für eine Anwendung ist die Zeit, die eine Anwendung mit der Verarbeitung und Nutzung des Anwendungsprozessors verbringt. Die CPU-Zeit umfasst alle Prozesse zum Ausführen von Code zum Verarbeiten von Daten usw. Die Zeit der Grafikverarbeitungseinheit (GPU) ist die Zeit, die die Anwendung mit der grafischen Verarbeitung unter Verwendung der GPU verbringt. Sowohl CPUs als auch GPUs können bei elektronischen Geräten starke Energieverbraucher sein.

Die Rohdaten für die CPU/GPU-Zeit können vom Kernel stammen, indem Unix-Zähler die Hardware-Nutzung zuordnen, um diese Metriken zu füllen. Der Kernel kann diese für jeden Prozess auf dem System aggregieren. Die Protokollierungsroutine kann die CPU/GPU-Zeit in unterschiedlichen Zeitintervallen (z. B. 5-Minuten-Intervallen) aggregieren und die aggregierten Informationen in einem dauerhaften Speicher speichern. Die Techniken können die aggregierte Zeit für jeden Prozess bereitstellen.

RUsage/Coalitions-Daten können im Kernel berechnet und im Userspace aggregiert werden. Ein oder mehrere Unix-Zähler können der Hardware-Nutzung Zeit zuordnen, um diese Daten aufzufüllen. Der Kernel kann diese für jeden Prozess im System aggregieren. Eine Protokollierungsroutine kann in diskreten (z. B. 5–30 Minuten) Zeitintervallen aggregieren und die aggregierten Daten in einen dauerhaften Speicher übertragen. Die Techniken können aggregierte Zeiten für jeden Prozess der Anwendung liefern. Der Kernel in seiner Standardbetriebsprozedur wird diese für jeden Prozess auf dem System aggregieren, da sie einfach kontinuierlich laufen. In einigen Ausführungsformen können RUsage/Coalitions Daten für CPU-Zeit, GPU-Zeit, CPU-Anweisungen, aktuellen und Spitzenspeicher und logische Schreibvorgänge bereitstellen.

2. Vordergrund-/Hintergrundzeit

Vordergrund- und Hintergrundzeit sind eigentlich Zustände, in denen eine Anwendung auf dem System läuft. Multimedia-Geräteanwendungen (z. B. iOS) unterstützen Multitasking. Multitasking ermöglicht die Ausführung mehrerer Anwendungen im Vordergrund, wo die Anwendung tatsächlich auf dem Bildschirm ist und ein Benutzer sie sehen und mit ihnen interagieren kann. Anwendungen können auch im Hintergrund ausgeführt werden, wenn der Benutzer nicht unbedingt mit ihnen interagiert, sondern die Anwendung an Dingen arbeitet, vielleicht Wartungsarbeiten durchführt oder ihre Benutzeroberfläche (UI) aktualisiert oder etwas für einen späteren Zeitpunkt.Vordergrund- und Hintergrundzeit können wirksame Maßnahmen sein, um den Gesamtenergieverbrauch der Anwendung zu bestimmen. Der Energieverbrauch im Vordergrund kann bei Anwendungen, die im Vordergrund ausgeführt werden, ganz anders sein als bei Anwendungen, die im Hintergrund ausgeführt werden.

Neben dem Gesamtenergieverbrauch kann auch der prozentuale Energieverbrauch für jeden Zustand der Anwendung hilfreich sein. Benutzer haben beispielsweise andere Erwartungen an den Energieverbrauch einer Anwendung, die im Vordergrund ausgeführt wird, im Gegensatz zu einer Anwendung, die im Hintergrund ausgeführt wird. Wenn ein Benutzer also keine Social-Media-Anwendung nutzt und die Anwendung jede Stunde fünf Prozent verbraucht, wären die Benutzer mit dem Energieverbrauch unzufrieden. Der gleiche Energieverbrauch während der Nutzung der Anwendung erscheint jedoch sehr vernünftig. Daher kann die Fähigkeit für Entwickler, den Energieverbrauch bei der Ausführung im Vordergrund (d. h. auf dem Bildschirm) und bei der Ausführung im Hintergrund zu verstehen, sehr nützlich für sie sein, um ihre Anwendungen besser optimieren zu können.

Das Betriebssystem kann Daten rechtzeitig in verschiedenen Anwendungsausführungsmodi (z. B. Vordergrundzeit und Hintergrundzeit) bereitstellen. Eine Protokollierungsroutine kann Daten pro Ereignis aggregieren und Summen pro Anwendung akkumulieren. Die Technik kann in jedem Betriebsmodus kumulative Zeit liefern.

3. Netzwerkbytes (pro Anwendung)

Netzwerkbytes ist die tatsächliche Menge an Netzwerk-Upload und -Downloads, die über Mobilfunk- und Wi-Fi-Technologien verbraucht werden. Der Basisband-Chip im Mobilfunkgehäuse und der Wi-Fi-Chip können viel Energie verbrauchen, wenn die Anwendung aktiv Daten hoch- oder herunterlädt. Daher kann das Messen der Menge an Bytes, die die Anwendung hoch- und heruntergeladen hat, sehr nützlich sein, um den Gesamtzustand des Netzwerks Ihrer Anwendung zu verstehen. Netzwerkinformationen können verwendet werden, um die Nutzung für das Mobilfunknetz zu optimieren (z. B. der Versuch, die Mobilfunkdatenübertragung einzuschränken oder Aufgaben aufzuschieben), bis Wi-Fi verfügbar ist.

Die Netzwerkbytes können pro Kanal gemessen werden. Daher würde die Mobilfunknutzung getrennt von der WLAN-Nutzung gemessen. In einigen Ausführungsformen können die Metriken das Hochladen der Datenübertragung vom Herunterladen der Datenübertragung weiter trennen. Wenn derselbe Chip verwendet wird, kann die Bluetooth-Kommunikation mit der Wi-Fi-Nutzung gezählt werden. In einigen Ausführungsformen kann die Bluetooth-Datenübertragung separat überwacht und gemessen werden.

Die Standortaktivität ist die Zeit, die Ihre Anwendung damit verbringt, den Standort des Geräts zu ermitteln. Diese Metrik kann unabhängig vom Ausführungsmodus sein. Die Metrik misst, wie lange eine Anwendung nach der geografischen Position des Geräts sucht. Auch die Genauigkeit der geografischen Position kann bestimmt werden, da sie sich direkt auf den Energieverbrauch und auch auf die Bearbeitungszeit der Anwendung auswirken kann.

In einigen Ausführungsformen kann die tatsächliche Nutzung des Standort-Frameworks auf dem Betriebssystem gemessen werden (z. B. die Anzahl der eingestellten Geofences). Geofencing ist ein standortbasierter Dienst, bei dem eine App oder eine andere Software GPS-, RFID-, Wi-Fi- oder Mobilfunkdaten verwendet, um eine vorprogrammierte Aktion auszulösen, wenn ein mobiles Gerät oder ein RFID-Tag eine virtuelle Grenze betritt oder verlässt, die um einen geografischen Bereich herum angelegt wurde Standort, bekannt als Geofence. Diese Metriken wirken sich auch auf den Gesamtenergieverbrauch der Anwendung aus. Zum Beispiel kann eine Anwendung Tausende von Zäunen haben, die Ihre Anwendung ohne Grund immer wieder aufwecken können, was den Stromverbrauch erhöht.

Standortaktivitätsmetriken können auch zwischen Vordergrund- und Hintergrundmodus unterschieden werden. Dies würde es ermöglichen, die Energie für eine Anwendung wie Google Maps oder Waze zu bestimmen, um zu verstehen, wie hoch ihre Verbrauchsrate während der Navigation (z. B. während der Fahrt) ist, im Vergleich zu ihrer Verbrauchsrate ansonsten, wenn die Anwendung verwendet wird Speicherort für andere Funktionen.

Die Informationen zur Standortaktivität können von der Betriebssysteminstrumentierung empfangen werden. Diese Zeit kann für verschiedene Genauigkeiten getrennt werden. Eine Standort-Framework-Routine kann ereignisbasierte Daten zur Genauigkeitsverwendung bereitstellen. Die Standort-Framework-Routine kann pro Prozess Sitzungen an die Protokollierungsroutine senden. Die Protokollierungsroutine kann diese Daten aus allen Sitzungen pro Genauigkeit pro Prozess aggregieren. Die Techniken können die kumulative Zeit liefern, die in jedem Genauigkeitscluster verbracht wird.

5. Anzeige der durchschnittlichen Bildluminanz (APL)

Bei organischen lichtemittierenden Displays (OLED) ist die durchschnittliche Bildluminanz äußerst wichtig, um zu verstehen, wie sich die Benutzeroberfläche (UI) einer Anwendung auf den Energieverbrauch auswirkt. Die durchschnittliche Bildluminanz (APL) gibt den Prozentsatz der beleuchteten OLED-Pixel an. Die Betriebssystemschnittstelle kann über eine APL-Routine Daten sammeln, um den Durchschnitt der aktuellen Pixelluminanz anzuzeigen. Die Protokollierungsroutine schneidet diese Daten mit gesammelten Anwendungsvordergrunddaten, um tägliche Durchschnittswerte zu bestimmen. Die Techniken können zeitlich begrenzte (z. B. tägliche) Mittelwerte für die Anwendung liefern.

Hardware- und Treiberinstrumentierung können die APL-Datenmetriken anzeigen.

6. Mobilfunknetzbedingungen

Mobilfunknetzbedingungen können ein großer Energieverbraucher für elektronische Geräte sein. Generell gilt: Je schwächer die Signalstärke, desto mehr Energie wird für die Datenübertragung benötigt. Umgekehrt gilt: Je stärker die Signalstärke, desto weniger Energie wird für die Datenübertragung benötigt. Daher ist das Verständnis der Signalstärke für einen Entwickler hilfreich, um die zellularen Bedingungen zu verstehen, unter denen die Daten übertragen wurden, um den Stromverbrauch für eine Anwendung zu verstehen. Neben der Signalstärke kann auch eine Netzwerküberlastung ein Problem bei der Mobilfunkkommunikation sein. Beispielsweise kann das erste Sprungsignal überlastet sein, während das verbleibende Netzwerk nicht überlastet ist. In einigen Ausführungsformen kann das Gerät Informationen vom Mobilfunkturm selbst empfangen (z. B. Latenz, Status und Gesundheit). Wenn das Netzwerk überlastet ist, kann das Netzwerk langsamer werden und weniger Slots zum Übertragen von Daten bereitstellen. Zusätzlich kann auch die Art der Netzwerkverbindung erfasst werden (z.B. 3G, 4G (LTE), 5G, etc.)

Die Zustandsstatistiken des Mobilfunknetzes können dem Protokollierungs-Routing durch die Basisband-Firmware bereitgestellt werden. Die Basisband-Firmware bietet ereignisbasierte Updates zu den aktuellen Bedingungen der Mobilfunkverbindung. Die Protokollierungsroutine kann die Zustandsdaten des Mobilfunknetzes pro Prozess für die Anwendung aggregieren und speichern. Die Techniken können ein Histogramm der Anwendungszeit liefern, die in verschiedenen Konnektivitätsclustern verbracht wurde.

Hardware- und Treiberinstrumentierung können die Daten zu den Bedingungen des Mobilfunknetzes bereitstellen.

Der Spitzenspeicher ist eine Metrik, die gemessen werden kann, um die Leistung einer Anwendung zu bestimmen. Die Peak Memory-Metrik kann bestimmen, wie die Anwendung Speicher verbraucht. Wenn der Spitzenspeicher sehr hoch ist, besteht für die Anwendung eine höhere Wahrscheinlichkeit, dass unerwartete Jetsam-Ereignisse auftreten, wenn die Anwendung einen bestimmten Modus ausführt oder grundsätzlich Ressourcenausnahmen auftreten, sodass Ihr Arbeitsspeicher zu hoch ist und das System diesen Arbeitsspeicher zurückfordern muss, um bereitzustellen eine bessere Benutzererfahrung. Jetsam ist ein Systemprozess, der die Speichernutzung auf einem elektronischen Gerät überwacht. Jetsam löst ein Ereignis aus, wenn das Gerät auf wenig Speicher stößt, und fordert Speicher von anderen Apps zurück, um die Leistung von allem zu verbessern, was im Vordergrund ausgeführt wird. Es wird auch das Schließen aller Apps erzwingen, die ihren Speicher nicht freiwillig zur Verfügung stellen.

Es gibt zwei Symptome einer hohen Speichernutzung. Das erste Symptom ist, dass die Vordergrundanwendung einfach verschwindet. Es sieht für den Benutzer wie ein Absturz aus, wenn die Speichernutzung einen extrem hohen Schwellenwert überschreitet. Das zweite Symptom, das für Benutzer weniger offensichtlich sein kann, aber ein erhebliches Problem darstellt, ist, dass die Wahrscheinlichkeit, dass die Anwendung nicht mehr im Speicher verbleibt, größer ist, wenn die Anwendung mehr Speicher verwendet, wenn die Anwendung nicht geöffnet ist Wenn ein Benutzer versucht, die Anwendung erneut zu starten, dauert das Öffnen viel länger. Wenn ein Benutzer eine Anwendung auf einem elektronischen Gerät startet, läuft normalerweise alles bereits auf dem Gerät, wenn ein Benutzer sie kürzlich geöffnet hat, so dass der Start für den Benutzer sehr schnell zu sein scheint. Diese Art von „Start“ kann als Lebenslauf im Vergleich zu einem Start angesehen werden, bei dem das elektronische Gerät die Anwendung vollständig starten muss.

Eine hohe Speicherauslastung kann auch erhebliche Auswirkungen auf die Leistung haben, da Betriebssysteme über Speicherverwaltungssysteme verfügen, die entweder im Kernel oder irgendwo im Betriebssystem leben und tatsächlich CPU verbrauchen, um die tatsächlichen physischen Seiten und virtuellen Seiten in zu verwalten Erinnerung. Wenn eine Anwendung also mutwillig viel Speicher verbraucht, würde die Anwendung auch viel Energie verbrauchen, da der virtuelle Speichermanager viel CPU in verschiedene Threads drehen müsste, um die Komprimierung zu verwalten Speicher, wo er nicht benötigt wird, um diesen Speicher freizugeben und der Anwendung wieder zur Verfügung zu stellen. Dies hat also auch viele Auswirkungen auf den Stromverbrauch.

Die Spitzenspeicherdaten können durch Kernel-Instrumentierung (z. B. rusage4) bereitgestellt werden.

Ein Solid-State-Laufwerk (SSD) ist ein Speichergerät, das integrierte Schaltungsbaugruppen als Speicher oder miteinander verbundene Flash-Speicher verwendet, um Daten auch ohne Strom dauerhaft zu speichern. Im Gegensatz zu einer Festplatte oder HDD, die rotierende Metallplatten oder Festplatten mit magnetischer Beschichtung zum Speichern von Daten verwendet, hat eine SSD keine mechanischen oder beweglichen Teile. Ein Nachteil von SSDs ist die kürzere Lebensdauer als Festplatten, da SSDs einen begrenzten Schreibzyklus haben. Die Flash-Speicher eines Solid-State-Laufwerks können nur für eine endliche Anzahl von Schreibvorgängen verwendet werden. Eine SSD kann kein einzelnes Informationsbit schreiben, ohne zuerst sehr große Datenblöcke auf einmal zu löschen und dann neu zu schreiben. Wenn jede Zelle diesen Zyklus durchläuft, wird sie nutzloser. Dieser abklingende Prozess beeinträchtigt jedoch nicht die Lesefähigkeit der gesamten SSD.

Viele elektronische Geräte (z. B. Smartphones, Tablets) verwenden SSDs. Daher kann es für Anwendungen wichtig sein, die Anzahl der logischen Schreibvorgänge zu überwachen und zu verstehen, die eine auf dem elektronischen Gerät ausgeführte Anwendung ausführt. Die Techniken können die Menge der logischen Schreibvorgänge berechnen und aggregieren, die eine Anwendung auf dem Dateisystem ausführt. Immer wenn eine Anwendung beschließt, eine Datei zu schreiben oder Standardeinstellungen oder ähnliches zu synchronisieren, hat dies Auswirkungen auf das Dateisystem auf dem Gerät. In einigen Ausführungsformen kann die Anzahl von logischen Schreibvorgängen im Kernel (d. h. r_usagev4) erfasst und innerhalb des r-Verwendungs-Ledgers aggregiert werden. Diese Metrik kann einem Entwickler helfen zu verstehen, wie viel Druck die Anwendung auf das Dateisystem und den Flash-Speicher der SSD ausübt. Daher sind logische Schreibvorgänge eine Metrik auf hoher Ebene. Diese Metrik stellt nicht unbedingt die physischen Schreibvorgänge auf die Disc dar, ist jedoch eine der besten Metriken, die Entwickler verwenden können, um ihre Schreibleistung zu verstehen.

Die Anzahl der logischen Schreibvorgänge kann durch Kernel-Instrumentierung (z. B. rusage4) bereitgestellt werden.

Die Start- und Wiederaufnahmezeit ist eine weitere Reihe von Metriken, die für Entwickler nützlich sein können. Je langsamer die Start- oder Wiederaufnahmezeit ist, desto weniger wünschenswert ist die Anwendung für Verbraucher. Die Startzeit der Anwendung kann mithilfe einer Protokollierungsroutine gemessen werden, die im Betriebssystem ausgeführt wird. Die Startzeit kann von der Symbolauswahl bis zum ersten sichtbaren Zeichnen auf dem Display des elektronischen Geräts gemessen werden. Die Wiederaufnahmezeit kann aus der Zeit zwischen der Symbolauswahl und dem Neuzeichnen der Anwendung auf dem Display des elektronischen Geräts gemessen werden.

Die Bildrate ist das Maß für die Häufigkeit, mit der Bilder in einer Sequenz zur Erzeugung von Bildschirmgrafiken angezeigt werden. Effektiv ist es ein Maß dafür, wie glatt die Grafikanzeige erscheint. In einigen Ausführungsformen kann die Framerate 60 Frames pro Sekunde betragen. In anderen Ausführungsformen kann die Bildrate 30 Bilder pro Sekunde betragen. In noch anderen Ausführungsformen kann die Bildfrequenz 15 Bilder pro Sekunde betragen. Die Anzahl der ausgelassenen Frames kann ebenfalls gemessen werden. Die verworfene Framerate misst die Anzahl der Frames, die im Durchschnitt verworfen werden, während eine Operation ausgeführt wird (z. B. Scrollen auf einem Display).

Das Betriebssystem kann integrierte Funktionen bereitstellen, die von Anwendungen von Drittanbietern verwendet werden. Eine solche Funktion kann das Scrollen des Displays für Anwendungen sein. Bildratendaten können durch Protokollierungsroutinen bereitgestellt werden.

Die Wartezeit ist ein Maß für die Zeit, die Anwendungen damit verbringen, nicht auf Benutzereingaben zu reagieren. In einigen Ausführungsformen kann die Hangtime von einer Hangtracer-Routine auf aktivierten Geräten gemessen werden. Wenn sie aktiviert ist, verwendet die Hangtracer-Routine Thread-Watchdogs, um den Hauptthread von Anwendungen zu erkennen, die blockiert werden. Nach einer ausreichenden Sperrzeit kann die Hangtracer-Routine eine Betriebssystemmarkierung (z. B. os_signpost) für das Ereignis generieren. Ein Betriebssystem-Daemon (z. B. XPC-Dienst) kann die Hängezeitinformationen von den Markierungen sammeln. Die Protokollierungsroutine kann diese Markierungen pro Prozess sammeln und aggregieren.

Effizientes Sammeln der Metriken, das vom Entwickler verwendet werden kann, um Leistungs- oder Leistungsmängel für die Anwendung zu identifizieren, Änderungen zwischen verschiedenen Versionen der Anwendung zu realisieren und Maßnahmen zur Verbesserung der Leistung der Anwendung zu empfehlen. Die Normalisierung der Metriken berücksichtigt Unterschiede zwischen Speicher, Verarbeitungskapazität, Bildschirmgröße und Batteriespeicherkapazität zwischen Geräten. Ein zentroidbasierter Ansatz segmentiert die Leistungsmetriken in verschiedene Cluster, um verschiedene Geräte, verschiedene Versionen der Anwendung und verschiedene Betriebssysteme zu berücksichtigen. Die Verwendung des schwerpunktbasierten Ansatzes ermöglicht eine effiziente Analyse großer Datenmengen.

Eine Methode zum Durchführen der Perzentilberechnung besteht darin, alle Daten der letzten 100 Tage zu verwenden, einen Algorithmus auszuführen, die Daten zu sortieren und dann den Perzentilwert zu berechnen. Das offenbarte Verfahren verwendet jedoch einen schwerpunktbasierten Ansatz, bei dem das System mehrere Cluster erzeugt. In jedem Cluster ordnet das System die Datensätze einem Cluster der mehreren Cluster zu, wenn neue Werte generiert werden. Das System entscheidet, zu welchem ​​Cluster die neue Betriebsmetrik gehört, erstellt einen durchschnittlichen Mittelwert über die Zeit und berechnet dann einen Durchschnitt für den Cluster innerhalb einer gewünschten Perzentilklasse.

Die Cluster werden ständig neu erstellt, da das System, wenn es neue Werte erhält, herausfinden muss, zu welchem ​​Cluster dieser Wert gehört, und dann, wenn ein Cluster zu groß wird, das System einen neuen Cluster generiert. Die Betriebsdaten und Cluster werden laufend aktualisiert. Die Technik verwendet eine Fensterfunktion. In jedem diskreten Zeitraum (z. B. 15 Minuten) verfügt das System über eine festgelegte Anzahl von Protokollen. Das System verarbeitet diese Protokolle per Streaming. Anschließend speichert das System die Protokolle in einem persistenten Speicher. Wenn das System die Daten im persistenten Speicher speichert, berechnet das System auch für eine bestimmte Anwendung den gewünschten Cluster für mehrere andere Metriken. Basierend auf den neuen Daten, die über den nächsten diskreten Zeitraum (z. B. 15 Minuten) empfangen wurden, bestimmt das System, wo die aktuellen Cluster waren und aktualisiert die aktuellen Cluster. Dieser Aktualisierungsprozess minimiert die Bewegung innerhalb der Daten. Diese Technik ermöglicht eine bessere Speichernutzung mit definierten Clustern und entsprechenden Durchschnittswerten. Daher bietet diese Technik eine neue speichereffiziente Nutzung, um eine Analyse der Streaming-Daten durchführen zu können. Dieser variable Ansatz ermöglicht es Entwicklern, verschiedene Schwerpunkte zu analysieren (z. B. für alle iPhone-Geräte, für ein bestimmtes neues Gerät oder für ein bestimmtes Betriebssystem).

FEIGE. 6 zeigt eine beispielhafte Architektur 600 zur Datenaufnahme und -verarbeitung. Ein Benutzergerät 602 kann Daten an einen ersten Endpunkt senden 604. Obwohl in FIG. Gemäß Fig. 6 können in einigen Ausführungsformen über eine Million Geräte Daten beitragen. Der erste Endpunkt kann die Daten über eine kabelgebundene oder kabellose Schnittstelle empfangen. Die Daten können in eine erste Warteschlange heruntergeladen werden 606. In der ersten Warteschlange 606, werden die metrischen Datensatzdaten einem Symbolisierungsprozess unterzogen. Symbolisierung ist der Prozess der Auflösung von Backtrace-Adressen in Quellcodemethoden- oder Funktionsnamen, die als Symbole bekannt sind. Ohne zuerst einen Absturzbericht zu symbolisieren, wäre es schwierig festzustellen, wo sich der Absturz ereignet hat.

Die operative Metrik-Routine 608 kann mit dem Lesen der Daten aus der ersten Warteschlange beginnen 606 und beginnen Sie mit der Analyse der Daten, indem Sie ein periodisches Fenster erstellen (z. B. 15 Minuten) und die aggregierten Daten im dauerhaften Speicher speichern 612. Die operative Metrik-Routine 608 kann als verteilter Job angesehen werden, der immer ausgeführt wird. Die Logs, die Details der Aggregation enthalten, können auch im persistenten Speicher abgelegt werden (Logs) 610.

Nach Ablauf einer bestimmten Zeit (z. B. 15 Minuten) wird die Betriebsmetrikroutine 608 vervollständigt die Aggregation und speichert die Vielzahl von Metriken im persistenten Speicher (Metriken) 612. Jeder Ausführende erhält eine Datei, die vom Gerät synchronisiert wird. Es liest die Datei, verarbeitet die Datei und sendet sie dann an einen Reducer. Der Reducer kombiniert diese Dateien nun alle 15 Minuten zusammen und speichert sie dann in einem persistenten Speicher (Logs). 620 (z. B. Pi FoundationDB).

Der Reducer liest die Daten aus dem persistenten Speicher 612 Aktualisieren Sie für die jeweilige Anwendung den Schwerpunkt der Werte für die Ergebnisse. Also wenn das System 600 muss neue Schwerpunkte erzeugen, das System 600 wird neue Schwerpunkte erzeugen. Wenn es den gegebenen Schwerpunkt aktualisieren und mitteln muss, fügt es dies hinzu und behält die Daten dann oben auf der Grundlage bei. Um Ausfälle während des Betriebs zu vermeiden, ist das System 600 speichert die Checkpoints in einem Checkpoint-Speicher 614. Alle paar Minuten das System 600 wird weiterhin den aktuellen Stand der Daten speichern, damit das System 600 verliert keine Daten. Wenn also eine der Maschinen, die die Aggregation durchführen, ausfällt, wird das System 600 einfach neu starten, ohne Daten zu verlieren.

Die operative Metrik-Routine 608 liest die Daten aus den persistenten Speichermetriken 612, führt die vom Entwickler ausgewählte Analyse (z. B. für das 95. Perzentil) für eine bestimmte Version, Klasse, Geräte und Betriebssystem aus. Der Webserver 618 empfängt die Daten und exportiert die Daten über eine integrierte Entwicklungsumgebung (z. B. Xcode) an den Entwickler 620. Die Überwachungsroutine 616 überwacht die Jobs, um festzustellen, wie viele Elemente verarbeitet wurden, und berechnet einige interne Statistiken.

Ein Datenanalyseprogramm 622 can (z. B. Tableau) verwendet werden, um die Daten zu sammeln und zu visualisieren. 622 gesammelte Informationen für eine tabellarische Ansicht der Betriebskennzahlen. Das Datenanalyseprogramm 622 kann leistungsstarke Berechnungen aus vorhandenen Daten erstellen und es einem Entwickler ermöglichen, Referenzlinien und Prognosen abzulegen und zu ziehen sowie statistische Zusammenfassungen zu überprüfen.

Der Autorisierungsserver 624 bestimmt, ob die Drittanbieteranwendung für den Empfang von Daten zur Analyse registriert ist. Der Autorisierungsserver 624 kann es einem Entwickler ermöglichen, die spezifischen Metriken und Funktionen einzugeben, die er messen und bewerten möchte.

FEIGE. 7 zeigt weitere Details zum Metrik-Aggregationssystem 700. Die Daten von den mehreren Geräten können codierte, komprimierte Dateien sein. Die Datendateien können in ein offenes Datenformat (z. B. das Format JavaScript Object Notation (JSON)) dekodiert werden. JSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenaustauschformat. Die Daten im offenen Format können an einzelne Ausführende gesendet werden 706.

In einigen Ausführungsformen ist das Metrik-Aggregationssystem 700 kann eine verteilte Open-Source-Streaming-Plattform (z. B. Apache Kafka) verwenden. Die verteilte Streaming-Plattform kann Datenströme veröffentlichen und abonnieren, ähnlich wie eine Nachrichtenwarteschlange oder ein Enterprise-Messaging-System, Datenströme auf fehlertolerante und dauerhafte Weise speichern und Datenströme verarbeiten, wenn sie auftreten. Die verteilte Streaming-Plattform kann zum Aufbau von Echtzeit-Streaming-Datenpipelines verwendet werden, die zuverlässig Daten zwischen Systemen oder Anwendungen abrufen und/oder zum Erstellen von Echtzeit-Streaming-Anwendungen, die die Datenströme transformieren oder darauf reagieren.

Die Metrikdatensatzdaten können in das Metrikaggregationssystem eingegeben werden 700 in die Warteschlange 702. Die Warteschlange 702 ermöglicht die Aufteilung der Verarbeitung auf eine Sammlung von Prozessoren, wodurch eine parallele Verarbeitung ermöglicht wird. Aus der Warteschlange 702, treten die codierten Metrikdatensätze in eine Streaming-Routine ein 704 Dadurch können alle codierten Datensätze in ein offenes Datenformat (z. B. JSON) decodiert werden. Die Metrikdatensätze werden dann an mehrere Ausführende verteilt 706, in einigen Fällen Hunderte von Prozessoren, um die Daten jeweils auf unterschiedlichen Maschinen zu verarbeiten.

Die einzelnen Ausführenden 706 kann Datenstrukturen erstellen, um eine Perzentilschätzung (z. B. Quantil) durchzuführen. Einige Implementierungen können Schwerpunkte als Teil des Prozesses verwenden, um eine Datenstruktur zu segmentieren. Jede Datenstruktur entspricht Klasse, Modell und Version. Eine Datenstruktur enthält die Schwerpunkte/Cluster. Die Schwerpunkte/Cluster umfassen eine Gruppierung von Werten. Ein Executor kann auch Checkpointing durchführen und dann als Datenrahmen aggregieren und zwischenspeichern, um über die API in den persistenten Speichermetriken zu bestehen. Das System liest den aktuellen Datenstrom, aggregiert ihn, aktualisiert ihn und schreibt ihn zurück. Die Daten können nach Betriebssystemversion aggregiert werden. Die Betriebssystemversion wird von einer Bundle-ID-Routine erhalten, die die Betriebssystemversion, die Version der Anwendung und das Gerät aus den Daten ermitteln kann.

Die aggregierten Daten können im zwischengespeicherten Datenrahmen gesammelt werden 708 periodisch (z. B. alle 15-30 Minuten). Die aggregierten Daten werden von der Datenbankanwendungsprogrammierschnittstelle (API) verarbeitet. 710.

Nach Abschluss der Aggregation der ersten Ebene werden die Daten in einem Zwischenspeicher gespeichert 712 So kann es vom Entwickler verwendet werden, um das gewünschte Perzentil der Daten zu identifizieren. Die Filterroutine 714 aggregiert die gewünschten Daten zum Endspeicher 716.

Der Checkpoint-Speicher 718 erhält verschiedene Kontrollpunkte. Der Prüfpunktspeicher kann auch verschiedene Snapshots und Deltas empfangen. Die Checkpoints ermöglichen ein schnelles Wiederaufrufen der Verarbeitung, falls einer oder mehrere der Executors ausfallen.

FEIGE. 8 veranschaulicht eine beispielhafte Ausführungsform des Aggregationsservers 800. Der Aggregationsserver 806 empfängt mehrere metrische Datensätze von mehreren elektronischen Geräten 804. Wie in FIG. In 7 enthalten die Metrikdatensätze codierte, komprimierte Dateien. Der Decoder 840 dekodiert und dekomprimiert die Metrikdatensätze und speichert die dekodierten und Metrikdatensätze im persistenten Speicher 812.

Für jede Version einer Drittanbieteranwendung und Betriebskennzahl ein Cluster-Bestimmungsmodul 842 bestimmt eine Verteilung der erwarteten Werte für diese Metrik. Zum Beispiel für die Hangtime-Metrik das Cluster-Bestimmungsmodul 842 kann eine Datenstruktur mit einer Anzahl von Clustern bestimmen, um eingehende Metrikdatensätze basierend auf dem Wert des Metrikwerts zu erfassen. Die Cluster können Zentroiden entsprechen, die aus einer statistischen Analyse der Metrikwerte bestimmt wurden. Wenn beispielsweise die Datenstruktur für die Hängezeit-Metrik für Version n der Drittanwendung einen Satz von zehn verschiedenen Clustern für die Anzahl von Hängen pro Stunde der Anwendungsnutzung aufweisen kann. Einige Ausführungsformen können mehr als 10 Cluster aufweisen und einige Ausführungsformen können weniger haben. Die eingehenden Daten werden mit den jedem der Cluster zugewiesenen Werten verglichen. Der Wert kann die folgende beispielhafte Datenstruktur umfassen (z. B. 0-0,5 Hänger pro Nutzungsstunde (0-10 %) 0,5-1,0 Hänger pro Nutzungsstunde (10%-20%), 1,0-3,0 Hänger pro Nutzungsstunde (20%-30%), 3,0-5,0 Aufhängungen pro Betriebsstunde (30%-40%), 5,0-7,0 Aufhängungen pro Betriebsstunde (40%-50%), 7,0-8,0 Aufhängungen pro Betriebsstunde (50 .) %-60%), 8,0-10,0 Aufhängungen pro Nutzungsstunde (60%-70%), 10,0-15,0 Aufhängungen pro Nutzungsstunde (70%-80%), 15,0-20,0 Aufhängungen pro Nutzungsstunde (80%- 90%), 20 oder mehr Hangs pro Nutzungsstunde (90%-100%). Für die verschiedenen Betriebskennzahlen können ähnliche Datenstrukturen entwickelt werden.

Im Aggregationsmodul 844, können die dekodierten metrischen Datensatzdaten analysiert und in einer Datenstruktur gespeichert werden 846 basierend auf der Klassifizierung (z. B. Smartphone oder Tablet) und dem Modell (z. B. Smartphone-Modell) für den Metrikdatensatz. Das Clusterbestimmungsmodul 842 kann die Größe und Anzahl der Cluster als Datenstruktur regelmäßig neu bewerten 846 empfängt die metrischen Daten. Die Anzahl der Cluster kann für jede Betriebsmetrik variiert werden, um ein schnelles Abrufen von statistisch signifikanten Werten für die Betriebsmetriken zu ermöglichen.

Ein Extraktionsmodul 848 kann Betriebsdaten zumindest teilweise auf Basis einer Anfrage vom Visualisierungsserver abrufen 808. Ein Entwickler könnte beispielsweise an der Akkuleistung seiner Anwendung für ein älteres Gerätemodell (z. B. iPhone 6) interessiert sein. Als Geräteklasse kann der Entwickler „iPhones“ auswählen. Die „iPhone“-Klasse würde mehrere verschiedene iPhone-Modelle umfassen (z. B. iPhone 6, iPhone 6s, iPhone XS, iPhone XS Max). Wenn Sie nur die Klasse „iPhone“ auswählen, würde das Extraktionsmodul Daten für alle iPhone-Modelle mit vorhandenen Daten bereitstellen. Die Auswahl von „iPhone 6“ für das Modell würde jedoch nur Betriebsmetrikinformationen (z. B. Akkuleistung) für iPhone 6-Geräte bereitstellen. Das Absaugmodul 848 kann Betriebswerte für eine bestimmte Version der Anwendung (z. B. Version 3.0.1) bereitstellen. In verschiedenen Ausführungsformen ist das Extraktionsmodul 848 kann Betriebswerte für mehrere Versionen der Anwendung bereitstellen. In einigen Ausführungsformen ist das Extraktionsmodul 848 kann Betriebswerte nur für eine ausgewählte Anzahl (d. h. signifikante Versionen) der Anwendung bereitstellen. Die Abfrage für das Extraktionsmodul 848 kann für alle Softwareversionen einer bestimmten Klasse, eines bestimmten Typs und Betriebsmetriken gelten. Das Absaugmodul 848 kann eine Anfrage nach bestimmten Betriebskennzahlen (z. B. Leistungs- und Leistungskennzahlen) empfangen. Das Absaugmodul 848 kann die Werte für die Betriebsmetriken aus den verschiedenen Datenstrukturen abrufen 846.

FEIGE. 9 veranschaulicht eine beispielhafte Darstellung des Aggregationsmoduls' 900. Die Metadaten für jeden der Datensätze können analysiert werden, um die Klassifizierung des Geräts und das spezifische Modell des Geräts zu bestimmen. Die Metrikdatensätze können nach Geräteklassifizierung (z. B. Smartphone oder Tablet) und Gerätemodell (z. B. iPhone 6s, iPhone 7, iPhone 7s, iPhone 8, iPhone 8s, iPhone X, iPhone XS, iPhone XS) sortiert werden Max). Für jeden der Cluster gibt es eine Datenstruktur 902 die den eingehenden Metrikdatensatz in den entsprechenden Cluster sortiert 904 entsprechend dem Wert des Metrikdatensatzes. Der Cluster für Smartphone kann beispielsweise eine Datenstruktur haben 902 mit fünf verschiedenen Clustern. Für die fünf Cluster 904, jeder Cluster 904 kann ein 20. Perzentil der Daten darstellen. Für das Modell des Geräteclusters (z. B. das iPhone 6S) kann es zehn verschiedene Cluster geben, jeder Cluster 904 mit einem 10. Perzentil an Daten. Beide Beispiele in FIG. 9 sind beispielhaft und die Datenstrukturen 902 kann eine beliebige Anzahl von Clustern haben 904 wie erforderlich, um die Daten für eine einfache statistische Analyse richtig zu trennen.

FEIGE. 10 zeigt ein beispielhaftes Flussdiagramm für einen Prozess 1000 zur Aggregation von Betriebsdaten.

Beim 1002umfasst die Technik das Empfangen eines Satzes von metrischen Datensätzen, wobei jeder Datensatz begleitende Metadaten enthält. Der Empfang kann an einer Netzwerkschnittstelle eines Servers von mehreren Geräten erfolgen. Jeder Datensatz kann (a) begleitende Metadaten enthalten, die eine Klasse eines Geräts und ein Modell eines Geräts, das dem Datensatz zugeordnet ist, spezifizieren, und (b) eine oder mehrere Betriebsmetriken einer Vielzahl von Betriebsmetriken. In verschiedenen Ausführungsformen können die Metadaten die überwachte Anwendung, die Version der überwachten Anwendung, das Betriebssystem und die Version des Betriebssystems spezifizieren.

Beim 1004, die Technik das Speichern einer jeweiligen Datenstruktur für jede der Vielzahl von Betriebsmetriken umfasst, wobei jede Datenstruktur segmentierte Wertebereiche für eine jeweilige Betriebsmetrik umfasst, wobei jeder segmentierte Bereich einem Cluster von Werten von Betriebsmetriken entspricht, und wobei jede von mehreren Datenstrukturen entsprechen einer von mehreren Geräteklassen oder einem von mehreren Gerätemodellen. Beispielsweise kann eine bestimmte Datenstruktur Betriebsmetriken für eine ganze Klasse (z. B. Smartphone) von Geräten speichern. In verschiedenen Ausführungsformen kann die Datenstruktur Betriebsmetriken für ein bestimmtes Modell des Geräts (z. B. ein iPhone 6s) speichern. In verschiedenen Ausführungsformen kann die Anzahl der segmentierten Bereiche variieren. Beispielsweise kann eine Datenstruktur fünf segmentierte Bereiche aufweisen, wie in Fig. 2 gezeigt. 9, wobei jeder Bereich 20 % der Daten ausmacht. In einigen Ausführungsformen kann die Datenstruktur zehn segmentierte Bereiche aufweisen, wie auch in Fig. 1 gezeigt. 9, wobei jeder Bereich 10 % der Daten ausmacht. Die Anzahl der segmentierten Bereiche kann je nach Verteilung der Werte der Betriebsdaten variieren.

Beim 1006umfasst die Technik für jede Betriebsmetrik jedes Metrikdatensatzes: Zuordnen zu einer ersten Datenstruktur entsprechend der Klasse und zu einer zweiten Datenstruktur entsprechend dem Modell. Die begleitenden Metadaten können die Klasse und das Modell des Geräts identifizieren, das den Betriebsmetrikdatensatz generiert hat. Die Technik kann auf die Klassen- und Modellmetadaten verweisen, um jeden Metrikdatensatz einer oder mehreren Datenstrukturen zuzuordnen. So können beispielsweise metrische Datensätze eines iPhone 6s sowohl der Datenstruktur für Smartphones als auch der Datenstruktur für das iPhone 6s Modell zugeordnet werden. Da die Datenstruktur für die Klasse mehrere Modelle enthält, enthält die Datenstruktur für die Klasse natürlich mehr Daten. Die Anzahl der Klassen und Modelle kann sich im Laufe der Zeit ändern, wenn neue Modelle und Gerätetypen entwickelt werden. Zum Beispiel können zukünftige Ausführungsformen eine dritte Klasse für tragbare Geräte umfassen. Zukünftige Modelle können neue Smartphones, Tablets und Modelle für tragbare Geräte umfassen.

Beim 1008umfasst die Technik für jede Betriebsmetrik jedes Metrikdatensatzes: Zuweisen der Betriebsmetrik zu einem ersten Cluster der ersten Datenstruktur. Wie oben beschrieben, kann jede Datenstruktur mehrere segmentierte Bereiche umfassen. Die segmentierten Bereiche können bestimmt werden, indem ein Bereich zwischen einem Maximum und einem Minimum für einen Wert der bestimmten Betriebsmetrik bestimmt wird und dieser Bereich in eine bestimmte Anzahl von segmentierten Bereichen unterteilt wird. Wenn die Betriebsmetrik vom System empfangen wird, kann der Wert der Metrik mit den Durchschnittswerten für jeden der segmentierten Bereiche verglichen werden. Wenn ein Wert für die Bildschirm-Akkunutzung für eine Anwendung auf dem Bildschirm beispielsweise 25 % pro Stunde beträgt, kann der Wert einem segmentierten Wertebereich von 20 % bis 30 % pro Stunde zugewiesen werden. Der erste Cluster kann die Gruppe gespeicherter Werte für die Anwendungsbatterienutzung für die Bildschirmzeit für eine Klasse (z. B. Smartphones) von Geräten in der ersten Datenstruktur enthalten.

Beim 1010umfasst die Technik für jede Betriebsmetrik jedes Metrikdatensatzes: Zuweisen der Betriebsmetrik zu einem zweiten Cluster der zweiten Datenstruktur. Wie oben beschrieben, kann jede Datenstruktur mehrere segmentierte Bereiche umfassen. Die segmentierten Bereiche können bestimmt werden, indem ein Bereich zwischen einem Maximum und einem Minimum für einen Wert der bestimmten Betriebsmetrik bestimmt wird und dieser Bereich in eine bestimmte Anzahl von segmentierten Bereichen unterteilt wird. Wenn die Betriebsmetrik vom System empfangen wird, kann der Wert der Metrik mit den Durchschnittswerten für jeden der segmentierten Bereiche verglichen werden. Wenn ein Wert für die Bildschirm-Akkunutzung für eine Anwendung auf dem Bildschirm beispielsweise 25 % pro Stunde beträgt, kann der Wert einem segmentierten Wertebereich von 22 % bis 28 % pro Stunde zugewiesen werden. Der zweite Cluster kann die Gruppe gespeicherter Werte für die Anwendungsbatterienutzung für die Bildschirmzeit für ein Modell (z. B. iPhone 6s) eines Geräts in der Gerätedatenstruktur enthalten. Die segmentierten Bereiche für die erste Datenstruktur können aufgrund des breiteren Gerätespektrums für die erste Datenstruktur von den segmentierten Bereichen für die zweite Datenstruktur abweichen.

Beim 1012umfasst die Technik das Bestimmen eines statistischen Wertes für die Betriebsmetriken in einem oder mehreren der segmentierten Bereiche. Für jede Datenstruktur ermöglichen die segmentierten Bereiche eine schnelle Berechnung eines statistischen Wertes für jede der Betriebsmetriken. Durch Speichern der Daten in segmentierten Bereichen kann die Technik leicht einen Durchschnitt eines bestimmten Perzentils für die Werte der Betriebsmetriken berechnen. In verschiedenen Ausführungsformen möchte der Entwickler möglicherweise einen Wert für eine Betriebsmetrik für ein typisches oder 50. Perzentil von Geräten sehen. Da die Werte für jeden segmentierten Bereich beim Hinzufügen neuer Daten angepasst werden, könnte die Technik schnell den Durchschnittswert für das 50. Perzentil bestimmen, ohne die Einzelwerte für Millionen von Dateneinträgen von Millionen von Geräten zu addieren und durch die Zahl zu dividieren von Geräten. Die Verwendung einer geclusterten Datenstruktur ermöglicht die einfache Berechnung eines statistischen Wertes für eine oder mehrere Perzentilklassifikationen (z. B. 50. Perzentil oder 95 % Perzentil).

Beim 1014umfasst die Technik das Speichern der statistischen Werte für die von der Klasse und dem Modell indizierten Datenstrukturen. Die Technik kann die statistischen Werte für die Datenstruktur in einem persistenten Speicher speichern. In verschiedenen Ausführungsformen kann der persistente Speicher der Speicher eines Geräts sein. In einigen Ausführungsformen kann der persistente Speicher eine externe Datenbank sein. Die statistischen Werte können nach Klasse und Modell des Geräts, das die Daten generiert hat, indiziert werden, um eine einfache Datenextraktion zu ermöglichen. Beispielsweise möchte ein Entwickler möglicherweise nur Daten für ein bestimmtes Modell oder eine bestimmte Geräteklasse analysieren (z. B. Batterieleistung für ältere Geräte).

Die metrischen Datensätze können zum Schutz der Benutzerdaten verschlüsselt werden. In einigen Ausführungsformen umfasst das Verfahren das Decodieren der Metrikdatensätze von den mehreren Geräten, wobei das Decodieren das Entfernen der Verschlüsselung für die Metrikdatensätze umfasst.

In einigen Ausführungsformen kann die Technik das Bestimmen der Datenstruktur für jede der mehreren Betriebsmetriken beinhalten, wobei das Bestimmen das Berechnen eines Wertebereichs für jede der mehreren Betriebsmetriken und das Aufteilen des Wertebereichs in eine vorbestimmte Anzahl von Clustern umfasst basierend zumindest teilweise auf einem Durchschnitt der Werte der metrischen Datensätze innerhalb der Cluster.

In einigen Ausführungsformen kann die Technik das Modifizieren der Datenstruktur für jede der mehreren Betriebsmetriken umfassen, wobei das Modifizieren das Berechnen eines aktualisierten Wertebereichs für jede der mehreren Betriebsmetriken und das Bestimmen, ob die vorbestimmte Anzahl von Clustern einen Durchschnitt liefert, umfasst Verteilung von Werten zumindest teilweise basierend auf dem aktualisierten Wertebereich und Anpassen der Datenstruktur durch Erhöhen oder Verringern der vorbestimmten Anzahl von Clustern, um die durchschnittliche Verteilung von Werten für die Betriebsmetrik zu erreichen.

In einigen Ausführungsformen können die Techniken das Empfangen einer Auswahl einer Klasse des Geräts und eines Modells des Geräts umfassen. Die Technik kann das Empfangen einer Auswahl einer Betriebsmetrik der Vielzahl von Betriebsmetriken umfassen. Die Technik kann das Empfangen einer Auswahl eines Perzentils von Werten umfassen. Die Technik kann das Extrahieren des statistischen Wertes für die Betriebsmetriken entsprechend der Datenstruktur für die ausgewählte Klasse des Geräts und des Modells des Geräts und des ausgewählten Perzentils von Werten und das Übertragen der statistischen Werte an einen Visualisierungsserver umfassen.

Es versteht sich, dass die in FIG. 10 stellen besondere Techniken zum Erfassen und Aggregieren von Betriebsmetriken für eine Drittanwendung gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung bereit. Gemäß alternativen Ausführungsformen können auch andere Schrittfolgen durchgeführt werden. Beispielsweise können alternative Ausführungsformen der vorliegenden Erfindung die oben umrissenen Schritte in einer anderen Reihenfolge ausführen. Darüber hinaus sind die einzelnen Schritte, die in FIG. 10 kann mehrere Unterschritte umfassen, die in verschiedenen Sequenzen ausgeführt werden können, wie es für den einzelnen Schritt angemessen ist. Darüber hinaus können in Abhängigkeit von den jeweiligen Anwendungen zusätzliche Schritte hinzugefügt oder entfernt werden. Ein Durchschnittsfachmann würde viele Variationen, Modifikationen und Alternativen erkennen.

IV. Visualisierung von Anwendungsmetriken

Die Visualisierung von Betriebskennzahlen kann auf konsolidierte Weise bereitgestellt werden. Eine Herausforderung besteht darin, einem Entwickler mehrere Informationen so darzustellen, dass sie einfach analysiert und Entscheidungen getroffen werden können. Eine Anzeige kann ein oder mehrere Histogramme, segmentierte Kreise und/oder Balkendiagramme verwenden, um Daten für eine schnelle Analyse effektiv darzustellen. Die Informationen können nach Anwendungsversionen mit wesentlichen Änderungen dargestellt werden.

Die Technik kann Daten von Millionen von Geräten aggregieren, um einen Web-API-Endpunkt zu konstruieren, von dem aus sich eine integrierte Entwicklungsumgebung (z. B. Xcode) damit verbinden und einem Entwickler einen Überblick über diese Metriken vor Ort bieten kann. Ein Schwerpunkt liegt auf Anwendungsentwicklern jenseits der Top 25-Entwickler, die möglicherweise nicht in der Lage sind, ihre eigenen Analyseroutinen zu entwickeln. Außerdem ist es für einen Entwickler wünschenswert, die Klassifizierung und Modelle auszuwählen, um die Leistung und Leistung der Anwendung für ältere Geräte im Vergleich zu neueren Geräten mit erhöhter Speicher- und Batteriekapazität besser zu verstehen.

FEIGE. 11 zeigt eine beispielhafte Ausführungsform des Visualisierungsprozesses 1100 inklusive Visualisierungsserver 1108. Der Visualisierungsserver 1108 kann die Betriebsmetriken vom Aggregationsserver empfangen 1106. Der Visualisierungsserver 1108 kann eine Benutzeroberfläche präsentieren 1150 für einen Entwickler, um Auswahlen einzugeben 1152 um die Anzeige von Betriebskennzahlen anzupassen. Diese Auswahl 1152 können die Klassifizierung und/oder das Modell des Geräts, von dem die Daten stammen, umfassen, sind aber nicht darauf beschränkt. Die Auswahl 1152 kann auch das Perzentil für die Daten enthalten (z. B. obere Perzentile oder typisch).

Basierend auf der Auswahl des Entwicklers werden operative Metrikdaten in einem Aggregationsmodul aggregiert 1154 für Cluster und Sub-Cluster. Ein Grafikmodul 1156 empfängt die aggregierten Daten zur Vorbereitung für die Anzeige. Als nächstes eine Empfehlungsmaschine 1158, analysiert die aggregierten Daten und bereitet eine oder mehrere Empfehlungen für den Entwickler vor.

Schließlich können die aggregierten Daten auf einem oder mehreren Displays dargestellt werden 1160.

FEIGE. 12 zeigt ein Flussdiagramm für einen Prozess 1200 zum Visualisieren von Betriebsmetriken, die von einem Visualisierungsserver durchgeführt werden. Der Visualisierungsserver kann vom Gerät entfernt angeordnet sein, das auf die Betriebsdaten zugreift. Daher kann das Gerät über ein Netzwerk (z. B. das Internet) auf die Betriebsdaten zugreifen.

Beim 1202kann die Technik das Empfangen einer ersten Auswahl einer Klasse eines Geräts und eines Modells des Geräts entsprechend der gewünschten Betriebsmetrikstatistik umfassen. Das Empfangen kann durch einen Abschnitt des Geräts und Modells unter Verwendung eines Benutzerschnittstellengeräts (z. B. einer Tastatur oder eines Zeigegeräts (z. B. einer Maus)) erfolgen. Die Auswahl einer Klasse des Geräts kann eine Auswahl von Smartphone oder Tablet umfassen. Die Auswahl eines Modells des Geräts kann eine Auswahl eines bestimmten Modells eines Smartphones oder Tablets umfassen. Die Auswahl der Klasse und des Modells des Geräts begrenzt die angezeigten Betriebsleistungskennzahlen auf die ausgewählte Klasse und/oder das Modell des Geräts.

Beim 1204kann die Technik das Empfangen einer zweiten Auswahl einer Klasse von Metriken einer Vielzahl von Betriebsmetriken für eine Drittanwendung umfassen. Die Auswahl der Klasse von Betriebskennzahlen zeigt Leistungskennzahlen für die ausgewählte Betriebskennzahl auf dem Display an. In einigen Ausführungsformen kann die Klasse von Metriken mindestens eines der folgenden umfassen: Batterieleistung, Startzeit, Hang-Rate, Speichernutzung und Schreibvorgänge auf logischer Platte. Andere Klassen von Betriebsmetriken können ins Auge gefasst und implementiert werden.

Beim 1206kann die Technik das Empfangen einer dritten Auswahl einer Perzentilklassifizierung von Werten für die anzuzeigenden Betriebsmetriken umfassen. Die Auswahl der Perzentilklassifizierung von Werten für die Betriebsmetriken liefert den Durchschnittswert für das gegebene Perzentil der Metrikdaten. In einigen Ausführungsformen kann die Perzentilklassifizierung von Werten aus einer Dropdown-Liste ausgewählt werden. In einigen Ausführungsformen kann die Klassifikation der oberen Perzentile den Durchschnitt der oberen Perzentile der empfangenen Daten umfassen. In einigen Ausführungsformen kann die Klassifizierung der obersten Perzentile das oberste 95. Perzentil der Daten sein. In einigen Ausführungsformen kann die typische Perzentilklassifizierung einen Durchschnitt des 50. Perzentils von Daten umfassen. Andere Perzentilklassifizierungen oder Datenauswahlen können in Betracht gezogen und alternativ ausgewählt werden.

Beim 1208kann die Technik das Abfragen einer Datenbank unter Verwendung der Klasse des Geräts, des Modells des Geräts, der Betriebsmetrik und der Perzentilklassifizierung umfassen. Die Datenbank kann eine Vielzahl von Datenstrukturen von Betriebsmetrikwerten umfassen, die aus einer Vielzahl von Klassen und Modellen von Geräten gemessen wurden, wobei jede Datenstruktur einer bestimmten Betriebsmetrik, einer bestimmten Klasse und einem bestimmten Modell und einer bestimmten Version der Anwendung entspricht. Jede Datenstruktur kann eine Vielzahl von Clustern von Betriebsmetrikwerten umfassen. Jeder Cluster kann einer anderen Perzentilklassifizierung entsprechen und einen statistischen Wert für die Betriebsmetrikwerte des Clusters haben. Die Abfrage kann durch Senden eines oder mehrerer elektronischer Signale oder einer oder mehrerer elektronischer Nachrichten über eine Netzwerkverbindung (z. B. das Internet) erfolgen.

Beim 1210, kann die Technik das Empfangen eines statistischen Wertes, der der prozentualen Klassifizierung eines Satzes von Datenstrukturen entspricht, der einem Satz von Versionen der Anwendung entspricht, von der Datenbank als Reaktion auf die Abfrage umfassen, wobei der statistische Wert dem Durchschnitt für die ausgewählten Klasse und das ausgewählte Modell des Geräts. Das Empfangen kann durch Senden der Datenwerte über ein Netzwerk (z. B. das Internet) erfolgen.

Beim 1212kann die Technik das Anzeigen von Werten auf einer grafischen Benutzeroberfläche umfassen. In einigen Ausführungsformen können die Techniken das Anzeigen der Werte für mehrere Versionen der Drittanwendung als ein vertikales Balkendiagramm umfassen. Zum Beispiel FIG. 13 zeigt ein vertikales Balkendiagramm für den Batterieverbrauch für beide auf dem Bildschirm 1338 und Hintergrund 1354. In einigen Ausführungsformen können die Techniken das Darstellen einer Industriestandard-Referenzlinie mit dem Wert auf dem vertikalen Balkendiagramm umfassen. Die Industriestandard-Referenzlinie stellt den Industriestandardwert für die Betriebsmetrik für eine Klasse von Drittanbieteranwendungen dar. Die Werte können in verschiedenen Grafiken (z. B. Balkendiagramme, Liniendiagramme, segmentierte Kreise usw.) angezeigt werden. Die Werte können als Zahlenwerte angezeigt werden. In verschiedenen Ausführungsformen können die Werte neben einem oder mehreren Werten aus verschiedenen Versionen der Anwendung angezeigt werden, um einen einfachen Vergleich zu ermöglichen.

In einigen Ausführungsformen kann die Technik das Anzeigen der Werte für den einen oder die mehreren Metrikdatensätze für mehrere Versionen der Drittanwendung als gestapeltes vertikales Balkendiagramm umfassen. Das gestapelte vertikale Balkendiagramm kann eine Aufschlüsselung der Quellen für die Werte für den einen oder die mehreren Metrikdatensätze bereitstellen.

In einigen Ausführungsformen können die Techniken das Anzeigen einer prozentualen Änderung des Werts für den einen oder die mehreren Metrikdatensätze seit einer letzten Version der Drittanwendung umfassen.

In einigen Ausführungsformen können die Techniken das Bereitstellen des Anzeigens der Werte für den einen oder die mehreren Metrikdatensätze für mehrere Versionen der Drittanwendung als mehrere segmentierte Kreise umfassen. Die segmentierten Kreise können eine Aufschlüsselung der Quellen für die Werte für den einen oder die mehreren metrischen Datensätze darstellen.

In einigen Ausführungsformen können die Techniken das Anzeigen mehrerer Werte für mehrere Metrikdatensätze für mehrere Versionen der Drittanwendung umfassen. Jeder der mehreren Werte der metrischen Datensätze kann in einem horizontalen Liniendiagramm auf einem Bildschirm dargestellt werden.

Der statistische Wert kann einem Mittelwert, einem Median oder einem Modus für die ausgewählte Klasse und das ausgewählte Modell des Geräts entsprechen. Der statistische Wert entspricht einem Modus für die ausgewählte Klasse und das ausgewählte Modell des Geräts. Die statistischen Werte können als Reaktion auf die Abfrage aus dem Satz von Datenstrukturen erzeugt werden. Die statistischen Werte können aus dem Satz von Datenstrukturen periodisch generiert werden. Der statistische Wert könnte bereits vorgeneriert sein, z. B. periodisch oder nach Bedarf erfolgen.

Es versteht sich, dass die in FIG. 12 stellen besondere Techniken zum Erfassen und Aggregieren von Betriebsmetriken für eine Drittanwendung gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung bereit. Gemäß alternativen Ausführungsformen können auch andere Schrittfolgen durchgeführt werden. Beispielsweise können alternative Ausführungsformen der vorliegenden Erfindung die oben umrissenen Schritte in einer anderen Reihenfolge ausführen. Darüber hinaus sind die einzelnen Schritte, die in FIG. 12 kann mehrere Unterschritte umfassen, die in verschiedenen Sequenzen durchgeführt werden können, wie es für den einzelnen Schritt angemessen ist. Darüber hinaus können in Abhängigkeit von den jeweiligen Anwendungen zusätzliche Schritte hinzugefügt oder entfernt werden. Ein Durchschnittsfachmann würde viele Variationen, Modifikationen und Alternativen erkennen.

A. Benutzeroberfläche der Batterievisualisierung

FEIGE. 13 veranschaulicht eine beispielhafte Benutzerschnittstelle 1300 zum Analysieren des Batterieverbrauchs für eine Drittanbieteranwendung. In einigen Ausführungsformen ist die Benutzerschnittstelle 1300 kann die Auswahl von Leistungsmetriken ermöglichen 1302, Leistungskennzahlen 1304, oder Datenträgernutzungsmetriken 1306. Batteriemetriken werden in Fig. 1 angezeigt. 13.

In einigen Ausführungsformen ist die beispielhafte Benutzerschnittstelle 1300 kann Aktivität für die Anwendung anzeigen. Die Benutzeroberfläche 1300 kann dem Benutzer ermöglichen, eine Klasse oder ein Modell eines Geräts auszuwählen 1308 aus einem Dropdown-Menü. Beispielsweise sind die in FIG. 13 ist für das iPhone XS-Gerät. Die Benutzeroberfläche 1300 kann dem Benutzer ermöglichen, ein Perzentil von Metriken auszuwählen 1310. In einigen Ausführungsformen gibt es zwei Optionen: obere Perzentile (z. B. 95. Perzentil der Werte) und typisch (z. B. 50. Perzentil). Die Auswahl der oberen Perzentile würde einen Durchschnitt der Werte für das obere Perzentil der gespeicherten Werte darstellen. Die Auswahl von typisch würde einen Durchschnitt der Werte für das 50. Perzentil der gespeicherten Werte anzeigen.

Die Benutzeroberfläche 1300 kann die Aktivität darstellen 1312 der Anwendung als Darstellung der Vordergrund- (FG) oder Bildschirmzeit und der Hintergrundzeit (BG) der Anwendung. Die Aktivitätszeit kann die FG/BG-Zeit als segmentierten Kreis darstellen 1314. Darüber hinaus ist das Gesamtaktivitätsniveau 1316 für die Anwendungsaktivität Zeit für die Anwendung kann als Zahlenwert dargestellt werden. In FIG. 13 das Gesamtaktivitätsniveau 1316 dargestellt wird 14 Stunden mit 84 % im Vordergrund (on-screen) und 16 % im Hintergrund.

Die Benutzeroberfläche 1300 kann einen Batterieverbrauch darstellen 1318 für die Bewerbung. Der Batterieverbrauch 1318 kann zwischen Vordergrund- (FG) oder Bildschirmzeit und Hintergrundzeit (BG) für die Anwendung aufgeteilt werden. Die Batterieverbrauchsdaten können auch als zweiter segmentierter Kreis dargestellt werden 1320 Zeigt den Prozentsatz der FG- und BG-Zeit als Prozentsätze in einem einzelnen Kreis an. Darüber hinaus ist der Gesamtstromverbrauch 1322 in Prozent der Gesamtbatteriekapazität kann für die Anwendung als Zahlenwert angezeigt werden. In FIG. 13 Die Anwendung macht täglich 9,8 % der gesamten Batteriekapazität aus, wobei 84 % im Vordergrund (auf dem Bildschirm) und 16 % im Hintergrund angezeigt werden.

In einigen Ausführungsformen kann die Benutzerschnittstelle eine Zusammenfassung sowie andere Empfehlungen für die dargestellten Metriken bereitstellen. Und für die Zusammenfassung würden die Techniken die Metrik betrachten und eine Empfehlung abgeben, wenn bestimmte Bedingungen erfüllt sind. Wenn beispielsweise der Gesamtbatterieprozentsatz 0,01 Prozent (anstelle der dargestellten 9,8%) beträgt, würde die Technik den Entwickler darüber informieren, dass er sich mehr um das Engagement und andere Dinge für seine Anwendung kümmern sollte, da der Batterieverbrauch sehr gering ist. In einigen Ausführungsformen kann die numerische Ausgabe farbcodiert sein (z. B. rot für problematisch, gelb für warnend und grün für ausgezeichnet).

Das Histogramm der Bildschirmnutzung 1324 kann einen Verlauf des Batterieverbrauchs in Prozent pro Stunde anzeigen 1326 Verwendung für eine Anwendung, die im Vordergrund oder auf dem Bildschirm ausgeführt wird. Das Histogramm auf dem Bildschirm 1324 kann auch eine prozentuale Veränderung darstellen 1328 seit der letzten signifikanten Version der Anwendung. In FIG. 13 zeigt, dass der Akkuverbrauch auf dem Bildschirm von Version 3.0.0 auf 3.0.1 der Anwendung um 2,3 Prozent gestiegen ist. Um den Entwickler bei der Korrektur dieses unerwünschten Anstiegs zu unterstützen, zeigt FIG. 13 zeigt die Verteilung des Batterieverbrauchs auf dem Bildschirm auf die Subsysteme als prozentuale Aufschlüsselung 1340. In einigen Ausführungsformen ist die prozentuale Aufschlüsselung 1340 on listet die ersten drei Subsysteme auf und die restlichen sind in „sonstige“ gruppiert. Die Anwendungsversion 1330 kann am unteren Rand des Histogramms dargestellt werden 1324. Eine Geschichtszeile 1332 kann den Wechsel von einer Version zur anderen anzeigen. Die gestrichelte Linie 1336 zeigt den Wert des Klassenbesten für den Batterieverbrauch auf dem Bildschirm an.

Es müssen nicht alle Versionen in den verschiedenen Histogrammen angezeigt werden. Die Versionen müssen keine lineare Liste aller Versionen sein, sondern können nur Versionen mit größeren Änderungen enthalten. Insbesondere für eine Anwendung, die jede Woche eine neue Version veröffentlicht, möchte die Technik den Entwicklern also mitteilen, was sie anstreben sollten, aber auch, was sie in der Vergangenheit erreichen konnten. Zum Beispiel kann die Technik zeigen, was ihr Bestes im letzten Jahr war, dann könnte der ganz linke Punkt eine Version vor 52 Wochen sein. Die Technik kann dann Werte für eine Version vor 26 Wochen anzeigen und dann Werte in der 13. Woche. Die Technik kann dann vor sechs, fünf, vier, drei, zwei, einer Woche angezeigt werden. In einigen Ausführungsformen können die Versionen auf Metriken basieren, wie etwa den am häufigsten verwendeten Versionen der Anwendung oder der Version mit den wichtigsten Problemen.

Die Techniken normalisieren den Energieverbrauch auf zwei Arten. Erstens übersetzt die Technik die Energie in den Prozentsatz der Batterie. Der Grund dafür, dass die Technik den Prozentsatz der Batterie verbraucht, liegt in allen verschiedenen elektronischen Geräteklassen (z. B. iPhone und iPad). Es werden viele Anstrengungen unternommen, um sicherzustellen, dass die Batterien effektiv dimensioniert sind, um eine angemessene Batterielebensdauer zu erzielen. Wenn man also ein größeres Gerät (z. B. iPhone XS Max) im Vergleich zu einem kleineren Gerät (z. B. iPhone XS) betrachtet, ist die Bildschirmgröße auf dem größeren Gerät viel größer und somit der Energieverbrauch viel größer. Allerdings verbaut der Hersteller oft einen größeren Akku, um die größere Displaygröße auszugleichen.

Ausgehend vom Prozentsatz des Batteriestands führt die Technik eine externe Normalisierung der tatsächlichen Dauer der Bildschirmnutzung durch. Wenn die Benutzer ihr Gerät also in Version 3.0.0 nur fünf Minuten pro Tag nutzten, sind es in Version 3.0.1 tatsächlich 50 Minuten pro Tag, indem der Stromverbrauch tatsächlich als Verbrauchsrate in Prozent des Akkus pro . berechnet wird Stunde der Nutzung machen die Techniken es sogar noch unempfindlicher gegenüber diesen Fremdfaktoren und machen es für Entwickler sinnvoller, zu optimieren. Dies gilt insbesondere, wenn Sie zum Hintergrund gelangen. Es wird noch interessanter, da sich das Hintergrundaudio durch die tatsächliche Wiedergabezeit des Hintergrundaudios oder die Hintergrundnavigation auf dieselbe Weise normalisiert. Für andere Hintergrundinformationen wird dies von den Techniken tatsächlich anders behandelt, da andere Hintergrundinformationen nicht an die explizite Benutzerverwendung gebunden sind. Für den Hintergrund ist andere die Energiemenge, die in all der Zeit ohne Stromanschluss verbraucht wird, die nicht auf dem Bildschirm oder im Hintergrundaudio oder in der Navigation angezeigt wird Benutzer verwendet sein Gerät nicht Anwendung X hat im Hintergrund Y Prozent pro Stunde verbraucht.

Wenn Sie sich also die Abflussrate in einem Szenario auf dem Bildschirm ansehen, wird es sehr ähnlich sein. Einer könnte zehn Prozent pro Stunde sein, einer könnte zehneinhalb pro Stunde sein. Solange sich der Gerätemix jedoch nicht Tag und Nacht zwischen zwei Versionen ändert, ermöglichen die Techniken eine einigermaßen gute Aggregation, indem der Prozentsatz der Batterie verwendet wird.

In einigen Ausführungsformen ist der Verlauf auf dem Bildschirm 1324 kann ein vertikales Balkendiagramm darstellen, das die Quelle der Batterieentladung darstellt 1338 für jede Versionsnummer. Die prozentuale Aufschlüsselung 1340 für die Quelle der Batterieentladung für die neueste Version kann ebenfalls dargestellt werden. In FIG. 13 Das Display macht 38 % des Akkuverbrauchs aus, das Netzwerk ist für 20 % des Akkuverbrauchs verantwortlich, die CPU für 15 % des Akkuverbrauchs und andere für 3,5 % des Akkuverbrauchs. Die Verteilung zwischen Subsystemen ist nur beispielhaft und andere Kategorien können eingeschlossen werden. Die prozentuale Aufschlüsselung 1340 kann den Entwickler dabei unterstützen, den beispielhaften Anstieg des Akkuverbrauchs um 2,3 % gegenüber der letzten Version zu reduzieren, da zwischen den Versionen 3.0.0 und 3.0.1 ein deutlicher Anstieg des Display-Akkuverbrauchs zu verzeichnen ist. Dies kann ein Hinweis auf einen Fehler im Code sein, der dazu führt, dass die Helligkeit des Displays zu hoch eingestellt ist.

In einigen Ausführungsformen ist die prozentuale Aufschlüsselung 1340 wird möglicherweise nicht immer auf dem Display angezeigt. In einigen Ausführungsformen kann ein Benutzer einen Cursor über den Datenpunkt für die Version bewegen und eine Donut-Aufschlüsselung würde in einem Popup-Fenster erscheinen. Dies würde die Anpassung zusätzlicher Metriken an die Leistungs- oder Leistungsanzeigebildschirme ermöglichen.

Das Histogramm der Hintergrundnutzung 1342 kann einen Verlauf des Batterieverbrauchs in Prozent pro Stunde anzeigen 1344 für eine Anwendung, die im Hintergrund ausgeführt wird. Das Hintergrundhistogramm 1342 kann auch eine prozentuale Veränderung darstellen 1346 seit der letzten signifikanten Version der Anwendung. Die Anwendungsversion 1348 kann am unteren Rand des Histogramms dargestellt werden 1342. Eine Geschichtszeile 1350 kann den Wechsel von einer Version zur anderen anzeigen. Die gestrichelte Linie 1352 zeigt Best in Class für die Batterieentladung im Hintergrund für die Anwendung.

In einigen Ausführungsformen ist die Hintergrundhistorie 1342 kann ein vertikales Balkendiagramm darstellen 1354 Veranschaulichen der Quelle der Batterieentladung für jede Version 1356 des Antrags. Die prozentuale Aufschlüsselung 1358 für die Quelle der Batterieentladung für die neueste Version kann ebenfalls dargestellt werden. In FIG. 13 Auf den Standort entfallen 38 %, auf das Netzwerk 20 %, auf den Standort 38 % und auf andere 3,5 % des Batterieverbrauchs. Die Verteilung zwischen Subsystemen ist nur beispielhaft und andere Kategorien können eingeschlossen werden. Audio wird beispielsweise zu einem bedeutenden Leistungsfaktor für Anwendungen, die im Hintergrund ausgeführt werden. Der andere bedeutende Hintergrundverlust ist die Navigation.

FEIGE. 14 veranschaulicht eine beispielhafte Benutzerschnittstelle 1400 zum Analysieren des Batterieverbrauchs für eine Drittanbieteranwendung. FEIGE. 14 ist ähnlich zu FIG. 13 zeigt aber die beispielhaften Pulldown-Menüs für Klasse und Gerät 1460 und Perzentile 1462 für die Batteriekennzahlen. In einigen Ausführungsformen ist die Benutzerschnittstelle 1400 kann die Auswahl von Leistungsmetriken ermöglichen 1402, Leistungskennzahlen 1404, oder Datenträgernutzungsmetriken 1406. Batteriemetriken werden in Fig. 1 angezeigt. 14.

In einigen Ausführungsformen ist die beispielhafte Benutzerschnittstelle 1400 kann Aktivität für die Anwendung anzeigen. Die Benutzeroberfläche 1400 kann die Benutzerauswahl für eine Klasse und ein Modell eines Gerätes darstellen 1460. Beispielsweise sind die in FIG. 14 ist für das iPhone XS-Gerät. Die Benutzeroberfläche 1400 kann die Benutzerauswahl für das Perzentil von Metriken darstellen. In einigen Ausführungsformen gibt es zwei Optionen: obere Perzentile (z. B. 95. Perzentil der Werte) und typisch (z. B. 50. Perzentil). Die oberen Perzentilwerte können anwendungsabhängig sein. Bei einigen Anwendungs- oder Betriebsmetriken kann das oberste Perzentil das 98. Perzentil der Werte sein. Wenn eine Anwendung viel mehr Beispiele hat und viel mehr verwendet wird, kann ein bestimmtes Perzentil der Daten interessanter sein, um dem Entwickler aufzuzeigen, wo Maßnahmen ergriffen werden müssen. Die Auswahl der oberen Perzentile würde einen Durchschnitt der Werte für das obere Perzentil der gespeicherten Werte darstellen. Die Auswahl von typisch würde einen Durchschnitt der Werte für das 50. Perzentil der gespeicherten Werte anzeigen.

Wenn es beispielsweise eine Milliarde Geräte gibt, gibt es möglicherweise nur 100 Millionen Geräte, die die zu evaluierende Anwendung verwenden. Für die Geräte, auf denen die Anwendung ausgeführt wird, können viele Betriebsmetriken übermitteln. Die Technik führt eine gewisse Filterung durch, um einige Ausreißer zu reduzieren, und alle verbleibenden Betriebswerte können unter Verwendung einer kumulativen Verteilungsfunktion (CDF) geplottet werden. In verschiedenen Ausführungsformen kann der Benutzer auswählen, Werte für das 98. Perzentil von Werten zu beobachten. Die Technik ermöglicht es einem Entwickler, das richtige Perzentil von Daten auszuwählen, das den Wert in den Daten des Entwicklers hervorhebt. Und wenn man sich das CDF ansieht, könnte die Technik in der Lage sein, Wendepunkte oder eine Form oder Position anzuzeigen, die dem Entwickler stabile Datenergebnisse liefern.

Die Perzentile können auf dem Batterieverbrauchsteil berechnet werden. Die Technik sortiert nicht jede Metrik von Bildschirm und Hintergrund separat, weil sie dann nicht miteinander konsistent sind, denn wenn die Technik 84 Prozent für diese Perzentile von 9,8 % liefert, muss die Technik eher die Bildschirmrate für diese 84 Prozent anzeigen als jetzt ist es für eine andere Gruppe von Benutzern, da das System jeden unabhängig sortiert. Die Technik isoliert also diese Geräte, und nachdem ein Entwickler das gewünschte Perzentil ausgewählt hat, wählt die Technik ein Band um dieses Perzentil herum aus. Und dafür berechnet die Technik Durchschnittswerte. Wenn ein Entwickler also die obersten Perzentile (z. B. das 95. Perzentil) auswählt, berechnet das System ein Ein-Prozent-Band um dieses Perzentil der Daten. Das Band kann je nach Anzahl der Benutzer für die Anwendung in der Breite variieren. Für Anwendungen mit weniger Benutzern müssen die Bänder größer sein. Ein zu großes Band kann jedoch dazu führen, dass die Metriken zu stark schwanken, um verwendbar zu sein.

FEIGE. 14 zeigt den Klassen- und Modellselektor 1460 um einem Entwickler zu ermöglichen, die relevante Klasse (z. B. iPhone oder iPad) und das Modell (z. B. iPhone XS) für die Normalisierung der Betriebskennzahlen auszuwählen. Die Perzentilauswahl 1462 ermöglicht es einem Entwickler, entweder „oberste Perzentile“ oder „typische“ Perzentile auszuwählen, um die für die Analyse verwendeten Mittelwerte der Betriebsmetrik zu variieren.

Die Benutzeroberfläche 1400 kann die Aktivität darstellen 1412 der Anwendung als Darstellung der Vordergrund- (FG) oder Bildschirmzeit und der Hintergrundzeit (BG) der Anwendung. Die Aktivitätszeit kann die FG/BG-Zeit als segmentierten Kreis darstellen 1414. Außerdem das Gesamtaktivitätsniveau für die Anwendungsaktivitätszeit 1416 für die Anwendung kann als Zahlenwert dargestellt werden.

Die Benutzeroberfläche 1400 kann einen Batterieverbrauch darstellen 1418 für die Bewerbung. Der Batterieverbrauch 1418 kann zwischen Vordergrund- (FG) oder Bildschirmzeit und Hintergrundzeit (BG) für die Anwendung aufgeteilt werden. Die Batterieverbrauchsdaten können auch als segmentierter Kreis dargestellt werden 1420 Zeigt den Prozentsatz der FG- und BG-Zeit als Prozentsätze in einem einzelnen Kreis an. Darüber hinaus ist der Gesamtstromverbrauch 1422 in Prozent der Batteriekapazität kann für die Anwendung als Zahlenwert angezeigt werden.

Das Histogramm der Bildschirmnutzung 1424 kann einen Verlauf des Batterieverbrauchs in Prozent pro Stunde anzeigen 1426 Verwendung für eine Anwendung, die im Vordergrund oder auf dem Bildschirm ausgeführt wird. Das Histogramm auf dem Bildschirm 1424 kann auch eine prozentuale Veränderung darstellen 1428 seit der letzten signifikanten Version der Anwendung. Die Anwendungsversion 1436 kann am unteren Rand des Histogramms dargestellt werden 1424. Eine Geschichtszeile 1432 kann den Wechsel von einer Version zur anderen anzeigen. Die gestrichelte Linie 1434 zeigt den Wert des Klassenbesten für den Batterieverbrauch auf dem Bildschirm an.

In einigen Ausführungsformen ist der Verlauf auf dem Bildschirm 1424 kann ein vertikales Balkendiagramm darstellen, das die Quelle der Batterieentladung darstellt 1438 für jede Versionsnummer. Die prozentuale Aufschlüsselung 1440 für die Quelle der Batterieentladung für die neueste Version kann ebenfalls dargestellt werden. In FIG. 14 Das Display macht 38 % des Akkuverbrauchs aus, das Netzwerk ist für 20 % des Akkuverbrauchs verantwortlich, die CPU für 15 % des Akkuverbrauchs und andere für 3,5 % des Akkuverbrauchs.

Das Histogramm der Hintergrundnutzung 1442 kann einen Verlauf des Batterieverbrauchs in Prozent pro Stunde anzeigen 1444 für eine Anwendung, die im Hintergrund ausgeführt wird. Das Hintergrundhistogramm 1442 kann auch eine prozentuale Veränderung darstellen 1446 seit der letzten signifikanten Version der Anwendung. Die Anwendungsversion 1448 kann am unteren Rand des Histogramms dargestellt werden 1442. Eine Geschichtszeile 1450 kann den Wechsel von einer Version zur anderen anzeigen. Die gestrichelte Linie 1452 zeigt im Hintergrund den Wert für den Klassenbesten für die Batterieentladung.

In einigen Ausführungsformen ist die Hintergrundhistorie 1442 kann ein vertikales Balkendiagramm darstellen 1454 Veranschaulichen der Quelle der Batterieentladung für jede Version 1456 des Antrags. Die prozentuale Aufschlüsselung 1458 für die Quelle der Batterieentladung für die neueste Version kann ebenfalls dargestellt werden. In FIG. 14 Auf den Standort entfallen 38 %, auf das Netzwerk 20 %, auf den Standort 38 % und auf andere 3,5 % des Batterieverbrauchs.

FEIGE. 15 veranschaulicht eine weitere beispielhafte beispielhafte Benutzerschnittstelle 1500 zum Analysieren des Batterieverbrauchs für eine Drittanbieteranwendung. FEIGE. 15 ist ähnlich zu FIG. 13 und 14. In einigen Ausführungsformen ist die Benutzerschnittstelle 1500 kann die Auswahl von Leistungsmetriken ermöglichen 1502, Startzeit 1504, Hangrate 1506, Erinnerung 1508, und Festplattenschreibvorgänge 1510. Batteriemetriken werden in Fig. 1 angezeigt. fünfzehn . In einigen Ausführungsformen der Batteriekennzahlen können die Batteriekennzahlen in Batterienutzung auf dem Bildschirm unterteilt werden 1512 und Batterieverbrauch im Hintergrund 1530. In einigen Ausführungsformen eine durchschnittliche nicht angeschlossene Nutzungszeit 1514 abgebildet werden kann.

FEIGE. 15 veranschaulicht ein erstes Dropdown-Menü 1516 zur Auswahl der Geräteklasse und des Gerätemodells. FEIGE. 15 zeigt an, dass „Alle“ iPhone-Modelle ausgewählt sind. Daher werden die angezeigten Akkudaten für alle iPhone-Modelle aggregiert. FEIGE. 15 zeigt ein zweites Dropdown-Menü 1518 Dies ermöglicht die Auswahl des Perzentils der angezeigten Daten. In FIG. 15 enthalten die angezeigten Daten „Top Battery Drain“ für „95. Perzentil der Daten“.

In einigen Ausführungsformen ist die beispielhafte Benutzerschnittstelle 1500 kann Aktivität für die Anwendung anzeigen. Die Benutzeroberfläche 1500 kann die Benutzerauswahl für eine Klasse oder ein Modell darstellen 1516 eines Gerätes.

Zum Beispiel, wenn es eine Milliarde Geräte gibt und für die zu analysierende Anwendung nur hundert Millionen Geräte es verwenden. Für diese Geräte können alle Betriebskennzahlen übermitteln. Die Technik führt eine gewisse Filterung durch, die einige Ausreißer reduziert, und alle verbleibenden Betriebswerte können unter Verwendung einer kumulativen Verteilungsfunktion (CDF) geplottet werden. Die Technik kann zum Beispiel das 95. Perzentil betrachten, das wäre diese Metrik. Die Idee ist, automatisch das richtige Perzentil auswählen zu können, das den Wert in den Entwicklerdaten hervorhebt. Und wenn man sich das CDF ansieht, könnte die Technik in der Lage sein, Wendepunkte oder eine Form oder Position anzuzeigen, die dem Entwickler stabile Datenergebnisse liefern.

Die Perzentile können auf dem Batterieverbrauchsteil berechnet werden. Die Technik sortiert nicht jede Metrik von Bildschirm und Hintergrund separat, weil sie dann nicht miteinander konsistent sind, denn wenn die Technik 84 Prozent für diese Perzentile von 9,8 % liefert, muss die Technik eher die Bildschirmrate für diese 84 Prozent anzeigen als jetzt ist es für eine andere Gruppe von Benutzern, da das System jeden unabhängig sortiert. Die Technik isoliert diese Geräte, und nachdem ein Entwickler das gewünschte Perzentil ausgewählt hat, wählt die Technik ein Band um dieses Perzentil herum aus. Und dafür berechnet die Technik Durchschnittswerte. Wenn ein Entwickler also die obersten Perzentile (z. B. das 95. Perzentil) auswählt, berechnet das System ein Ein-Prozent-Band um dieses Perzentil der Daten. Das Band kann je nach Anzahl der Benutzer für die Anwendung in der Breite variieren. Für Anwendungen mit weniger Benutzern müssen die Bänder größer sein. Ein zu großes Band kann jedoch dazu führen, dass die Metriken zu stark schwanken, um verwendbar zu sein.

FEIGE. 15 veranschaulicht ein gestapeltes vertikales Balkendiagramm für die Batterieverbrauchsanzeige auf dem Bildschirm. Im gestapelten vertikalen Balkendiagramm repräsentiert jeder Stapel die Daten für eine andere Version der Anwendung. Die Versionsnummer 1520 ist unterhalb des Stapels abgebildet. In FIG. 15 , Versionen 2.19.20, 2.19.21, 2.19.22, 2.19.30, 2.19.31, 2.19.40, 2.19.41 und 2.19.42. In einigen Ausführungsformen können nur die signifikanten Versionen Anzeigen sein. Bedeutende Versionen können zu einer messbaren Änderung der Leistung oder der Schwellenanzahl von Codezeilen führen. Daher können nicht alle Versionen abgebildet werden.

Zum Beispiel die erste Versionsnummer 1520 abgebildet ist Version 2.19.20. Das vertikale Balkendiagramm zeigt eine Aufschlüsselung des Beitrags für jede einer identifizierten Anzahl von Hauptquellen für den Batterieverbrauch. Zu den wichtigsten Quellen können beispielsweise Anzeige gehören 1522, wird bearbeitet 1524, vernetzen 1526, und andere 1528.

Das Histogramm der Bildschirmnutzung kann einen Verlauf des Batterieverbrauchs in Prozent pro Betriebsstunde für eine Anwendung anzeigen, die im Vordergrund oder auf dem Bildschirm ausgeführt wird. Der Batterieverbrauchswert auf dem Bildschirm 1530 und eine prozentuale Änderung 1532 da die letzte signifikante Version der Anwendung in der Benutzeroberfläche angezeigt werden kann 1500. Zum Beispiel FIG. 1530 zeigt den Batterieverbrauchswert auf dem Bildschirm an 1530 9,9% pro Tag. Daher macht die Anwendung 9,9 % des gesamten Batterieverbrauchs pro Tag für die Versionsnummer 2.19.42 aus. Die prozentuale Änderung seit der letzten signifikanten Version (Ver. Nr. 2.19.41) ist eine Abnahme von 0,49% pro Stunde Abnahme. Zusammenfassung des Akkuverbrauchs auf dem Bildschirm 1534 für die neueste Version (Version 2.19.42) der Anwendung enthält eine Beschreibung der Hauptquellen der Batterieentladung für diese Version der Anwendung. In FIG. 15 , für Version 2.19.42 entfallen 5,13% pro Tag auf die Anzeige, 2,88% pro Tag auf die Verarbeitung, 1,28% pro Tag auf das Netzwerk und 0,59 Prozent pro Tag auf andere.

Im gestapelten vertikalen Balkendiagramm für den Batterieverbrauch im Hintergrund 1540 Jeder Stapel repräsentiert die Daten für eine andere Version der Anwendung. Die Versionsnummer 1542 ist unterhalb des Stapels abgebildet. In FIG. 15 , Versionen 2.19.20, 2.19.21, 2.19.22, 2.19.30, 2.19.31, 2.19.40, 2.19.41 und 2.19.42. In einigen Ausführungsformen können nur die signifikanten Versionen Anzeigen sein. Bedeutende Versionen können zu einer messbaren Änderung der Leistung oder der Schwellenanzahl von Codezeilen führen. Daher können nicht alle Versionen abgebildet werden.

Das vertikale Balkendiagramm zeigt eine Aufschlüsselung des Beitrags für jede einer identifizierten Anzahl von Hauptquellen für den Batterieverbrauch. Zu den wichtigsten Quellen gehören beispielsweise die Verarbeitung 1544, vernetzen 1546, Audio 1548, und andere 1550.

Der Batterieverbrauchswert im Hintergrund 1552 und eine prozentuale Änderung 1554 seit der letzten signifikanten Version der Anwendung. Zum Beispiel FIG. 1552 zeigt den Batterieverbrauchswert im Hintergrund 1552 beträgt 0,2% pro Tag. Daher macht die Anwendung für die Versionsnummer 2.19.42 0,2% des gesamten Batterieverbrauchs pro Tag aus. Die prozentuale Änderung seit der letzten signifikanten Version (Ver. Nr. 2.19.41) ist eine Zunahme von 0,01% pro Stunde. Zusammenfassung des Akkuverbrauchs auf dem Bildschirm 1556 für die neueste Version (Version 2.19.42) der Anwendung enthält eine Beschreibung der Hauptquellen der Batterieentladung für diese Version der Anwendung. In FIG. 15 , für Version 2.19.42 entfallen 0,13% pro Tag auf die Verarbeitung, 0,09% pro Tag auf das Netzwerk, 0,00% pro Tag auf Audio und 0,00% pro Tag auf andere Konten.

Das Histogramm der Hintergrundnutzung 1442 kann einen Verlauf des Batterieverbrauchs in Prozent pro Stunde anzeigen 1444 für eine Anwendung, die im Hintergrund ausgeführt wird. Das Hintergrundhistogramm 1442 kann auch eine prozentuale Veränderung darstellen 1446 seit der letzten signifikanten Version der Anwendung. Die Anwendungsversion 1448 kann am unteren Rand des Histogramms dargestellt werden 1442. Eine Geschichtszeile 1450 kann den Wechsel von einer Version zur anderen anzeigen. Die gestrichelte Linie 1452 zeigt im Hintergrund den Wert für den Klassenbesten für die Batterieentladung.

In einigen Ausführungsformen ist die Hintergrundhistorie 1442 kann ein vertikales Balkendiagramm darstellen 1454 Veranschaulichen der Quelle des Batterieverbrauchs für jede Version der Anwendung. Die prozentuale Aufschlüsselung 1458 für die Quelle der Batterieentladung für die neueste Version kann ebenfalls dargestellt werden. In FIG. 14 Auf den Standort entfallen 38 %, auf das Netzwerk 20 %, auf den Standort 38 % und auf andere 3,5 % des Batterieverbrauchs.

B. Benutzeroberfläche der Leistungsvisualisierung

FEIGE. 16 veranschaulicht eine beispielhafte Benutzerschnittstelle 1600 zum Analysieren von Leistungsaspekten für eine Drittanbieteranwendung. In einigen Ausführungsformen ist die Benutzerschnittstelle 1600 kann die Auswahl von Leistungsmetriken ermöglichen 1602, Leistungskennzahlen 1604, oder Datenträgernutzungsmetriken 1606. Leistungsmetriken sind in Fig. 1 dargestellt. 16.

In einigen Ausführungsformen ist die beispielhafte Benutzerschnittstelle 1600 kann die Benutzerauswahl für eine Klasse oder ein Modell eines Gerätes darstellen 1608. Beispielsweise sind die in FIG. 16 ist für das iPhone XS-Gerät. Die Benutzeroberfläche 1600 kann die Benutzerauswahl für Perzentil darstellen 1610 von Metriken.

Das Histogramm der Startzeit 1612 kann auf der Benutzeroberfläche dargestellt werden 1600. Die Startzeit kann in Sekunden gemessen werden. Die Startzeit der neuesten Version 1614 gezeigt werden kann. Die Änderung der Startzeit 1616 auch aus der vorherigen Version der Anwendung abgebildet werden. Das Histogramm der Startzeit 1618 kann die Startzeit für jede Version darstellen 1620 des Antrags. Die gestrichelte Linie 1622 zeigt den besten seiner Klasse für die Startzeit.

In einigen Ausführungsformen kann die Startzeit von der Symbolauswahl bis zur Anzeige eines Begrüßungs- oder Einführungsbildschirms gemessen werden. In einigen Ausführungsformen kann die Startzeit berechnet werden, bis die Anwendung auf Benutzereingaben reagiert hat. In noch anderen Ausführungsformen kann der Entwickler spezifizieren, wie Startzeitmetriken berechnet werden. Entwicklern kann erlaubt werden, die Endzeit anzugeben.

Das Hang-Rate-Histogramm 1624 kann auf der Benutzeroberfläche dargestellt werden 1600. Die Hang-Rate kann in Sekunden angegeben werden, in denen die Anwendung pro Stunde der Nutzung nicht reagiert hat. Die Hangrate der neuesten Version 1626 gezeigt werden kann. Die Änderung der Hangrate 1628 auch aus der vorherigen Version der Anwendung abgebildet werden. Das Histogramm der Startzeit 1630 kann die Startzeit für jede Version darstellen 1632 des Antrags. Die gestrichelte Linie 1634 zeigt den besten seiner Klasse für die Hangrate.

Das Peak-Gedächtnis-Histogramm 1634 kann auf der Benutzeroberfläche dargestellt werden 1600. Der Spitzenspeicher kann in Megabyte gemessen werden. Die neueste Version des Spitzenspeichers 1636 gezeigt werden kann. Die Änderung des Spitzenspeichers 1638 auch aus der vorherigen Version der Anwendung abgebildet werden. Das Peak-Gedächtnis-Histogramm 1640 kann die Startzeit für jede Version darstellen 1642 des Antrags. Die gestrichelte Linie 1644 zeigt den besten seiner Klasse für Spitzenspeicher.

Das durchschnittliche Gedächtnishistogramm 1646 kann auf der Benutzeroberfläche dargestellt werden 1600. Der durchschnittliche Speicher kann in Megabyte gemessen werden. Durchschnittlicher Speicher der neuesten Version 1648 gezeigt werden kann. Die Veränderung des durchschnittlichen Gedächtnisses 1650 auch aus der vorherigen Version der Anwendung abgebildet werden. Das durchschnittliche Gedächtnishistogramm 1652 kann den durchschnittlichen Speicher für jede Version darstellen 1654 des Antrags. Die gestrichelte Linie 1656 zeigt den besten seiner Klasse für durchschnittliches Gedächtnis.

C. Benutzeroberfläche zur Visualisierung logischer Schreibvorgänge

FEIGE. 17 veranschaulicht eine beispielhafte Benutzerschnittstelle 1700 zum Analysieren von Leistungsaspekten für eine Drittanbieteranwendung. In einigen Ausführungsformen ist die Benutzeroberfläche 1700 kann die Auswahl von Leistungsmetriken ermöglichen 1702, Leistungskennzahlen 1704, oder Datenträgernutzungsmetriken 1706. Die Plattennutzungsmetriken werden in Fig. 1 angezeigt. 17.

In einigen Ausführungsformen ist die beispielhafte Benutzerschnittstelle 1700 kann die Benutzerauswahl für eine Klasse oder ein Modell eines Gerätes darstellen 1708. Beispielsweise sind die in FIG. 17 ist für das iPhone XS-Gerät. Die Benutzeroberfläche 1700 kann die Benutzerauswahl für Perzentil darstellen 1710 von Metriken.

Das logische Schreibhistogramm 1712 zeigt die Anzahl der logischen Schreibvorgänge an, die in den letzten 24 Stunden auf das Speichergerät geschrieben wurden. Die logischen Schreibvorgänge können in Megabyte gemeldet werden. Die neueste Version von Logical Writes 1714 kann ebenso abgebildet werden wie die Änderung bei logischen Schreibvorgängen 1716 aus der vorherigen Version der Anwendung. Das durchschnittliche Gedächtnishistogramm 1718 kann die logischen Schreibvorgänge pro Tag für jede Version darstellen 1720 des Antrags. Die gestrichelte Linie 1722 zeigt den Klassenbesten für logische Schreibvorgänge.

Jedes der hierin beschriebenen Verfahren kann durch ein Computersystem implementiert werden. Jeder Schritt dieser Verfahren kann automatisch durch das Computersystem ausgeführt werden und/oder kann mit Eingaben/Ausgaben versehen sein, die einen Benutzer einbeziehen. Zum Beispiel kann ein Benutzer Eingaben für jeden Schritt in einem Verfahren bereitstellen, und jede dieser Eingaben kann als Reaktion auf eine spezifische Ausgabe erfolgen, die eine solche Eingabe anfordert, wobei die Ausgabe durch das Computersystem erzeugt wird. Jede Eingabe kann als Reaktion auf eine entsprechende anfordernde Ausgabe empfangen werden. Außerdem können Eingaben von einem Benutzer, von einem anderen Computersystem als Datenstrom empfangen, von einem Speicherort abgerufen, über ein Netzwerk abgerufen, von einem Webdienst angefordert werden und/oder dergleichen. Ebenso können Ausgaben an einen Benutzer, an ein anderes Computersystem als ein Datenstrom bereitgestellt werden, der an einem Speicherort gespeichert, über ein Netzwerk gesendet, an einen Webdienst bereitgestellt wird und/oder dergleichen. Kurz gesagt kann jeder Schritt der hierin beschriebenen Verfahren von einem Computersystem durchgeführt werden und kann eine beliebige Anzahl von Eingaben, Ausgaben und/oder Anforderungen an und von dem Computersystem beinhalten, die einen Benutzer einbeziehen können oder nicht. Man kann sagen, dass diese Schritte, die keinen Benutzer betreffen, automatisch vom Computersystem ohne menschliches Eingreifen durchgeführt werden. Daher versteht es sich im Lichte dieser Offenbarung, dass jeder Schritt jedes hierin beschriebenen Verfahrens geändert werden kann, um eine Eingabe und Ausgabe an und von einem Benutzer zu umfassen, oder automatisch von einem Computersystem ohne menschliches Eingreifen durchgeführt werden kann, wenn irgendwelche Bestimmungen werden von einem Verarbeiter erstellt. Darüber hinaus können einige Ausführungsformen jedes der hierin beschriebenen Verfahren als ein Satz von Anweisungen implementiert werden, die auf einem materiellen, nicht flüchtigen Speichermedium gespeichert sind, um ein konkretes Softwareprodukt zu bilden.

FEIGE. 18 ist ein Blockdiagramm einer beispielhaften Vorrichtung 1800, bei dem es sich um ein mobiles Gerät handeln kann, auf dem die Techniken ausgeführt werden können. Gerät 1800 umfasst in der Regel computerlesbares Medium (Speicher) 1802, ein Verarbeitungssystem 1804, ein Input/Output (I/O) Subsystem 1806, drahtlose Schaltung 1808, und Audioschaltung circuit 1810 inklusive Lautsprecher 1850 und Mikrofon 1852. Diese Komponenten können durch einen oder mehrere Kommunikationsbusse oder Signalleitungen gekoppelt sein 1803. Gerät 1800 kann jedes tragbare elektronische Gerät sein, einschließlich eines Handheld-Computers, eines Tablet-Computers, eines Mobiltelefons, eines Laptops, eines Tablet-Geräts, eines Mediaplayers, eines tragbaren Geräts, eines persönlichen digitalen Assistenten (PDA), eines Schlüsselanhängers, eines Autoschlüssels, eines Zugangs Karte, ein Multifunktionsgerät, ein Mobiltelefon, ein tragbares Spielgerät, eine Autoanzeigeeinheit oder dergleichen, einschließlich einer Kombination von zwei oder mehr dieser Gegenstände.

Das Gerät 1800 kann ein Multifunktionsgerät mit Display sein 1854. Der Bildschirm 1854 kann gemäß einigen Ausführungsformen ein Touchscreen sein. Der Touchscreen zeigt optional eine oder mehrere Grafiken innerhalb der Benutzeroberfläche (UI) an. In einigen Ausführungsformen wird einem Benutzer ermöglicht, eine oder mehrere der Grafiken auszuwählen, indem er beispielsweise mit einem oder mehreren Fingern oder einem oder mehreren Stiften eine Geste auf den Grafiken ausführt. In einigen Ausführungsformen erfolgt die Auswahl einer oder mehrerer Grafiken, wenn der Benutzer den Kontakt mit der einen oder mehreren Grafiken unterbricht. In einigen Ausführungsformen umfasst die Geste optional ein oder mehrere Tippen, ein oder mehrere Wischen (von links nach rechts, von rechts nach links, nach oben und/oder nach unten) und/oder ein Rollen eines Fingers (von rechts nach links, von links nach rechts). , nach oben und/oder nach unten), die das Gerät berührt hat 1800. In einigen Implementierungen oder Umständen wählt ein versehentlicher Kontakt mit einer Grafik die Grafik nicht aus. Beispielsweise wählt eine Wischgeste, die über ein Anwendungssymbol streicht, optional die entsprechende Anwendung nicht aus, wenn die der Auswahl entsprechende Geste ein Tippen ist. Gerät 1800 kann optional auch eine oder mehrere physische Schaltflächen umfassen, wie z. B. „Home“- oder Menü-Schaltfläche. Als Menütaste dient optional die Navigation zu einer beliebigen Anwendung in einer Reihe von Anwendungen, die optional auf dem Gerät ausgeführt werden 1800. Alternativ ist in einigen Ausführungsformen die Menütaste als Softkey in einer auf einem Touchscreen angezeigten grafischen Benutzeroberfläche implementiert.

Das Gerät 1800 kann ein Display enthalten 1854. Der Bildschirm 1854 kann eine Flüssigkristallanzeige (LCD), organische Leuchtdiode (OLED), organische Leuchtdiode mit aktiver Matrix (AMOLED), Leuchtdiode mit superaktiver Matrix (AMOLED), Dünnschichttransistor (TFT), In-Plane-Switching sein (IPS) oder Dünnschichttransistor-Flüssigkristallanzeige (TFT-LCD), die typischerweise in Computergeräten zu finden sind. Der Bildschirm 1854 kann eine Touchscreen-Anzeige eines Computergeräts sein.

In einer Ausführungsform ist das Gerät 1800 umfasst Touchscreen, Menütaste, Drucktaste zum Ein-/Ausschalten des Geräts und Sperren des Geräts, Lautstärkeregler, SIM-Kartensteckplatz (Subscriber Identity Module), Headset-Buchse und externer Docking-/Ladeanschluss. Die Drucktaste wird optional verwendet, um das Gerät ein- und auszuschalten, indem die Taste gedrückt und die Taste für ein vordefiniertes Zeitintervall gedrückt gehalten wird, um das Gerät durch Drücken der Taste und Loslassen der Taste vor der vordefinierten Zeit zu sperren Intervall abgelaufen ist und/oder das Gerät zu entsperren oder einen Entsperrvorgang einzuleiten. In einer alternativen Ausführungsform ist das Gerät 1800 akzeptiert auch mündliche Eingaben zur Aktivierung oder Deaktivierung einiger Funktionen über das Mikrofon. Gerät 1800 umfasst optional auch einen oder mehrere Kontaktintensitätssensoren zum Erfassen der Intensität von Kontakten auf dem Touchscreen und/oder einen oder mehrere taktile Ausgabegeneratoren zum Erzeugen taktiler Ausgaben für einen Benutzer des Geräts 1800.

In einer beispielhaften Konfiguration ist Gerät 1800 kann mindestens ein computerlesbares Medium (Speicher) enthalten 1802 und eine oder mehrere Verarbeitungseinheiten (oder Prozessor(en)) 1818. Prozessor(en) 1818 können nach Bedarf in Hardware, Software oder Kombinationen davon implementiert werden. Computerausführbare Anweisungen oder Firmware-Implementierungen von Prozessor(en) 1818 kann computerausführbare Anweisungen umfassen, die in einer beliebigen geeigneten Programmiersprache geschrieben sind, um die verschiedenen beschriebenen Funktionen auszuführen.

Computerlesbares Medium (Speicher) 1802 kann Programmanweisungen speichern, die auf Prozessoren ladbar und ausführbar sind 1818, sowie Daten, die während der Ausführung dieser Programme erzeugt werden. Je nach Konfiguration und Gerätetyp 1800, Erinnerung 1802 kann flüchtig sein (wie beispielsweise ein Direktzugriffsspeicher (RAM)) und/oder nichtflüchtig (wie beispielsweise ein Nur-Lese-Speicher (ROM), ein Flash-Speicher usw.). Gerät 1800 kann eine oder mehrere Erinnerungen haben. Gerät 1800 kann auch zusätzlichen entfernbaren Speicher und/oder nicht entfernbaren Speicher umfassen, einschließlich, aber nicht beschränkt auf Magnetspeicher, optische Platten und/oder Bandspeicher. Die Plattenlaufwerke und ihre zugehörigen nichtflüchtigen computerlesbaren Medien können eine nichtflüchtige Speicherung von computerlesbaren Anweisungen, Datenstrukturen, Programmmodulen und anderen Daten für die Geräte bereitstellen. In einigen Implementierungen ist Speicher 1802 kann mehrere unterschiedliche Speichertypen umfassen, wie beispielsweise statischen Direktzugriffsspeicher (SRAM), dynamische Direktzugriffsspeicher (DRAM) oder ROM. Während der hier beschriebene flüchtige Speicher als RAM bezeichnet werden kann, wäre jeder flüchtige Speicher geeignet, der keine darin gespeicherten Daten hält, wenn er einmal von einem Host und/oder einer Stromversorgung getrennt ist.

Erinnerung 1802 und zusätzlicher Speicher, sowohl entfernbare als auch nicht entfernbare, sind alle Beispiele für nicht flüchtige computerlesbare Speichermedien. Zum Beispiel können nichtflüchtige computerlesbare Speichermedien flüchtige oder nichtflüchtige, entfernbare oder nicht entfernbare Medien umfassen, die in einem Verfahren oder einer Technologie zum Speichern von Informationen implementiert sind, wie beispielsweise computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Daten . Erinnerung 1802 und zusätzlicher Speicher sind beides Beispiele für nichtflüchtige Computerspeichermedien. Zusätzliche Arten von Computerspeichermedien, die im Gerät vorhanden sein können 1800 kann Phasenwechsel-RAM (PRAM), SRAM, DRAM, RAM, ROM, elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM), Flash-Speicher oder andere Speichertechnologie, Compact-Disc-Nur-Lese-Speicher ( CD-ROM), digitale Videodisc (DVD) oder andere optische Speichermedien, Magnetkassetten, Magnetbänder, Magnetplattenspeicher oder andere magnetische Speichergeräte oder jedes andere Medium, das zum Speichern der gewünschten Informationen verwendet werden kann und auf das zugegriffen werden kann Gerät 1800. Kombinationen von einem der oben genannten sollten ebenfalls in den Geltungsbereich von nichtflüchtigen computerlesbaren Speichermedien eingeschlossen sein. Basierend auf der Offenbarung und den Lehren, die hier bereitgestellt werden, kann ein Durchschnittsfachmann andere Wege und/oder Verfahren erkennen, um die verschiedenen Ausführungsformen zu implementieren. Wie oben erwähnt, umfassen computerlesbare Speichermedien jedoch keine vorübergehenden Medien wie etwa Trägerwellen oder dergleichen.

Alternativ können computerlesbare Kommunikationsmedien computerlesbare Anweisungen, Programmmodule oder andere Daten umfassen, die innerhalb eines Datensignals, wie beispielsweise einer Trägerwelle, oder einer anderen Übertragung übertragen werden. Wie hierin verwendet, umfassen computerlesbare Speichermedien jedoch keine computerlesbaren Kommunikationsmedien.

Gerät 1800 kann auch Kommunikationsverbindung(en) enthalten 1808 das Gerät zulassen 1800 um mit einem Datenspeicher, einem anderen Gerät oder Server, Benutzerterminals und/oder anderen Geräten über ein oder mehrere Netzwerke zu kommunizieren. Solche Netze können ein beliebiges oder eine Kombination vieler verschiedener Arten von Netzen umfassen, wie beispielsweise Kabelnetze, das Internet, drahtlose Netze, zellulare Netze, Satellitennetze, andere private und/oder öffentliche Netze oder eine beliebige Kombination davon. Gerät 1800 kann auch E/A-Geräte enthalten 1806, wie etwa ein Berührungseingabegerät, eine Tastatur, eine Maus, ein Stift, ein Spracheingabegerät, ein Display, ein Lautsprecher, ein Drucker usw.

Es sollte offensichtlich sein, dass die in FIG. 18 ist nur ein Beispiel für eine Architektur für Geräte 1800, und dieses Gerät 1800 kann mehr oder weniger Komponenten als gezeigt oder eine andere Konfiguration von Komponenten aufweisen. Die verschiedenen Komponenten, die in FIG. 18 kann in Hardware, Software oder einer Kombination aus Hardware und Software implementiert sein, einschließlich einer oder mehrerer Signalverarbeitungs- und/oder anwendungsspezifischer integrierter Schaltungen.

Drahtlose Schaltung 1808 wird verwendet, um Informationen über eine drahtlose Verbindung oder ein Netzwerk an eine oder mehrere konventionelle Schaltungen anderer Geräte zu senden und zu empfangen, wie z. B. ein Antennensystem, einen Hochfrequenz-(HF)-Transceiver, einen oder mehrere Verstärker, einen Tuner, einen oder mehrere Oszillatoren, a digitaler Signalprozessor, Codec-Chipsatz, Speicher usw. Drahtlose Schaltung circuit 1808 kann verschiedene Protokolle verwenden, z. B. wie hierin beschrieben. Zum Beispiel drahtlose Schaltungen 1808 kann eine Komponente für ein Funkprotokoll (z. B. Bluetooth®) und eine separate Komponente für ein anderes Funkprotokoll (z. B. Ultrabreitband ((UWB)) haben. Für die verschiedenen Protokolle können unterschiedliche Antennen verwendet werden.

Drahtlose Schaltung 1808 ist mit Verarbeitungssystem gekoppelt coupled 1804 über Peripherieschnittstelle 1816. Schnittstelle 1816 kann konventionelle Komponenten für den Aufbau und die Aufrechterhaltung der Kommunikation zwischen Peripheriegeräten und Verarbeitungssystem enthalten 1804. Von drahtlosen Schaltkreisen empfangene Sprach- und Dateninformationen 1808 (z. B. in Spracherkennungs- oder Sprachbefehlsanwendungen) wird an einen oder mehrere Prozessoren gesendet 1818 über Peripherieschnittstelle 1816. Ein oder mehrere Prozessoren 1818 sind konfigurierbar, um verschiedene Datenformate für ein oder mehrere Anwendungsprogramme zu verarbeiten 1834 gespeichert auf computerlesbarem Medium (Speicher) 1802.

Peripherieschnittstelle 1816 koppeln Sie die Eingabe- und Ausgabeperipherie des Geräts an Prozessor(en) 1818 und computerlesbares Medium 1802. Ein oder mehrere Prozessoren 1818 mit computerlesbaren Medien kommunizieren communicate 1802 über einen Controller 1820. Computerlesbares Medium 1802 kann jedes Gerät oder Medium sein, das Code und/oder Daten zur Verwendung durch einen oder mehrere Prozessoren speichern kann store 1818. Mittel 1802 kann eine Speicherhierarchie umfassen, einschließlich Cache, Hauptspeicher und Sekundärspeicher.

Gerät 1800 beinhaltet auch ein Stromsystem 1842 zur Stromversorgung der verschiedenen Hardwarekomponenten. Stromversorgungssystem 1842 kann ein Energieverwaltungssystem, eine oder mehrere Energiequellen (z. B. Batterie, Wechselstrom (AC)), ein Aufladesystem, eine Stromausfallerkennungsschaltung, einen Stromwandler oder Wechselrichter, eine Stromstatusanzeige (z. B. eine Leuchtdiode) umfassen Diode (LED)) und alle anderen Komponenten, die typischerweise mit der Stromerzeugung, -verwaltung und -verteilung in mobilen Geräten verbunden sind.

In einigen Ausführungsformen ist das Gerät 1800 beinhaltet eine Kamera 1844. In einigen Ausführungsformen ist das Gerät 1800 beinhaltet Sensoren 1846. Sensoren 1846 kann Beschleunigungsmesser, Kompasse, Gyrometer, Drucksensoren, Audiosensoren, Lichtsensoren, Barometer und dergleichen umfassen. Sensoren 1846 kann verwendet werden, um Standortaspekte zu erfassen, wie beispielsweise akustische oder Lichtsignaturen eines Standorts.

In einigen Ausführungsformen ist das Gerät 1800 kann einen GPS-Empfänger enthalten, manchmal auch als GPS-Einheit bezeichnet 1848. Ein Mobilgerät kann ein Satellitennavigationssystem wie das Global Positioning System (GPS) verwenden, um Positionsinformationen, Zeitinformationen, Höhe oder andere Navigationsinformationen zu erhalten. Während des Betriebs kann das GPS-Gerät Signale von GPS-Satelliten empfangen, die die Erde umkreisen. Das GPS-Gerät analysiert die Signale, um eine Schätzung der Laufzeit und Entfernung vorzunehmen. Die GPS-Einheit kann die aktuelle Position (aktueller Standort) des Mobilgeräts bestimmen. Basierend auf diesen Schätzungen kann das Mobilgerät eine Standortbestimmung, Höhe und/oder aktuelle Geschwindigkeit bestimmen. Eine Ortsbestimmung kann aus geografischen Koordinaten wie Breiten- und Längenangaben bestehen.

Ein oder mehrere Prozessoren 1818 verschiedene Softwarekomponenten ausführen, die im Medium gespeichert sind 1802 um verschiedene Funktionen für das Gerät auszuführen 1800. In einigen Ausführungsformen umfassen die Softwarekomponenten ein Betriebssystem 1822, ein Kommunikationsmodul (oder eine Anleitung) 1824, ein Standortmodul (oder eine Anleitung) 1826, ein Logging-Modul 1828, ein Modul für Betriebsmetriken 1830, und andere Anwendungen (oder eine Reihe von Anweisungen) 1834.

Betriebssystem 1822 kann jedes geeignete Betriebssystem sein, einschließlich iOS, Macintosh-Betriebssystem (Mac OS), Darwin, Quadros Real-Time Operating System (RTXC), LINUX, UNIX, OS X, Microsoft Windows oder ein eingebettetes Betriebssystem wie VxWorks. Das Betriebssystem kann verschiedene Prozeduren, Befehlssätze, Softwarekomponenten und/oder Treiber zum Steuern und Verwalten allgemeiner Systemaufgaben (z. B. Speicherverwaltung, Speichergerätesteuerung, Energieverwaltung usw.) umfassen und erleichtert die Kommunikation zwischen verschiedenen Hardware- und Softwarekomponenten . Ein Betriebssystem 1822 ist eine Systemsoftware, die Computerhardware- und -softwareressourcen verwaltet und allgemeine Dienste für Computerprogramme bereitstellt. Zum Beispiel das Betriebssystem 1822 kann die Interaktion zwischen dem Benutzerschnittstellenmodul und einer oder mehreren Benutzeranwendung(en) verwalten. Die verschiedenen Ausführungsformen können ferner in einer Vielzahl von Betriebsumgebungen implementiert werden, die in einigen Fällen einen oder mehrere Benutzercomputer, Geräte oder Verarbeitungsgeräte umfassen können, die verwendet werden können, um eine beliebige Anzahl von Anwendungen zu betreiben. Benutzer- oder Client-Geräte können eine Reihe von Allzweck-PCs umfassen, wie Desktop- oder Laptop-Computer, auf denen ein Standardbetriebssystem ausgeführt wird, sowie Mobilfunk-, Drahtlos- und Handheld-Geräte, auf denen mobile Software ausgeführt wird und die eine Reihe von Netzwerk- und Messaging-Funktionen unterstützen können Protokolle. Ein solches System kann auch eine Anzahl von Workstations umfassen, auf denen eines einer Vielzahl von kommerziell erhältlichen Betriebssystemen und anderen bekannten Anwendungen für Zwecke wie Entwicklung und Datenbankverwaltung laufen. Diese Geräte können auch andere elektronische Geräte umfassen, wie beispielsweise Dummy-Terminals, Thin-Clients, Spielsysteme und andere Geräte, die über ein Netzwerk kommunizieren können.

Kommunikationsmodul 1824 erleichtert die Kommunikation mit anderen Geräten über einen oder mehrere externe Ports 1836 oder über drahtlose Schaltung 1808 und enthält verschiedene Softwarekomponenten für die Verarbeitung von Daten, die von drahtlosen Schaltkreisen empfangen werden 1808 und/oder externer Port 1836. Externer Anschluss 1836 (z. B. universeller serieller Bus (USB), FireWire, Lightning-Anschluss, 60-poliger Anschluss usw.) ist für die direkte Kopplung mit anderen Geräten oder indirekt über ein Netzwerk (z. B. das Internet, drahtloses lokales Netzwerk (LAN)) geeignet , usw.).

Standort-/Bewegungsmodul 1826 kann bei der Bestimmung der aktuellen Position (z. B. Koordinaten oder andere geografische Standortkennungen) und der Bewegung des Geräts helfen 1800. Moderne Positionierungssysteme umfassen satellitengestützte Positionierungssysteme, wie beispielsweise das Global Positioning System (GPS), die Positionierung eines Mobilfunknetzes basierend auf „Zellen-IDs“ und eine Wi-Fi-Positionierungstechnologie basierend auf einem Wi-Fi-Netzwerk. GPS verlässt sich auch auf die Sichtbarkeit mehrerer Satelliten, um eine Positionsschätzung zu bestimmen, die in Innenräumen oder in „Stadtschluchten“ möglicherweise nicht sichtbar ist (oder schwache Signale aufweist). In einigen Ausführungsformen Standort-/Bewegungsmodul 1826 empfängt Daten vom GPS-Gerät 1848 und analysiert die Signale, um die aktuelle Position des Mobilgeräts zu bestimmen. In einigen Ausführungsformen Standort-/Bewegungsmodul 1826 kann einen aktuellen Standort mithilfe von Wi-Fi- oder Mobilfunk-Standorttechnologie bestimmen. Zum Beispiel kann der Standort des Mobilgeräts unter Verwendung von Kenntnissen über nahegelegene Zellenstandorte und/oder Wi-Fi-Zugangspunkte mit Kenntnis auch ihrer Standorte geschätzt werden. Informationen zur Identifizierung des Wi-Fi- oder Mobilfunksenders werden von den drahtlosen Schaltkreisen empfangen 1808 und wird an das Standort-/Bewegungsmodul übergeben 1826. In einigen Ausführungsformen empfängt das Standortmodul die eine oder die mehreren Sender-IDs. In einigen Ausführungsformen kann eine Sequenz von Sender-IDs mit einer Referenzdatenbank (z. B. Zellen-ID-Datenbank, Wi-Fi-Referenzdatenbank) verglichen werden, die die Sender-IDs mit Positionskoordinaten entsprechender Sender abbildet oder korreliert und geschätzte Positionskoordinaten für das Gerät berechnet 1800 basierend auf den Positionskoordinaten der entsprechenden Sender. Unabhängig von der verwendeten Ortungstechnologie, Ortungs-/Bewegungsmodul 1826 empfängt Informationen, aus denen eine Ortsbestimmung abgeleitet werden kann, interpretiert diese Informationen und gibt Ortsinformationen wie geographische Koordinaten, Breiten-/Längengrad oder andere Ortsbestimmungsdaten zurück.

Das elektronische Gerät kann ein Protokollierungsmodul enthalten 1828. Das Logging-Modul 1828 nach der Aktivierung können Ereignisdaten, die auf dem elektronischen Gerät auftreten, empfangen und speichern. Die Ereignisdaten können unter anderem die Zeit der Zentraleinheit (CPU), die Zeit der Grafikeinheit (GPU), Speicherinformationen, Startzeit, Hängezeit, durchschnittliche Bildluminanz (APL), Bildrate, logische Schreibvorgänge auf einen Festkörper umfassen Zustand Gerät.

Das elektronische Gerät kann auch ein Modul für Betriebsmetriken enthalten 1830. Das Modul Betriebsmetriken 1830 kann die Ereignisdaten vom Protokollierungsmodul empfangen und die Ereignisdaten in Betriebskennzahlen umwandeln. Die Metriken können Metadaten enthalten, die das Betriebssystem angeben 1822 Versionsnummer für das elektronische Gerät 1800, die Klasse für das Gerät 1800 und die Modellnummer für das Gerät 1800.

Das eine oder die mehreren Anwendungsprogramme 1834 auf dem Mobilgerät können alle auf dem Gerät installierten Anwendungen enthalten 1800, einschließlich, ohne Einschränkung, Browser, Adressbuch, Kontaktliste, E-Mail, Instant Messaging, Textverarbeitung, Tastaturemulation, Widgets, JAVA-fähige Anwendungen, Verschlüsselung, Verwaltung digitaler Rechte, Spracherkennung, Sprachreplikation, ein Musikplayer (der abspielt) aufgenommene Musik, die in einer oder mehreren Dateien gespeichert ist, wie MP3- oder Advanced Audio Coding (AAC)-Dateien) usw.

Es kann andere Module oder Befehlssätze (nicht gezeigt) geben, wie etwa ein Grafikmodul, ein Zeitmodul usw. Zum Beispiel kann das Grafikmodul verschiedene herkömmliche Softwarekomponenten zum Rendern, Animieren und Anzeigen von grafischen Objekten (einschließlich, ohne Einschränkung, Text, Webseiten, Icons, digitale Bilder, Animationen und dergleichen) auf einer Anzeigeoberfläche. In einem anderen Beispiel kann ein Timer-Modul ein Software-Timer sein. Das Timer-Modul kann auch in Hardware implementiert werden. Das Zeitmodul kann verschiedene Timer für beliebig viele Ereignisse verwalten.

Das I/O-Subsystem 1806 kann mit einem Anzeigesystem (nicht gezeigt) gekoppelt werden, das ein berührungsempfindliches Display sein kann. Das Anzeigesystem zeigt dem Benutzer eine visuelle Ausgabe in einer GUI an. Die visuelle Ausgabe kann Text, Grafik, Video und eine beliebige Kombination davon umfassen. Ein Teil oder die gesamte visuelle Ausgabe kann Benutzeroberflächenobjekten entsprechen. Eine Anzeige kann LED-(lichtemittierende Diode), LCD-(Flüssigkristallanzeige)-Technologie oder LPD-(lichtemittierende Polymeranzeige)-Technologie verwenden, obwohl in anderen Ausführungsformen andere Anzeigetechnologien verwendet werden können.

In einigen Ausführungsformen ist das I/O-Subsystem 1806 kann eine Anzeige und Benutzereingabegeräte wie eine Tastatur, eine Maus und/oder ein Trackpad umfassen. In einigen Ausführungsformen ist das I/O-Subsystem 1806 kann ein berührungsempfindliches Display umfassen. Ein berührungsempfindliches Display kann auch Eingaben des Benutzers basierend auf haptischem und/oder taktilem Kontakt annehmen. In einigen Ausführungsformen bildet ein berührungsempfindliches Display eine berührungsempfindliche Oberfläche, die Benutzereingaben akzeptiert. Die berührungsempfindliche Anzeige/Oberfläche (zusammen mit allen zugehörigen Modulen und/oder Befehlssätzen in Medium 1802) erkennt den Kontakt (und jede Bewegung oder das Loslassen des Kontakts) auf dem berührungsempfindlichen Display und wandelt den erkannten Kontakt in eine Interaktion mit Benutzeroberflächenobjekten, wie einem oder mehreren Softkeys, die auf dem Touchscreen angezeigt werden, wenn der Kontakt tritt ein. In einigen Ausführungsformen entspricht ein Kontaktpunkt zwischen dem berührungsempfindlichen Display und dem Benutzer einer oder mehreren Ziffern des Benutzers. Der Benutzer kann mit der berührungsempfindlichen Anzeige unter Verwendung eines beliebigen geeigneten Objekts oder Zubehörs, wie beispielsweise eines Stifts, Stifts, Fingers usw., in Kontakt treten. Eine berührungsempfindliche Anzeigeoberfläche kann Kontakt und jede Bewegung oder Loslassen davon unter Verwendung beliebiger geeigneter berührungsempfindlicher Technologien erkennen, einschließlich kapazitiver, resistiver, Infrarot- und Oberflächenwellentechnologien sowie anderer Näherungssensorarrays oder anderer Elemente zum Bestimmen eines oder mehrerer Berührungspunkte mit dem berührungsempfindlichen Display.

Darüber hinaus kann das E/A-Subsystem mit einem oder mehreren anderen physischen Steuergeräten (nicht gezeigt) gekoppelt sein, wie beispielsweise Drucktasten, Tasten, Schalter, Wipptasten, Wählscheiben, Schiebeschalter, Knüppel, LEDs usw. zum Steuern oder Ausführen verschiedene Funktionen, wie Leistungssteuerung, Lautsprecherlautstärkesteuerung, Klingeltonlautstärke, Tastatureingabe, Scrollen, Halten, Menü, Bildschirmsperre, Löschen und Beenden von Kommunikationen und dergleichen. In einigen Ausführungsformen zusätzlich zum Touchscreen, Gerät 1800 kann ein Touchpad (nicht gezeigt) zum Aktivieren oder Deaktivieren bestimmter Funktionen umfassen.In einigen Ausführungsformen ist das Touchpad ein berührungsempfindlicher Bereich des Geräts, der im Gegensatz zum Touchscreen keine visuelle Ausgabe anzeigt. Das Touchpad kann eine vom berührungsempfindlichen Display getrennte berührungsempfindliche Fläche oder eine durch das berührungsempfindliche Display gebildete Verlängerung der berührungsempfindlichen Fläche sein.

In einigen Ausführungsformen können einige oder alle der hierin beschriebenen Operationen unter Verwendung einer Anwendung ausgeführt werden, die auf dem Gerät des Benutzers ausgeführt wird. Schaltungen, Logikmodule, Prozessoren und/oder andere Komponenten können konfiguriert sein, um verschiedene hierin beschriebene Operationen durchzuführen. Der Fachmann erkennt, dass je nach Implementierung eine solche Konfiguration durch Entwurf, Einrichtung, Verbindung und/oder Programmierung der bestimmten Komponenten erreicht werden kann und dass wiederum je nach Implementierung eine konfigurierte Komponente rekonfigurierbar sein kann oder nicht für einen anderen Betrieb. Zum Beispiel kann ein programmierbarer Prozessor konfiguriert werden, indem ein geeigneter ausführbarer Code bereitgestellt wird, eine dedizierte Logikschaltung kann konfiguriert werden, indem Logikgatter und andere Schaltungselemente geeignet verbunden werden und so weiter.

Die meisten Ausführungsformen verwenden mindestens ein Netzwerk, das dem Fachmann bekannt ist, um Kommunikationen unter Verwendung eines beliebigen einer Vielzahl von kommerziell verfügbaren Protokollen zu unterstützen, wie z. B. Transmission Control Protocol/Internet Protocol (TCP/IP), Open Systems Interconnection Model ( OSI), File Transfer Protocol (FTP), Universal Plug and Play (UPnP), Network File System (NFS), Common Internet File System (CIFS) und AppleTalk. Das Netz kann beispielsweise ein lokales Netz, ein Weitverkehrsnetz, ein virtuelles privates Netz, das Internet, ein Intranet, ein Extranet, ein öffentliches Telefonnetz, ein Infrarotnetz, ein drahtloses Netz und eine beliebige Kombination sein davon.

In Ausführungsformen, die einen Netzwerkserver verwenden, kann der Netzwerkserver eine Vielzahl von Server- oder Mid-Tier-Anwendungen ausführen, einschließlich HyperText Transfer Protocol (HTTP) Server, File Transfer Protocol (FTP) Server, Common Gateway Interface (CGI) Server, Daten servers Server, Java-Server und Geschäftsanwendungsserver. Der/die Server können auch in der Lage sein, Programme oder Skripte als Antwortanforderungen von Benutzergeräten auszuführen, beispielsweise durch Ausführen einer oder mehrerer Anwendungen, die als ein oder mehrere Skripte oder Programme implementiert sein können, die in einer beliebigen Programmiersprache wie Java® . geschrieben sind , C, C# oder C++, oder jede beliebige Skriptsprache, wie Perl, Python oder TCL, sowie Kombinationen davon. Der/die Server kann/können auch Datenbankserver umfassen, einschließlich, aber nicht beschränkt auf die von Oracle®, Microsoft®, Sybase® und IBM® kommerziell erhältlichen.

Solche Programme können auch unter Verwendung von Trägersignalen codiert und übertragen werden, die für die Übertragung über drahtgebundene, optische und/oder drahtlose Netzwerke geeignet sind, die einer Vielzahl von Protokollen einschließlich des Internets entsprechen. Als solches kann ein computerlesbares Medium gemäß einer Ausführungsform der vorliegenden Erfindung unter Verwendung eines mit solchen Programmen codierten Datensignals erzeugt werden. Computerlesbare Medien, die mit dem Programmcode codiert sind, können mit einem kompatiblen Gerät verpackt oder getrennt von anderen Geräten bereitgestellt werden (z. B. per Internet-Download). Jedes solche computerlesbare Medium kann sich auf oder in einem einzelnen Computerprodukt (z. B. einer Festplatte, einer CD oder einem gesamten Computersystem) befinden und kann auf oder in verschiedenen Computerprodukten innerhalb eines Systems oder Netzwerks vorhanden sein. Ein Computersystem kann einen Monitor, Drucker oder eine andere geeignete Anzeige umfassen, um einem Benutzer jedes der hier erwähnten Ergebnisse bereitzustellen.

Die Umgebung kann eine Vielzahl von Datenspeichern und anderen Speicher- und Speichermedien umfassen, wie oben erörtert. Diese können sich an einer Vielzahl von Orten befinden, beispielsweise auf einem Speichermedium lokal (und/oder resident in) einem oder mehreren der Computer oder entfernt von einem oder allen Computern im Netzwerk. In einem bestimmten Satz von Ausführungsformen können sich die Informationen in einem dem Fachmann bekannten Storage-Area-Network (SAN) befinden. Ebenso können alle notwendigen Dateien zum Ausführen der den Computern, Servern oder anderen Netzwerkgeräten zugeschriebenen Funktionen lokal und/oder entfernt gespeichert werden, je nach Bedarf. Wenn ein System computergestützte Geräte umfasst, kann jedes dieser Geräte Hardwareelemente umfassen, die über einen Bus elektrisch gekoppelt sein können, wobei die Elemente beispielsweise mindestens eine Zentraleinheit (CPU), mindestens ein Eingabegerät (z. B. eine Maus) umfassen , Tastatur, Controller, Touchscreen oder Tastatur) und mindestens ein Ausgabegerät (zB ein Anzeigegerät, Drucker oder Lautsprecher). Ein solches System kann auch ein oder mehrere Speichergeräte beinhalten, wie etwa Plattenlaufwerke, optische Speichergeräte und Solid-State-Speichergeräte, wie etwa RAM oder ROM, sowie Wechselmediengeräte, Speicherkarten, Flash-Karten usw.

Solche Geräte können auch einen computerlesbaren Speichermedienleser, ein Kommunikationsgerät (z. B. ein Modem, eine Netzwerkkarte (drahtlos oder drahtgebunden), ein Infrarot-Kommunikationsgerät usw.) und einen Arbeitsspeicher, wie oben beschrieben, umfassen. Der Leser für computerlesbare Speichermedien kann mit einem nicht flüchtigen computerlesbaren Speichermedium verbunden oder konfiguriert sein, um ein nicht flüchtiges computerlesbares Speichermedium zu empfangen, das entfernte, lokale, feste und/oder entfernbare Speichergeräte sowie Speichermedien für vorübergehende und/oder dauerhafteres Enthalten, Speichern, Übertragen und Abrufen von computerlesbaren Informationen. Das System und verschiedene Geräte können auch typischerweise eine Anzahl von Softwareanwendungen, Modulen, Diensten oder anderen Elementen umfassen, die sich in mindestens einem Arbeitsspeichergerät befinden, einschließlich eines Betriebssystems und Anwendungsprogramme, wie etwa eine Client-Anwendung oder ein Browser. Es versteht sich, dass alternative Ausführungsformen zahlreiche Variationen von den oben beschriebenen aufweisen können. Beispielsweise könnte auch kundenspezifische Hardware verwendet werden und/oder bestimmte Elemente könnten in Hardware, Software (einschließlich tragbarer Software, wie etwa Applets) oder beidem implementiert werden. Außerdem kann eine Verbindung mit anderen Geräten, wie beispielsweise Netzwerk-Eingabe-/Ausgabegeräten, verwendet werden.

Jede der in dieser Anmeldung beschriebenen Softwarekomponenten oder -funktionen kann als Softwarecode implementiert werden, der von einem Prozessor ausgeführt werden soll, der eine beliebige geeignete Computersprache verwendet, wie beispielsweise Java, C, C++, C#, Objective-C, Swift oder Scripting Sprache wie Perl oder Python, die beispielsweise konventionelle oder objektorientierte Techniken verwendet. Der Softwarecode kann als eine Reihe von Anweisungen oder Befehlen auf einem computerlesbaren Medium zur Speicherung und/oder Übertragung gespeichert werden. Ein geeignetes nichtflüchtiges computerlesbares Medium kann ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein magnetisches Medium wie eine Festplatte oder eine Diskette oder ein optisches Medium wie eine Compact Disk ( CD) oder DVD (Digital Versatile Disk), Flash-Speicher und dergleichen. Das computerlesbare Medium kann eine beliebige Kombination solcher Speicher- oder Übertragungsvorrichtungen sein.

Computerprogramme, die verschiedene Merkmale der vorliegenden Offenbarung enthalten, können auf verschiedenen computerlesbaren Speichermedien codiert sein, geeignete Medien umfassen Magnetplatten oder -bänder, optische Speichermedien, wie z. B. Compact Disk (CD) oder DVD (Digital Versatile Disk), Flash-Speicher und die mögen. Computerlesbare Speichermedien, die mit dem Programmcode codiert sind, können mit einem kompatiblen Gerät verpackt oder getrennt von anderen Geräten bereitgestellt werden. Außerdem kann Programmcode codiert und über drahtgebundene optische und/oder drahtlose Netzwerke, die einer Vielzahl von Protokollen einschließlich dem Internet entsprechen, übertragen werden, wodurch eine Verteilung, z. B. über Internet-Download, ermöglicht wird. Jedes solche computerlesbare Medium kann sich auf oder in einem einzelnen Computerprodukt (z. B. einem Solid-State-Laufwerk, einer Festplatte, einer CD oder einem gesamten Computersystem) befinden und kann auf oder in verschiedenen Computerprodukten innerhalb eines Systems oder Netzwerks vorhanden sein . Ein Computersystem kann einen Monitor, Drucker oder eine andere geeignete Anzeige umfassen, um einem Benutzer jedes der hierin erwähnten Ergebnisse bereitzustellen.

Die Beschreibung und die Zeichnungen sind dementsprechend eher illustrativ als einschränkend zu betrachten. Es ist jedoch offensichtlich, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne vom breiteren Geist und Umfang der Offenbarung, wie in den Ansprüchen dargelegt, abzuweichen.

Wie oben beschrieben, ist ein Aspekt der vorliegenden Technologie das Sammeln und Verwenden von Daten, die aus verschiedenen Quellen verfügbar sind, um rechteckigen Inhalt in nicht rechteckigen Bereichen anzuzeigen. Die vorliegende Offenbarung berücksichtigt, dass diese gesammelten Daten in einigen Fällen persönliche Informationsdaten enthalten können, die eine bestimmte Person eindeutig identifizieren oder verwendet werden können, um eine bestimmte Person zu kontaktieren oder zu lokalisieren. Solche personenbezogenen Daten können demografische Daten, standortbezogene Daten, Telefonnummern, E-Mail-Adressen, Twitter-IDs, Privatadressen, Daten oder Aufzeichnungen über die Gesundheit oder das Fitnessniveau eines Benutzers (z. B. Vitalparametermessungen, Medikamenteninformationen, Trainingsinformationen) umfassen ), Geburtsdatum oder andere identifizierende oder personenbezogene Daten.

Die vorliegende Offenbarung erkennt an, dass die Verwendung solcher personenbezogener Daten in der vorliegenden Technologie zum Vorteil der Benutzer verwendet werden kann. Zum Beispiel können die personenbezogenen Daten verwendet werden, um Informationen zu Betriebskennzahlen für Anwendungen Dritter anzuzeigen. Dementsprechend kann die Verwendung solcher personenbezogener Informationsdaten einem Benutzer auf dem Display präsentiert werden. Darüber hinaus werden von der vorliegenden Offenbarung auch andere Verwendungen für persönliche Informationsdaten in Betracht gezogen, die dem Benutzer zugute kommen. Zum Beispiel können Gesundheits- und Fitnessdaten verwendet werden, um Einblicke in das allgemeine Wohlbefinden eines Benutzers zu geben, oder können als positives Feedback für Personen verwendet werden, die Technologie verwenden, um Wellnessziele zu verfolgen.

Die vorliegende Offenlegung sieht vor, dass die für die Erhebung, Analyse, Offenlegung, Übertragung, Speicherung oder sonstige Nutzung dieser personenbezogenen Daten verantwortlichen Stellen die etablierten Datenschutzrichtlinien und/oder Datenschutzpraktiken einhalten. Insbesondere sollten solche Unternehmen Datenschutzrichtlinien und -praktiken implementieren und konsequent anwenden, die allgemein als die branchen- oder behördlichen Anforderungen erfüllen oder übertreffen, um personenbezogene Daten privat und sicher zu halten. Solche Richtlinien sollten für Benutzer leicht zugänglich sein und sollten aktualisiert werden, wenn sich die Erhebung und/oder Verwendung von Daten ändert. Personenbezogene Daten von Benutzern sollten für legitime und angemessene Zwecke des Unternehmens gesammelt und nicht außerhalb dieser legitimen Zwecke weitergegeben oder verkauft werden. Darüber hinaus sollte eine solche Sammlung/Teilung nach Erhalt der informierten Zustimmung der Benutzer erfolgen. Darüber hinaus sollten diese Unternehmen in Erwägung ziehen, alle erforderlichen Schritte zum Schutz und zur Sicherung des Zugriffs auf diese personenbezogenen Daten zu unternehmen und sicherzustellen, dass andere mit Zugriff auf die personenbezogenen Daten ihre Datenschutzrichtlinien und -verfahren einhalten. Darüber hinaus können sich solche Unternehmen einer Bewertung durch Dritte unterziehen, um ihre Einhaltung allgemein anerkannter Datenschutzrichtlinien und -praktiken zu bestätigen. Darüber hinaus sollten Richtlinien und Praktiken an die jeweiligen Arten von personenbezogenen Daten, die erfasst und/oder auf die zugegriffen wird, angepasst und an geltende Gesetze und Standards, einschließlich landesspezifischer Erwägungen, angepasst werden. In den USA kann die Erhebung oder der Zugriff auf bestimmte Gesundheitsdaten beispielsweise durch Bundes- und/oder Landesgesetze wie dem Health Insurance Portability and Accountability Act (HIPAA) geregelt werden, während Gesundheitsdaten in anderen Ländern anderen Vorschriften unterliegen können und Richtlinien und sollten entsprechend gehandhabt werden. Daher sollten in jedem Land unterschiedliche Datenschutzpraktiken für unterschiedliche Arten personenbezogener Daten beibehalten werden.

Ungeachtet des Vorstehenden betrachtet die vorliegende Offenbarung auch Ausführungsformen, in denen Benutzer selektiv die Verwendung von oder den Zugriff auf persönliche Informationsdaten blockieren. Das heißt, die vorliegende Offenbarung erwägt, dass Hardware- und/oder Softwareelemente bereitgestellt werden können, um den Zugriff auf solche personenbezogenen Informationsdaten zu verhindern oder zu blockieren. Im Fall von Anwendungsbewertungstechniken von Drittanbietern kann die vorliegende Technologie beispielsweise so konfiguriert werden, dass Benutzer während der Registrierung für Dienste oder jederzeit danach auswählen können, ob sie sich an der Erfassung personenbezogener Daten „anmelden“ oder „abmelden“ möchten . In einem anderen Beispiel können Benutzer auswählen, keine anzuzeigenden persönlichen Informationen bereitzustellen. In noch einem anderen Beispiel können Benutzer wählen, ob die Menge an personenbezogenen Daten beibehalten wird oder die Anzeige personenbezogener Daten vollständig verhindert wird. Neben der Bereitstellung von „Opt-in“- und „Opt-out“-Optionen sieht die vorliegende Offenbarung die Bereitstellung von Benachrichtigungen in Bezug auf den Zugriff oder die Verwendung personenbezogener Daten vor. Beispielsweise kann ein Benutzer beim Herunterladen einer App benachrichtigt werden, dass auf seine persönlichen Informationsdaten zugegriffen wird, und dann erneut daran erinnert werden, bevor die App auf persönliche Informationsdaten zugreift.

Darüber hinaus ist es die Absicht der vorliegenden Offenlegung, dass personenbezogene Daten so verwaltet und gehandhabt werden sollten, dass das Risiko eines unbeabsichtigten oder unbefugten Zugriffs oder einer unbefugten Nutzung minimiert wird. Das Risiko kann minimiert werden, indem die Sammlung von Daten eingeschränkt und Daten gelöscht werden, wenn sie nicht mehr benötigt werden. Darüber hinaus und gegebenenfalls, einschließlich in bestimmten gesundheitsbezogenen Anwendungen, kann die Anonymisierung von Daten verwendet werden, um die Privatsphäre eines Benutzers zu schützen. Die Anonymisierung kann gegebenenfalls erleichtert werden, indem bestimmte Kennungen (z. B. Geburtsdatum usw.) entfernt werden, die Menge oder Spezifität der gespeicherten Daten kontrolliert wird (z. B. Standortdaten auf Stadtebene statt auf Adressebene gesammelt werden), Steuern, wie Daten gespeichert werden (z. B. Aggregation von Daten über Benutzer hinweg) und/oder andere Methoden.

Obwohl die vorliegende Offenbarung die Verwendung personenbezogener Informationsdaten zum Implementieren einer oder mehrerer verschiedener offenbarter Ausführungsformen umfassend abdeckt, zieht die vorliegende Offenbarung daher auch in Betracht, dass die verschiedenen Ausführungsformen auch ohne die Notwendigkeit eines Zugriffs auf solche personenbezogenen Informationsdaten implementiert werden können. Das heißt, die verschiedenen Ausführungsformen der vorliegenden Technologie werden aufgrund des Fehlens aller oder eines Teils solcher personenbezogener Informationsdaten nicht funktionsunfähig gemacht. Zum Beispiel können Inhalte ausgewählt und an Benutzer geliefert werden, indem Präferenzen auf der Grundlage nicht personenbezogener Daten oder einer minimalen Menge personenbezogener Daten abgeleitet werden, wie z. B. der Inhalt, der von dem mit einem Benutzer verknüpften Gerät angefordert wird, andere verfügbare nicht personenbezogene Daten zu den Anwendungsbewertungstechniken von Drittanbietern oder öffentlich zugänglichen Informationen.

Andere Variationen liegen im Geist der vorliegenden Offenbarung. Während die offenbarten Techniken verschiedenen Modifikationen und alternativen Konstruktionen unterliegen, sind daher bestimmte veranschaulichte Ausführungsformen davon in den Zeichnungen gezeigt und oben im Detail beschrieben worden. Es versteht sich jedoch, dass die Offenbarung nicht auf die spezifische Form oder die offenbarten Formen beschränkt werden soll, sondern dass im Gegenteil alle Modifikationen, alternativen Konstruktionen und Äquivalente abgedeckt werden sollen, die in den Geist und Umfang der Offenbarung fallen , wie in den beigefügten Ansprüchen definiert.

Die Verwendung der Begriffe „ein“ und „ein“ und „der“ und ähnliche Verweise im Zusammenhang mit der Beschreibung der offenbarten Ausführungsformen (insbesondere im Kontext der folgenden Ansprüche) sind so auszulegen, dass sie sowohl den Singular als auch den Plural abdecken. sofern hierin nicht anders angegeben oder dem Kontext eindeutig widersprochen wird. Die Begriffe „umfassend“, „habend“, „einschließlich“ und „enthaltend“ sind als offene Begriffe auszulegen (d. h. im Sinne von „einschließlich, aber nicht beschränkt auf“), sofern nicht anders angegeben. Der Begriff „verbunden“ ist so auszulegen, dass er teilweise oder vollständig darin enthalten ist, daran angehängt oder miteinander verbunden ist, selbst wenn etwas dazwischenliegt. Der Ausdruck „basierend auf“ sollte offen und in keiner Weise einschränkend verstanden werden und soll gegebenenfalls als „zumindest teilweise basierend auf“ interpretiert oder anderweitig gelesen werden. Die Angabe von Wertebereichen hierin soll lediglich als Kurzform zur individuellen Bezugnahme auf jeden einzelnen Wert dienen, der in den Bereich fällt, sofern hierin nicht anders angegeben, und jeder einzelne Wert wird in die Beschreibung aufgenommen, als ob er hier einzeln aufgeführt wäre. Alle hierin beschriebenen Verfahren können in jeder geeigneten Reihenfolge durchgeführt werden, sofern hierin nicht anders angegeben oder anderweitig eindeutig durch den Kontext widersprochen wird. Die Verwendung jeglicher hierin bereitgestellter Beispiele oder beispielhafter Sprache (z. B. "wie beispielsweise") soll lediglich Ausführungsformen der Offenbarung besser beleuchten und stellt keine Einschränkung des Umfangs der Offenbarung dar, sofern nicht anders beansprucht. Keine Formulierung in der Beschreibung sollte so ausgelegt werden, dass sie irgendein nicht beanspruchtes Element als wesentlich für die Praxis der Offenbarung angibt.

Disjunktive Sprache wie der Ausdruck „mindestens eines von X, Y oder Z“, sofern nicht ausdrücklich anders angegeben, wird im Kontext, wie er allgemein verwendet wird, anderweitig verstanden, um darzustellen, dass ein Element, Begriff usw. entweder X, Y oder Z oder eine beliebige Kombination davon (zB X, Y und/oder Z). Somit soll und sollte eine solche disjunktive Sprache im Allgemeinen nicht implizieren, dass bestimmte Ausführungsformen erfordern, dass mindestens eines von X, mindestens eines von Y oder mindestens eines von Z vorhanden ist. Außerdem sollte eine konjunktive Sprache wie der Ausdruck „mindestens eines von X, Y und Z“, sofern nicht ausdrücklich anders angegeben, auch so verstanden werden, dass sie X, Y, Z oder eine beliebige Kombination davon, einschließlich „X, Y und /oder Z.“

Hierin werden bevorzugte Ausführungsformen dieser Offenbarung beschrieben, einschließlich des besten den Erfindern bekannten Modus zum Ausführen der Offenbarung. Variationen dieser bevorzugten Ausführungsformen können dem Durchschnittsfachmann beim Lesen der vorangehenden Beschreibung offensichtlich werden. Die Erfinder erwarten, dass Fachleute solche Variationen nach Bedarf anwenden, und die Erfinder beabsichtigen, dass die Offenbarung anders als hier spezifisch beschrieben praktiziert wird. Dementsprechend umfasst diese Offenbarung alle Modifikationen und Äquivalente des Gegenstands, der in den beigefügten Ansprüchen aufgeführt ist, soweit dies nach geltendem Recht zulässig ist. Darüber hinaus ist jede Kombination der oben beschriebenen Elemente in allen möglichen Variationen davon von der Offenbarung umfasst, sofern hierin nicht anders angegeben oder anderweitig eindeutig durch den Kontext widersprochen wird.

Alle Referenzen, einschließlich Veröffentlichungen, Patentanmeldungen und Patente, die hier zitiert werden, werden hiermit in demselben Umfang durch Bezugnahme aufgenommen, als ob jede Referenz einzeln und spezifisch als Bezugnahme eingeschlossen und hierin in ihrer Gesamtheit angegeben wäre.