IRC Logs for #zfx


2022-06-07

05:35:28 Schrompf joined the channel
05:46:52 Schrompf: Knöft, hochverehrte Brönner
05:47:07 Schrompf: Stammtisch hab ich eigenverantwortlich auf nächste Woche gelegt
06:34:45 xq: moin moin
06:58:35 IceMichael: moin
06:59:40 Schrompf: moin
07:02:05 xq: na, wie gehts euch?
07:03:39 Schrompf: ok
07:04:04 Schrompf: hab Horizon Zero Dawn durchgespielt und bin danach ins "Schade, dass es vorbei ist"-Loch gefallen
07:05:35 Schrompf: und ich hab auf arbeit ein knuffiges konzept für eins unserer performance-probleme entwickelt und in eine mit billigen witzen garnierte präsentation gegossen, die anschaulich genug war, dass die PM-damen sich bedankt haben
07:07:34 xq: du kannst doch einfach mit Forbidden West weiterspielen *Grin*
07:07:46 Schrompf: gibt's noch nciht für PC
07:07:49 xq: Schrompf: nice at presentation
07:08:11 Schrompf: ich hol mir noch nen kaffee und dann erzähl ich dir davon, egal ob du willst oder nicht
07:15:38 joeydee joined the channel
07:20:10 joeydee: moin
07:34:27 Schrompf: hi
07:35:40 Schrompf: nun ist auch bald daily, hab ich gar keine zeit zum erzählen
07:35:43 Schrompf: aber ich probiers
07:35:46 xq: :(
07:36:06 Schrompf: wir haben reiseveranstalter. die liefern daten in so nem standardisierten format
07:36:40 Schrompf: das format hat sogenannte PriceItems, also entweder "+10€" oder "-20%" oder "runde ab auf ganze zehntel"
07:36:57 Schrompf: und die können sich noch gegenseitig ausschalten oder gegenseitig rabattieren und so
07:37:03 Schrompf: komplexe interaktionen
07:37:09 Schrompf: und die haben bedingungen
07:37:58 Schrompf: sowas wie "-10% auf alle PriceItems der Klassen ABC, DEF oder FGH, falls Anzahl der Reisenden > 1 und es die zweite Person ist und die über 65 ist und an Mo, Mi und Fr"
07:38:12 Schrompf: und das nennst du dann "seniorenfrühstück"
07:38:20 Schrompf: you get the point
07:42:06 Schrompf: um diese regeln möglichst schnell auszuführen, generieren wir C++-Code daraus und kompilieren den in eine Reihe DLLs
07:43:24 Schrompf: die regeln werden noch nach identischem inhalt kombiniert und beim import bereits statische terme rausoptimiert
07:44:14 Schrompf: übrig bleiben beim bisher größten VA knapp 7 millionen kleine funktionen, die zu ein paar dutzend SOs mit insgesamt ~2GB kompilieren
07:45:00 Schrompf: der build davon dauert übrigens etwa 1h auf 256 kernen
07:45:34 Schrompf: wir haben zugunsten der runtime einiges an parametern in template-args rausgezogen, das hat echt schmerzhaft die compile time verlängert.
07:46:07 Schrompf: moment, daily, ich mach nachher weiter
08:13:12 Schrompf: so
08:14:14 Schrompf: auftritt neue veranstalter-gruppe. sie nehmen nen neuen dienstleister, um die daten zu produzieren, oder machen es selbst, keine ahnung
08:22:03 xq:
08:33:12 Schrompf: re
08:33:36 Schrompf: die daten von dieser veranstaltergruppe sind jedenfalls anders
08:34:06 Schrompf: die haben anscheinend intern ein komplexes formelwerk für ihre preise. und dieses formelwerk haben sie nicht abbilden können oder wollen im standard
08:35:29 Schrompf: also haben sie es ausmultipliziert. und da das format keine tabellen ermöglicht, haben sie für jede tabellenzelle ein priceitem beigelegt
08:35:38 Schrompf: im durchschnitt 130k pro hotel.
08:36:31 Schrompf: eins lautet dann 1831,73€ unter der bedingung, das "checkin am 23.6.2022 für 3 tage im zimmer ABC mit Verpflegung F und belegung 1 erwachsener, 0 kinder"
08:37:00 Schrompf: und das nächste lautet 1735,45€ unter der bedingung, das "checkin am 24.6.2022 für 3 tage im zimmer ABC mit Verpflegung F und belegung 1 erwachsener, 0 kinder"
08:37:24 Schrompf: mit nem hirn, was mathe abschätzen kann, sieht man da schnell, dass die anzahl permutationen EXPLODIERT
08:37:32 Schrompf: mit 130k haben wir da wahrscheinlich sogar noch glück
08:37:55 xq: ooof
08:38:28 Schrompf: und wir importieren das artig - braucht halt ein paar sekunden länger - generieren den regelcode - braucht 10min länger wegen schreiben auf festplatte - und kompilieren dann diese regeln - braucht bis zu 6h
08:39:09 Schrompf: die engine, die mit diesem image dann startet und die ganzen regel-SOs liest, braucht 10min zum starten. weil's irgendwie 20GB an SOs sind
08:39:09 xq: aua
08:40:45 Schrompf: nach 90s kommt einer unserer monitoring-checks und warnt, dass der start gescheitert ist :-)
08:41:11 Schrompf: das kann jedenfalls so nicht bleiben
08:41:49 Schrompf: was also tun? konzeptticket "gedanken machen, brainstormen mit kollegen, dann konzept präsentieren und tickets schreiben", das machen wir bei uns so. ich hab das ticket gewollt und bekommen
08:42:16 Schrompf: und die idee, die ich schon lange mit mir rumtrug, war: alle beweglichen teile in ne parameter-struktur rausziehen
08:43:40 Schrompf: also anstatt "checkin_date_is(0x2022'05'23)" (gekürzte darstellung) steht dann da "checkin_date_is(args_for_this_specific_rule_structure.checkin_date_term_0.date)"
08:43:58 xq: also code reuse :)
08:44:01 Schrompf: ich kneife also die augen zusammen und gruppe regeln nur nach ihrer grundstruktur, ihrem "skelett"
08:44:39 Schrompf: und generiere zur importzeit jeweils eine struktur in einen header. und dann kann ich die konkrete rule_args-Instanz beim regelaufruf reinreichen und aus vielen regeln wird eine mit parametern
08:45:04 Schrompf: ist evtl. bissl langsamer als compile-time-konstanten, aber evtl. macht's auch gar keinen unterschied. werden wir merken
08:46:06 xq: dürfte schneller werden :D
08:46:13 xq: weil der code cache besser benutzt wird
08:46:20 Schrompf: den "gruppieren anhand skelett"-teil hab ich als ProofOfConcept mal implementiert und einfach nur in die Import-Stats geschrieben "wir haben X regeln und könnten die auf Y skelette eindampfen und Z unikate"
08:46:49 Schrompf: beim problem-Veranstalter hat das aus 45 Mio Regeln 700 gemacht
08:47:07 Schrompf: (hat 10s gerechnet, allerdings noch singlethreaded)
08:47:45 Schrompf: würde uns auch bei allen bestehenden veranstaltern helfen, da aber weniger drastisch. macht aber überall aus ein paar 100k oder paar millionen regeln ein paar tausend
08:47:48 xq: well
08:47:59 xq: das dürfte nen massiven unterschied geben ^^
08:48:09 xq: vorallem geht deine compilezeit auch massiv runter
08:48:16 Schrompf: jau. damit dürften wir immer unter ner minute bleiben, egal wie groß die daten sind
08:48:24 Schrompf: also rule build time
08:49:04 Schrompf: beim import zahlen wir dann halt drauf, aber ich vermute mal "weniger als eine minute und bestenfalls ein paar GB zusätzlich im Image"
08:49:50 Schrompf: und ich muss dann das alignment von struct members im importer nachbauen :-)
08:50:23 Schrompf: weil: wenn ich ne struct Rule_Args_219 in den Header generiere, dann sollte das Memory Layout davon dann auch so im Image stehen
08:54:15 Schrompf: ich liebe diesen job
08:54:17 Schrompf: manchmal
08:54:30 Schrompf: und dabei hab ich morgen/übermorgen zwei initiale bewerbungsgespräche
08:55:31 Schrompf: einmal bei ner autonome-vermessungsdrohnen-firma - erstmal nur mitm kopfjäger- und einmal bei ner lokalen industrieroboter-mittels-maschinenlernen-firma, wo ich morgen mal für ein erstgespräch hinradel
08:55:50 xq: oha, nice
08:55:50 Schrompf: aber die müssten schon das blaue vom himmel und massiv mehr geld bieten, damit ich das hier ziehen lasse
09:09:37 joeydee: Dann mal viel Glück, in allen Dingen :)
09:18:18 Schrompf: Danke :-)
13:39:24 Schrompf joined the channel