Speed-Test 4D Server

Es kommt ab und zu vor, dass man den Eindruck hat, 4D ist “in letzter Zeit” langsam.
Die IT verweist dann auf die Werte des Servers und des Netzes, und alles ist prima.
Bilde ich mir das also nur ein?

In diesem Moment hätte ich gern eine tägliche Speed-Statistik der letzten Wochen/Monate.
Sie sollte möglichst mit 4D-Bordmitteln erfolgen und verschiedene Einflüsse (Netzwerk Client-Server, Schreib-Lese-Geschwindigkeit des Servers etc.) beinhalten.

Bevor ich selbst versuche, sowas zu programmieren (z. B. wieviele Milliseconds ein SAVE RECORD mit einem 1-GB-Blob braucht), wollte ich mal fragen, ob sich schon jemand Gedanken darüber gemacht hat, was man am besten zur Speed-Messung benutzt.

Ich glaube nicht das Sie damit erfolgreich werden. Ich hatte es mal versucht und dann bemerkt das ich eigentlich in die falsche Richtung laufe.

Sie wollen eigentlich zwei Sachen wissen:
läuft meine Anwendung langsamer als sonst?
woran könnte es liegen, was kann ich dem Admin sagen?

Für Aufgabe 1:
Suchen Sie sich eine länger laufende Operation raus, z. b. Jahresbericht oder Verbuchungskontrolle. Etwas was man wiederholt aufrufen darf.
Sollte mindestens 1 Minute laufen, gerne mehr.
Starten Sie diese auf Ihrem Rechner und einem Referenzsystem. Sowohl auf dem Server wie auf dem Client. beim Client einmal WLAN, einmal Kabel.
Das ist jetzt Ihre Referenzzeit.
Ich nehme da manchmal nur die Zeit von der Info-Komponente. Liegt die bei 100 ms, alles gut. Liegt die bei mehreren Sekunden, alles falsch. Ist aber nur ein Anhaltspunkt.

Für Aufgabe 2:
Hier gibt es viele Referenz-Testsysteme. Entwickeln Sie kein eigenes, der Admin glaubt dem eh nicht.
Ob CPU Test, Netzwerk oder Platte, für jedes gibt es Spezialisten.
Gerade bei Platte (insbesondere bei SAN) sind die ziemlich ausgeklügelt.
Es geht ja nicht nur um IOPS, sondern um IOPS unter Last für bestimmte Dateigrößen, sonst testen Sie nur gegen den Cache des Plattensystems.
Das ist ein ziemlich komplexes Thema, es gibt dafür auch Software, ich hatte 2012 dafür auch mal einen Vortrag gehalten: https://kb.4d.com/assetid=76715
Für das verwendete Tool gibt es mittlerweile eine Nachfolger von Microsoft, das Konzept ist aber weiterhin gültig.

Man kann auch alles mit Windows Boardmitteln (zumindest Windows 10 und Server 2016) machen, dazu PowerShell nutzen (ACHTUNG, nicht per Remote Desktop, muss lokal am Rechner erfolgen):
winsat formal

C:\Windows\Performance\WinSAT\DataStore
In Datei Formal.Assessment (Recent).WinSAT.xml
Sind die Scores

Remote geht nur ein Teil, wie:
Nur festplattentest geht mit:
winsat disk -drive g:
winsat cpuformal
winsat memformal

Der Plattentest ist aber ohne Last und nicht für SAN geeignet, für lokale SSD aber ganz gut.

mit 4D Bordmitteln empfehlen wir die Info Report Komponente. In erster Linie für das Speicherverhalten Ihres Servers (genug Cache, Cache läuft voll, …). Das Diagnistoc Log hilft bei Netzwerk-Problemen.

Für Festplatten haben wir mal SQLIO von Microsift verwendet. Heute gibt es glaub ich einen Nachfolger. Aber natürlich gibt es auch andere Werkzeuge. Können Sie nachlesen unter: https://kb.4d.com/assetid=76715.

Viel zum Lesen gibt es auch hier: https://forums.4d.com/Post/EN/24801062/1/24801063#24801063.

Sie schreiben: Es kommt ab und zu vor, dass man den Eindruck hat, 4D ist “in letzter Zeit” langsam.

Das ist kein Eindruck oder ein Gefühl, dass ist einfach so … Mein Projekt beim Kunden ist das tägliche Realität.

4D wird tatsächlich von Build zu Build langsamer. Das hatte ich schon bemängelt von der V12 zur V13 und dann von der V13 zur 14 usw. Dann sagte man beim Wechsel zur 64 Bit…jetzt wird 4D erheblich schneller. Nichts passiert im Gegenteil…

