5

Es ist eine schwierige Frage, die ich neulich gestellt wurde ... Wir arbeiten an einer ziemlich komplexen Telefonie (SIP) -Anwendung mit gemischtem C++ - und PHP-Code mit MySQL-Datenbanken und mehreren Open-Source-Komponenten.Können Sie die Leistung einer Anwendung vor dem Testen einschätzen?

Ein Telekom-Ingenieur hat uns gebeten, die Leistung der Anwendung abzuschätzen (die noch nicht fertig ist). Er sagte: "Nun, Sie wissen, wie viele Pakete pro Sekunde den Linux-Kernel passieren können, und Sie wissen vielleicht, wie schnell Ihre App ist, also sagen Sie mir, wie viele Anrufe pro Sekunde durch Ihre Daten gehen."

Scheint mir Unsinn, denn es gibt eine Million Szenarien, die passieren könnte (na ja, buchstäblich ...)

jedoch ... ist es eine Möglichkeit, die Anwendungsleistung zu schätzen (die Hardware zu wissen, es läuft auf , können Sie vor dem eigentlichen Test Standard-Benchmarks ausführen?

Antwort

6

Sie können das Problem sicherlich mit oberen (maximalen Durchsatz) Grenzen begrenzen. Da ist nichts Unsinn. In der Tat, wenn man dieses Zeug nicht kennt, deutet das auf eine ziemlich zufällige Annäherung an ein Problem hin - besonders in der Telefonwelt.

Sie können das Problem selbst lösen - was ist die Mindestarbeit, die Sie für eine Transaktion oder eine andere Aufgabeneinheit in Ihrer App leisten müssen?

Einige Nachrichten zu und von, einige Verarbeitung und eine Datenbank zum Beispiel getroffen? Informationen über die einzelnen Teile geben Ihnen einen Überblick über den schnellstmöglichen Durchsatz. Wenn Sie das System laden und deutlich geringere Leistung sehen, dann können Sie Zeit, um herauszufinden, wo Sie möglicherweise Durchsatz mit ineffizienten Algorithmen verlieren werden, usw.

EDIT

Um diese Übung müssen Sie wissen alle Schritte, die Ihre App für jeden Anwendungsfall durchführt Dann können Sie den maximalen Durchsatz für jeden Anwendungsfall identifizieren. Sie sollten dieses Zeug vor der Veröffentlichung und dem Produktivstart unbedingt kennen.

Ich ignoriere die Worst-Case-Analyse als das - wie Sie darauf hinweisen - ist ein bisschen schwieriger.

2

Wenn Sie wirklich diese beantworten könnte man so etwas sagen:

„Ich weiß nicht ab, die Spitze von meinem Kopf bin ich werde dies für Sie zu schätzen, aber es wird einige Zeit dauern Offensichtlich.. Die Genauigkeit meiner Antwort hängt davon ab, wie viel Aufwand (IE-Zeit) ich in die Berechnung meiner Schätzung gesteckt habe. Wie viel Zeit sollte ich in die Berechnung meiner Schätzung stecken? "

Legen Sie die Last auf sie zurück. Wenn sie wirklich eine genaue Antwort wollen, müssen sie zumindest einige Testanwendungen erstellen, die die tatsächliche Umgebung simulieren können.

1

Sie können die Leistung messen. Ihr gesamtes System funktioniert möglicherweise noch nicht, aber Sie wissen, wie die Teile zusammenpassen sollen. Sie können in wenigen Stunden etwas auf die Beine stellen, das die gleiche Arbeit verrichtet wie die finale App über alle Ebenen hinweg und es verwenden, um die Leistung Ihres Designs zu messen.

Erinnern Sie sich: Prototypen sind breit, Spitzen sind tief.

0

Dies gilt in einigen Domänen, aber wenn Sie kein Experte in dieser Domäne sind, dann haben Sie keine Ahnung. Zum Beispiel schreibe ich Code zum Steuern von Industrierobotern.Die Geschwindigkeit wird durch die Roboterbewegung und nicht durch die Ausführungsgeschwindigkeit des Codes begrenzt. Da wir wissen, wie schnell der Roboter ist und wie weit er gehen muss, können wir ziemlich gute Schätzungen der "Geschwindigkeit" machen. Ich hätte keine Ahnung, wie ich die Zeit für Ihre Bewerbung abschätzen könnte.

3

Siehe Capacity Planning for Web Performance: Metrics, Models, and Methods. Darüber hinaus gibt es einige Tools, die diese Art von diskreten Ereignissimulation tun können:

Dieses Zeug ist nicht einfach, und die kommerziellen Tools ya kosten . Das Kapazitätsplanungsbuch wird mit einer CD mit vielen Excel-Arbeitsmappenvorlagen und Beispielen für Modelle geliefert, mit denen Sie direkt gestartet werden können.

Viel Glück :)

1

Sie können auf jeden Fall tun, Kapazitätsplanung im Voraus, aber die Qualität der Schätzung wird auf die Qualität der Daten abhängen.

Die beste Schätzung besteht darin, das System im Test zu erstellen, simulierte Workloads auszuführen und dann die Kapazität als Funktion der Leistungsanforderungen und der Arbeitslast vorherzusagen. Diese 3 bilden eine Vorhersage Raum - gegeben 2 der 3 können Sie die dritte vorhersagen:

  1. Da die Leistungsanforderungen und die Kapazität (das heißt Hardware) können Sie die Arbeitsbelastung berechnen können Sie behandeln können.

  2. Angesichts der Leistungsanforderungen und Arbeitsauslastung können Sie die benötigte Kapazität (d. H. Hardware) berechnen.

  3. Angesichts der Auslastung und Kapazität können Sie Ihre erwartete Leistung vorhersagen.

1

Sie sollten die Schätzung tun. Eine Schätzung gibt Ihnen nicht die richtige Antwort. Es wird dich jedoch dazu bringen, über das Problem nachzudenken. Im Moment klingt es wie deine Programmierung und ich hoffe, dass alles in Ordnung sein wird. Oder Sie befinden sich im Panikmodus und haben das Gefühl, dass Sie keine Zeit für Schätzungen haben.

Verbringen Sie einige Zeit darüber nachzudenken. Analysieren Sie die wichtigen Anwendungsfälle. Denke über die Erinnerung nach, die du vielleicht brauchst; denke über Datenbankzugriff nach; Denken Sie über Netzwerkzugriff (lokal und remote) nach. Dies beeinträchtigt die Leistung Ihres Systems. Holen Sie das ganze Team zusammen, um dies zu tun.

Messen Sie regelmäßig die Systemleistung während der Entwicklung für diese wichtigen Anwendungsfälle. Mock up Komponenten/andere Systeme, wenn Sie müssen. Analysieren Sie die Ergebnisse. Wie vergleichen sie Ihre Schätzung? Vielleicht sind Komponenten Speicher/Datenbank/Netzwerk gebunden. Vielleicht brauchst du mehr Speicher; weniger Datenbankzugriff; einfachere Abfragen; Zwischenspeichern. Sie müssen diese Änderungen nicht sofort vornehmen. Sie wissen jedoch, wie Ihr System funktioniert und was Sie tun müssen.

Ergebnis: Weniger unangenehme Überraschungen beim Systemtest. Weniger Panik als das Erscheinungsdatum droht.