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!
Ausführungsgeschwindigkeit auf Servern, allgemein
- 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.
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
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.
Wobei natürlich die Frage ist, was da konkret passiert und ob man das irgendwie schneller hinbekommt.
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.
ü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.