Wenn ich z.B. die V13 ansehe und die als Client starte mit der gleichen Datenmenge dann braucht die V13 bis zur Anzeige 1,75 Sekunden. Das Gleiche Szenarium mit der V17.4. 3,25 Sekunden. Hab hier schon alles getestet und ausprobiert. Im Grunde ist es logisch. 4D wird immer Umfangreicher und größer. 4D muß dann immer mehr laden und speichern. Die Folge…es wird langsamer. Da können sie Testen und machen und alles versuchen. Es wird nicht wirklich schneller werden.

4D ignoriert das einfach und sagt…ja das liegt an ihrer Programmierung und Ihre Komponenten usw.

Hab ich alles schon rausgenommen und getestet. Wenn ich alle Komponenten raus nehme und die meisten Plugins und die Methoden vereinfache…dann kommt trotzdem eine Ladezeit von 3,20 zu vorher 3,25. gemessen mit einem Windows Timer…aber auch “mein Eindruck” und der “Eindruck” meines Kunden ist einfach Realität.

Meine Kunde fragt mich jedes Jahr:…ähh wird nun das Programm ein wenig schneller wenn wir ein großes Update machen. Ich dann immer…na klar so verspricht es 4D auf der Webseite. Danach mein Kunde stets…aber mein Eindruck ist eher das es langsamer wird. 4D sagt dann:…der Eindruck täuscht.
Na was will man da noch sagen?

Ich denke wenn sich in ein paar Jahren ein Goldpartner oder ein Platinum Partner beschwert, dann kommt das ganze in Schwung :slight_smile: bis dahin heißt es abwarten. Sorry ich schreibe eben klar aus was andere nur denken und sich nicht getrauen.

Hallo Armin,

: Armin SLAVIK

Sorry ich schreibe eben klar aus was andere nur denken

das kann ich so nicht bestätigen. Habe gerade eine 21 Jahre alte Anwendung ( über 4D 6.5, 4D 2003, 4D v13) auf jetzt 4D v17 geupgradet.

Wenn alles richtig eingestellt ist (hier reichten manchmal sogar “nur” die Standardeinstellungen von 4D) läuft die 4Dv17 für mich gefühlt 30 % schneller*.

Dieses Verhalten hatte ichi jedem Upgrade, obwohl die Datenmenge über die Jahre erheblich gestiegen ist (200 MB auf 10 GB).

Natürlich hat das mit den SSDs richtig Fahrt aufgenommen. :mrgreen:

Leider musste ich direkt nach der Umstellung (4Dv13 auf 4Dv17) Leistungseinbrüche feststellen und teste rund 1 Woche alle Einstellungen. Ausgebremst wurde 4D schliesslich von einer Festplatte mit hohen Lese- und Schreibzugriffen von anderen Programmen. Da war die Zusammenarbeit mit dem Admin hilfreich (wenn auch nicht üblich).

Besonders erfreut mich das Generieren von PDFs (ca. 18.000 -20.000 pro Lauf). Die 4Dv13 braucht 6 Stunden und die 4Dv17 lediglich 20 Minuten :-o.

Grüsse

Stefan

  • Getestet habe ich mit umfangreichen Berechnungen ( 10-30 Minuten ) mit 3 Tabellen (100.000 bis 300.000 DS). Da war die 4Dv17 erkennbar schneller.

Product :4D - 4D Server
OS : Windows
OS : Mac OS X

: Armin SLAVIK

Sorry ich schreibe eben klar aus was andere nur denken und sich nicht
getrauen.

Hallo Armin,
kann ich in meinem Szenario so auch nicht bestätigen.

Ich nutze Multiprozessing und sehr grafiklastige Oberflächen.
Lediglich WP ist spürbar langsamer als das alte Write

4D 686 habe ich lange benutzt, da die Nachfolger 2003/2004/v11 in der Tat deutlich langsamer waren.
4D v12 war dann der Wendepunkt, spürbar schneller und moderner als die Vorgänger
V13, v14, v15 habe ich ausgelassen.
V16 war wieder schneller als die Vorgänger
v17r6 64 dann nochmals schneller

Der nächste Step ist dann v18r3 wenn Roland seine Tabellenformatierung endlich fertig hat.

: Armin SLAVIK

