Ausführungsgeschwindigkeit auf Servern, allgemein

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Hase
User
Beiträge: 100
Registriert: Donnerstag 1. Oktober 2009, 15:17
Wohnort: Bremer Speckgürtel

Hallo,
meine Frage hat nicht unbedingt mit Python zu tun. Ich habe ein Programm, dass automatisch Berichte erstellt, doch relativ komplexe Berichte. Gesteuert wird das ganze mit Python/Flask. Folgende externe Programme/Abfragen werden seriell gemacht: Sql-Abfrage, MetaPost, LaTeX, MetaPost, LaTeX, LaTeX, LaTeX, pdftk pdftk, pdftk (so ungefähr jedenfalls, ist nicht jedes mal gleich).

Das ganze dauert auf meinem Laptop (Ubuntu, 16 GB, core i7, SSD) etwa 2,5 - 3 Sekunden.

Wenn ich das bei meinen Kollegen auf dem großen Server mache (UbuntuServer als VM auf einem Windows2016-Server, 4GB RAM für die VM, SSD, Xeon Silver 4110, 8 Kerne für die VM) dauert der gleiche Vorgang etwa 16 Sekunden (gut, 1-2 sek. dürften noch für die VPN-Verbindung drauf gehen). Dennoch liegen da ja Welten dazwischen. Auf der VM läuft nur mein Programm, keine anderen Anwendungen.

Selbst wenn ich das auf meinem alten Server mache (Debian, 4 GB RAM, i3, mechanische Festplatte) bin ich auch nur bei 4-5 Sekunden.

Warum dauert das auf dem großen Server so elend lange?
Ich habe Zeitmessungen gemacht. Da gibt es keinen Flaschenhals, die Langsamheit verteilt sich gleichmäßig über den gesamten Stack.

Ist das die VM? Wäre es besser, alles direkt auf dem Windows-Server laufen zu lassen? Fehlt RAM? Oder ist der Xeon mit seien 2,2 GHz einfach eine lahme Krücke?

Grüße und bleibt gesund!
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

Ja, der Xeon ist eine lahme Krücke.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1017
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Beim Xenon muss man auch darauf achten, welche Generation das ist.
Die CPU hat gerade mal 2.1 GHz, dafür aber 8 Kerne, 16 Threads.

Vermutlich ist der i7 eine neuere Generation als der Xenon und hat sicherlich eine höhere Taktfrequenz.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Wobei die 8 Kerne nur wirklich helfen, wenn das Programm daraus auch Vorteile zieht.
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

Metapost habe ich im letzten Jahrtausend benutzt. Von den 16 Kernen werden sich 15 langweilen. Zumindest die drei LaTeX-Aufrufe und pdftk-Aufrufe wird man parallel laufen lassen können.
Wobei natürlich die Frage ist, was da konkret passiert und ob man das irgendwie schneller hinbekommt.
Hase
User
Beiträge: 100
Registriert: Donnerstag 1. Oktober 2009, 15:17
Wohnort: Bremer Speckgürtel

Vielen Dank erst mal,

über Parallelisierung der LaTeX-Aufrufe habe ich mir noch keine Gedanken gemacht, warum auch, bei 2,5 Sekunden Laufzeit. Aber jetzt ist halt eine neue Situation.

Zu Metapost: Das Programm, von dem hier die Rede ist, ist über 10 Jahre alt. Ich aktualisiere es gerade von Python2.4/CGI auf Python3.x/Flask. Das ist schon genug Arbeit. Die gut funktionierenden Grafikroutinen fasse ich da gar nicht an. Was wäre die Alternative?

Immerhin lebt MetaPost in ConTeXt weiter, aber irgendwie scheint sich das nicht durchzusetzen. Dabei wäre es m.E. wirklich mal Zeit, den alten Zopf LaTeX abzuschneiden. Es gibt da mittlerweile so viele teils konkurrierende Pakete für alles mögliche, dass man da kaum noch durchsehen kann, und vieles davon ist wirklich gefrickel, einem Programm aus 1980 doch noch irgend wie moderne Methoden beizubringen.

I.H.
Hase
User
Beiträge: 100
Registriert: Donnerstag 1. Oktober 2009, 15:17
Wohnort: Bremer Speckgürtel

Hallo, noch mal eine Statusmeldung:

Ich habe die LaTeX-Aufrufe in Threads gepackt und so die Laufzeit von 16 auf 4,5 Sekunden verringert. Danke für den Tip!
Antworten