NEWS
[beantwortet] ioBroker.benchmark, und nun?
-
@hydrotec benchmark.files/history.json
-
@foxriver76
Danke dir.Das hatte ich mir schon einigermassen gedacht.
history.jsonNur finde ich keine files zu den Infos vom System.
@apollon77 sagte in ioBroker.benchmark, und nun?:
@hydrotec genau. Das json file mit Infos zum system (hw CPU und so) und zum
Js-Controller an mich.Die einzige Information was ich bis jetzt gefunden habe, ist eine Ausgabe im Log.
Oder Statistik
Gruß, Karsten
-
@hydrotec
Einfach unter info. Welche versionen du nutzt js-controller admin usw. steht alles in dem info tab -
@hydrotec genau die Infos aus dem Info Tab und dann was du hast Ala „Ist ein raspi 4“ oder „ein qnap Soundso“
-
@apollon77
@hydrotec
Wäre dann noch interessant ob der Lauf in der isolierten Ausführung durchgelaufen ist -
Dem Log nach zu urteilen, müsste alles durchgelaufen sein.
ioBroker_benchmark_log.txtHab mal versucht die Daten zusammen zu fassen.
Server: baseboard: ASRock A300M-STX cpu: Ryzen 5 PRO 3400G with Radeon Vega Graphics memory: 32 GB disks 1: Raid1 2x Samsung SSD 970 EVO Plus 250GB disks 2: Raid1 2x Samsung SSD 860 os: Ubuntu 20.04.3 LTS Focal Fossa server hypervisor: LXD ioBroker: container: LXC os: Ubuntu 20.04.3 LTS Focal Fossa server
und noch der Inhalt der Infoseite.
Plattform linux Betriebssystem linux Architektur x64 CPUs 8 Geschwindigkeit 1526 MHz Modell AMD Ryzen 5 PRO 3400G with Radeon Vega Graphics RAM 29.39 GB System-Betriebszeit 2 T. 07:45:10 Node.js v14.18.2 NPM 6.14.15 Datenträgergröße 268.86 GB freier Festplattenspeicher 266.12 GB Anzahl der Adapter 364 Betriebszeit 07:21:41 Aktive Instanzen 22 location /opt/iobroker/ Hostname iobroker
Solltest du noch mehr Informationen benötigen, bitte Anfragen.
Gruß, Karsten
-
@hydrotec sagte in ioBroker.benchmark, und nun?:
Dem Log nach zu urteilen, müsste alles durchgelaufen sein.
war vielleicht nicht klar formuliert.
Entscheidend is die Info ob isoliert oder nicht(wenn es nicht durchgelaufen wäre, gäbe es das summary json nicht
-
@homoran sagte in ioBroker.benchmark, und nun?:
Entscheidend is die Info ob isoliert oder nicht
laut Einstellungen der Instanz (siehe hier unter "instance") und dem Log
2021-12-24 07:01:34.990 - info: benchmark.0 (12205) starting. Version 0.4.0 in /opt/iobroker/node_modules/iobroker.benchmark, node: v14.18.2, js-controller: 3.3.22 2021-12-24 07:01:35.003 - info: benchmark.0 (12205) Adapter started... controller determined (pid: 211) 2021-12-24 07:02:10.532 - info: benchmark.0 (12205) Isolated run, stopping all instances
müsste es isoliert durchgelaufen sein, oder.
-
-
Ok,ich wollte ja noch ein paar Sätze zu Benchmark schreiben
Den Benchmark Adapter haben wir in erster Linie entwickelt um einerseits bei der Entwicklung im js-controller Performance-Auswirkungen von Änderungen "sehen" zu können und andererseits um einen generellen Vergleich von Hardware zu bekommen. Daher ist das ganze aktuell noch etwas "Entwicklerlastig" was das Thema angeht.
Wir haben bereits einen ersten Performance-Überblick im letzten Blog veröffentlicht https://www.iobroker.net/#de/blog/2021_12_15 der an einem Test beispielhaft den Durchsatz "Aktionen pro Sekunde" Zeigt. Am Ende ist die grobe Performance der Systeme bei den meisten Tests "vergleichbar" (was Reihenfolge und Abstände angeht" (nur hier und da tauschen mal "nahe" Systeme die Plätze weil es am Ende doch anfällig für Messfehler ist. Daher ist auch (für Vergleichbare Werte) der "Isolierte Modus" wichtig.
Der Durchsatz mit einem Redis-System ist nochmal ca. 20-25% höher - aber mit js-controller 3.3 rate ich von jeglichen Redis Tests ab. Das macht erst mit js-controller 4 sinn.
Daher ist das aber im Moment für die meisten Endanwender nichts - wer will/kann schon sein System für X Stunden abschalten
Wir überlegen gerade wie wir das vllt noch mit einem "Endanwender-Modus" versehen können sodass es auch da geht, aber ich denke das wird schwierig. mal schauen ob uns noch etwas einfällt. Sonst ist es gerade eher ein Tool für jemanden der "gerade Hardware nicht braucht"
@hydrotec Dein System sortiert sich etwas unterhalb eines Ryzen 3900X und leicht oberhalb eines Ryzen R7-4800U ein und hat mit 2.680 Object-Creations/s ne bzw 2.079 SetState/s recht gute performance.
Besser sind nur die Intel's weil die eine bessere Single-Core Performance haben, was bei ioBroker das A und O ist weil Node.js nur "Single process" ist. Daher starten wir auch jeden Adapter in einem eigenen Prozess, aber der js-controller (bzw Redis wenn Redis) ist da hier das "Bottleneck". Aber mit aktueller Hardware wie zB Intel Nucs oder Ryzen Systemen wie bei dir lassen sich sehr potente und leistungsfähige Systeme aufbauen.
Kurz Intel als Vergleich:- object-creates: Nuc8i5: 4.300/s, Nuc10i5: 6.097/s, Nuc11i5: 8.620/s
- setState: Nuc8i5: 3.508/s, Nuc10i5: 4.464/s, Nuc11i5: 6667/s
Aber auch die aktuelle Einplatinen-Hardware-Generation wir Tinkerboard oder Raspi 4 reichen für 9x% aller Smart-Homes locker aus mit 1.183 object creates/s (Tinker) bzw 734/s (Raspi3). Auch die "älteren" Intel Systeme wie Atom/Pentiums/Celerons (oft in NAS zu finden) liegen in der Region.
Ingo
-
Hallo Ingo,
erst einmal ein großes Dankeschön, dafür das du dir, trotz Weihnachtszeit,
Zeit für diese umfangreiche Erleuterung zu dem Thema genommen hast.Das ihr als Entwickler/Anbieter der Software auf diese Benchmarks angewiesen seid, ist verständlich.
Und ich finde es gut das ihr dieses Werkzeug nutzt, um die Software auch für leistungsschwächere Systeme lauffähig zu halten.
Denke mal, jeder der mit Smart-Home in Verbindung kommt, testet erst einmal mit einem Raspi (o.ä.).
Hatte auch, vor Jahren, mit einem Raspi 3B+ angefangen, doch mit der Zeit steigen die Anforderungen.
Gut, irgendwann muss man auch mal einen Schnitt machen, und die minimalen Systemvoraussetzungen hochschrauben.Benchmark für den Endanwender ist eher sekundär, und ich meine das man das auch nicht unbedingt anbieten muss.
Da es zich verschiedene System Konfigurationen gibt, sind diese Tests nicht unbedingt als Referenz geeignet.
Eventuell das Ergebnis etwas expliziter in der history.json mit eintragen, oder auf GitHub die Werte des Ergebnises aufschlüsseln,
dann hat man ja schon die Möglichkeit sich an euerem Performance-Überblick zu orientieren.Wie gesagt, es hat mich eben nur interessiert in wie weit, meine eher unkonventionelle Zusammenstellung des Systems, ungefähr einzureihen ist.
Das es mit einem Intel-System eher nicht mithalten kann, war mir schon bei der Zusammenstellung bewusst, und auch nicht gewünscht.
Bin im privaten Bereich eigentlich nicht bereit den Aufpreis von Intel zu bezahlen.
Die Lampen werden deswegen auch nicht schneller an/ausgeschaltetDaher ist das aber im Moment für die meisten Endanwender nichts - wer will/kann schon sein System für X Stunden abschalten
Kleiner Tipp, listet doch ungefähre Laufzeiten des Benchmark zu den von euch getesteten Systemen auf.
Der ein oder andere überlegt es sich dann zweimal ob er einen Benchmark ausführt.Vielen Dank noch einmal für deine Unterstützung.
(Auch ein Dankeschön den anderen Helferlein )Angenehmen Tag noch.
Gruß, Karsten -
@hydrotec sagte in ioBroker.benchmark, und nun?:
Kleiner Tipp, listet doch ungefähre Laufzeiten des Benchmark zu den von euch getesteten Systemen auf.
Der ein oder andere überlegt es sich dann zweimal ob er einen Benchmark ausführt.Dadurch das immer mal wieder Tests hinzukommen ist das gar nicht so einfach zu sagen :-)) mal schauen ob ich da was zusammenklöppeln kann
-
@apollon77 sagte in ioBroker.benchmark, und nun?:
ob ich da was zusammenklöppeln kann
ich kann auch mal nachsehen, habe aber nicht von allen die Gesamtlaufzeiten notiert
-
@homoran Die müsste ich errechnen können ... kommt dann immer auf die Anzahl der tests an ...
-
@apollon77 sagte in ioBroker.benchmark, und nun?:
@homoran Die müsste ich errechnen können ... kommt dann immer auf die Anzahl der tests an ...
incl cleaning up between epoch?
Ich hatte alles mit Standardeinstellungen
-
@homoran Ahhh ne das hab ich nicht ...
-
Guten Morgen Ingo,
eventuell kannst du diese Informationen gebrauchen.
Ich wollte den Geschwindigkeitsunterschied von DB-file zu DB-redis wissen.
Einen neuen Container mit einer frischen ioBroker Installation angelegt, und noch einen Container mit Redis eingerichtet.
Zuerst den Benchmark unter der Konfiguration DB file:file laufen gelassen.
Anschließend ioBroker auf DB redis:redis umgestellt.
Danach in der Instanz "Aufräumen" angewählt, und den Benchmark mit der Konfiguration DB redis:redis noch einmal gestartet.
Das Ergebnis hat mich dann doch etwas erstaunen lassen.Gruß, Karsten
-
@hydrotec was genau hat dich erstaunen lassen? Das der redis Test am Ende sooooooooo viel länger braucht? Wiederhole redis nochmal mit dem js-Controller 4 und du wirst noch mehr staunen
Das liegt daran das im Controller 3.x die „Objekt löschen“ Performance im redis unterirdisch ist. Und der Benchmark muss immer wieder viele Objekte löschen … aber wenn du bei deinen Testergebnisse mal in actionsPerSecMean schaust siehst du das redis bei dir in vielen Fällen fast doppelt so viel Durchsatz hat (bei setState sind es grob 2k/s zu 4k/s). Also aktuell nicht so auf die Gesamtlaufzeit schauen weil mit Controller 3.3 ist die stark verfälscht wegen cleanup Zeiten. Bzw klar ist der objectDelete Test bei redis ebenso schlecht.
Meintest du das?
-
@apollon77 sagte in [beantwortet] ioBroker.benchmark, und nun?:
Meintest du das?
Ja, Danke zu deiner Erläuterung
Am meisten hat mich die Verdoppelung des Durchsatzes erstaunt.
Aktuell läuft der Benchmark unter js-Controller 4 mit DB jsonl.
Wenn der durch ist, stelle ich nochmal auf Redis um, und wiederhole den Benchmark.
Ergebnisse folgen -
@hydrotec Cool, Danke! Am Ende passen Deine Werte reicht gut zu dmem anderen Ryzen 3400G den wir schonmal im benchmark hatten (https://www.iobroker.net/#de/blog/2021_12_15) ... Ich nehme Deine Zahlen mit auf. Und ja Controller 4 Zahlen sind auch super