Im Grunde ist es logisch. 4D wird immer Umfangreicher und größer. 4D
muß dann immer mehr laden und speichern. Die Folge…es wird
langsamer. Da können sie Testen und machen und alles versuchen. Es
wird nicht wirklich schneller werden.

Muss ich auch widersprechen. die 4D Anwendung wird größer, die Libs mehr etc. Das wirkt sich aber nicht beim Doppelklick auf einen Listeneintrag zum Anzeigen des Eingabe Formulars aus.
Evtl. hast Du unglücklich definierte Relationen die geladen werden müssen. Da kann man was umstellen und die Daten anders laden (ORDA oder zur Not auch mit Redundanzen oder anders Indizieren oder die Daten anders aufteilen).

Du kannst auch mal eine Testanwendung mit v13 und v17 bauen und die an den 4D Support senden oder ein CodeKitchen buchen oder jemanden von uns anderen Profi Entwicklern mit der Analyse beauftragen.

Geh mit einem Debug log durch und prüfe was bei dir genau die Verzögerung bringt (Vergleich zwischen v13 und v17) und optimiere die Stellen dann.
Ich hoffe du arbeitest nicht interpretiert sondern kompiliert.

Armin

Hi Armin,

das sind doch mal ein paar gute Infos. Danke dir.

Nun ich habe die Verlangsamung bei der V13 bis V15 extrem gemerkt. Dann kam ja die Umstellung auf die 64 er ein wenig später. Da stellte ich wieder fest, das es langsamer wurde.

Was mir besonders auffiel war der Start der Software…also vom Doppelklick auf das Startsymnol bis zur Benutzeranwendung. Das ist jetzt wirklich enorm langsam geworden…(Vergleich V13 zu V17.4). Natürlich kompiliert.

Du sagst das die größe der Software sich nicht auf den Doppelklick auf einer Liste usw. auswirkt. Das stimmt, aber auf den Start der Anwendung. Zumindest bei mir. Wie ist der Start bei dir?

Grüße

: Armin SLAVIK

Hi Armin,

Du sagst das die größe der Software sich nicht auf den Doppelklick
auf einer Liste usw. auswirkt. Das stimmt, aber auf den Start der
Anwendung. Zumindest bei mir. Wie ist der Start bei dir?

Grüße

Die Startzeiten von v16.6 (32) und v17r6 (64) sind gefühlt identisch. Ca 3 Sekunden vom Start der Einzelplatzversion bis zur Anzeige meines Kennwortdialogs. Win 10 auf MacPro 5.1 aus 2010 6x3.46GHz Samsung 850Evo SSD

Armin

Hi Armin,

genau das meinte ich doch eigentlich. Du schreibst das es gefühlt von der 32 Bit zur 64 Bit identisch ist. Das ist doch was ich sagte.Ich schrieb doch:

Wenn ich z.B. die V13 ansehe und die als Client starte mit der gleichen Datenmenge dann braucht die V13 bis zur Anzeige 1,75 Sekunden. Das Gleiche Szenarium mit der V17.4. 3,25 Sekunden.

Bei der Version 13.0 war es nicht nach Gefühl sondern gemessen 1,75 Sekunden bei der V17.4 3,25. Von der 16.6(32) zur 17r6(64) habe ich eben gemessen. 16.6 hat 3,2 Sekunden und die 17r6 3,25 Sekunden. Gesagt wurde aber das von der 32 er zur 64 er eine erhebliche Steigerung sein sollte. Das ist es z.B. beim Start des Programmes nicht, im Gegenteil.

Grüße

: Armin DEEG

Ca 3 Sekunden bis zur Anzeige meines Kennwortdialogs.

Bei uns übrigens 12 Sekunden (4Dv17 Client-Server Win10).
Man startet 4D, und es passiert nichts.
Man denkt dann, man hat nicht “getroffen” und versucht es erneut.
(Mittlerweile nicht mehr, denn man weiß ja, dass es lange dauert.)

Und dann irgendwann erscheint 4D in der Taskleiste.
Interessanterweise haben sich die User noch nicht beschwert.

Hi,

: Armin SLAVIK

Wenn ich z.B. die V13 ansehe und die als Client starte mit der
gleichen Datenmenge dann braucht die V13 bis zur Anzeige 1,75
Sekunden. Das Gleiche Szenarium mit der V17.4. 3,25 Sekunden.

gerade getestet:

Anwendung (interpretiert) und Daten sind für 4Dv13.6 und 4Dv17r6 gleich, beide 4D Server laufen auf der gleichen Windows 2016 Maschine (VM). Der Zugriff erfolgt von einem MacMini.

Doppelklick auf Listbox öffnet ein 12 seitiges Layout mit Laden des Einzeldatensatzes und 3 Relationen. Der Code ist Spaghetti (10 Jahre “gewuchert”) und nicht optimiert (ORDA).

-> 4Dv13 braucht 3-4 Sekunden
-> 4Dv17 braucht 1 Sekunde und weniger

Ich hatte das schon kompiliert getestet, da war es unter 0,5 Sekunden.

Der 4Dv17 Server hat die 4D Standardeinstellungen (Speicher & CPU-Priorität (4Dv13 - entfällt ja bei v17)).

Grüsse

Stefan

: Armin SLAVIK

Hi Armin,

genau das meinte ich doch eigentlich. Du schreibst das es gefühlt von
der 32 Bit zur 64 Bit identisch ist. Das ist doch was ich sagte.Ich
schrieb doch:

Wenn ich z.B. die V13 ansehe und die als Client starte mit der
gleichen Datenmenge dann braucht die V13 bis zur Anzeige 1,75
Sekunden. Das Gleiche Szenarium mit der V17.4. 3,25 Sekunden.

Bei der Version 13.0 war es nicht nach Gefühl sondern gemessen 1,75
Sekunden bei der V17.4 3,25. Von der 16.6(32) zur 17r6(64) habe ich
eben gemessen. 16.6 hat 3,2 Sekunden und die 17r6 3,25 Sekunden.
Gesagt wurde aber das von der 32 er zur 64 er eine erhebliche
Steigerung sein sollte. Das ist es z.B. beim Start des Programmes
nicht, im Gegenteil.

Grüße

Armin,

du musst das differenzieren.

Die App ist größer geworden, weil mehr Libs geladen werden müssen. Dafür ist die gleiche Startzeit doch gut. Schneller sind Maskenaufbau und andere interne Operationen, so dass sich die App mit 64 Bit nun deutlich schneller anfühlt.

Das aber auch nur bei neuer Hardware. Auf alter Hardware kann es sogar langsamer sein.

Neue Hardware meine ich ich mit aktueller Grafik und CPU. Die meisten PCs verwenden onboard GPU, so gibt es den Performancesprung erst ab Intel iX-7xxx oder neuer.

Aber selbst auf meinem betagten MacPro habe ich eine spürbare Beschleunigung bemerkt, hat allerdings auch eine etwas neuere ATI 7970 drin.

Armin

: Joerg BUCHWITZ
: Armin DEEG

Ca 3 Sekunden bis zur Anzeige meines Kennwortdialogs.

Bei uns übrigens 12 Sekunden (4Dv17 Client-Server Win10).
Man startet 4D, und es passiert nichts.
Man denkt dann, man hat nicht “getroffen” und versucht es erneut.
(Mittlerweile nicht mehr, denn man weiß ja, dass es lange dauert.)

Und dann irgendwann erscheint 4D in der Taskleiste.
Interessanterweise haben sich die User noch nicht beschwert.

V17r6 Client kompiliert, bis zur Anzeige des Kennwortdialogs knapp unter 2 Sekunden.
Gigabit Netzwerk, kein 100MBit

v17r6 hat m.E. neuere Libs als v17.x bei der noch viel 32Bit Kram mitgeschleppt wird.

Also ein echter Vergleich ist nur mit der v17r6 oder v18 gegenüber älteren Versionen möglich.
Die neueren APIs etc. werden überwiegend nur noch in 64 Bit gebaut, die alten 32/64 Bit APIs haben nicht die neuesten Fassungen und schleppen alten Kompatibilitätsballast mit.

Armin

Hallo Joerg,

ui 12 Sekunden ist echt lang. Was für ein System und was für eine Version?
Bei 12 Sekunden würden meine Kunden weg laufen. :slight_smile:

Grüße

Hi Stephan,

es war der Start der Anwendung gemeint…

Grüße

: Armin SLAVIK

ui 12 Sekunden ist echt lang. Was für ein System und was für eine
Version?

Datenbank: 4Dv17.1 Win 64 (Struktur 280 MB, kompiliert 160 MB, Daten 29 GB, Index 8 GB)
Client: i7-3770 @ 3.4GHz mit 12 GB RAM und SSD, Windows 10
Server: Xeon Gold 6132 @ 2.6GHz mit 24 GB RAM und SSD-Raid, Windows Server 2019

So, es ist Freitag …

Also, der echte Power-User startet seine Power-Anwendung höchstens einmal die Woche. Und ist verärgert, wenn irgendwelche lästigen Betriebssystem-Updates dazwischen funken. Dann sind 3 Sekunden oder 12 Sekunden pro Woche (604800 Sekunden) nicht der Rede wert.

Und wenn wir schon einmal dabei sind, neulich war ich mal bei einem Wochenlehrgang, es ging um Web-Programmierung und ich habe ganz schamlos den 4D-Webserver auf dem Notebook benutzt. Am Abend (vor dem gemeinsamen Biertrinken) Notebook zugeklappt, im Hotelzimmer geparkt und am Morgen aufgeklappt und weiter ging es. Kein Neustart oder ähnliches nötig.

Wer Software nach der Startzeit bewertet, naja. Ist höchstens beim Vertrieb und bei der Vorführung von Demos hinderlich.

Wichtig ist die gefühlte und tatsächliche Performance bei der Nutzung,
… muss ich ewig warten, bis eine Suchanfrage mit Ergebnissen antwortet.
… Habe ich vergessen, genügend User-Entertainment einzubauen bei der Abfrage externer Systeme
… reagiert gar die Anwendung auf jeden Klick und Tastenhieb mit Verzögerung (das war mal bei den ersten Java-Anwendungen bzw. -Applets in den 90ern gang und gäbe)
… usw. usf.

Und noch etwas anekdotisches …
Wer auf seinem Rechner ein etwas betagtes und ewig nicht neu aufgesetztes Windows-System betreibt und dann doch ab und zu gezwungen wird, einen Reboot durchzuführen (wg. Updates, s.o.), kann schon mal ein ausgiebiges Frühstück (Kaffee trinken allein reicht nicht) einplanen, bis alles durch ist.

Grundsätzlich kann ich keine Performance-Verschlechterungen über die 4D-Versionen der letzten Jahre feststellen. Im Gegenteil, wir haben mit der Umstellung einiger Abfragen an die Datenbank auf ORDA richtige Performanceboosts feststellen können, teilweise um den Faktor 10.
Aber das zeigt wieder, dass gewöhnlicherweise der eigene Code und die Umsetzung abgefahrener Kundenanforderung (und es muss am besten gestern fertig sein) einer guten Performance oft im Wege stehen. Da heißt es, aufpassen und nicht den beguemsten Weg gehen.
Und falls doch der Fall eintritt, dass irgendetwas langsam ist … messen.
“Premature optimization is the root of all evil”
Nur dort, wo wirklich das Problem auftritt, kann es auch gefixt werden.

So, genug der Allgemeinplätze, ich wünsche allen ein schönes Wochenende

Viele Grüße
Lutz Epperlein

P.S. Werde meinen Rechner ausnahmsweise heute mal herunterfahren …

: Joerg BUCHWITZ
: Armin SLAVIK

ui 12 Sekunden ist echt lang. Was für ein System und was für eine
Version?
Datenbank: 4Dv17.1 Win 64
Client: i7-3770 @ 3.4GHz

Hallo Jörg,

wie von mir geschrieben, v17r6 bringt mehr Speed und deine CPU ist von 2012, ebenso die integrierte GPU.

Stell das mal Testweise auf v17r6 um und verwende einen core ix-8xxx also ab der 8en Generation.
Die v17.1 hat alten Ballast und ist nicht so API optimiert wie die v17r6.

Da sollten die Zeiten deutlich zurückgehen, sofern dann auch ein schnelles Netzwerk verwendet wird.

Schon die v16 wurde bei mir auf älteren CPU/GPU langsamer als die v12 und auf aktuellen eben schneller.

Armin

Hi Armin,

natürlich differenziere ich das. Es stimmt das wenn die Datenbank geöfnet wurde und läuft einige Dinge schneller sind.
Mein Kunde ist ein Institut und dort im Labor ist es eben so das von 10 Rechnern eben 5 schon 4 Jahre oder älter sind. Die bekommen oft nur alle 5 Jahre Gelder genehmigt für die Hardware.

Grüße

: Armin SLAVIK

Hi Armin,

natürlich differenziere ich das. Es stimmt das wenn die Datenbank
geöfnet wurde und läuft einige Dinge schneller sind.
Mein Kunde ist ein Institut und dort im Labor ist es eben so das von
10 Rechnern eben 5 schon 4 Jahre oder älter sind. Die bekommen oft
nur alle 5 Jahre Gelder genehmigt für die Hardware.

Grüße

Das liegt dann aber nicht an 4D, meist haben die alten Rechner auch noch rotierende HDs und keine SSDs