En lärdom jag har haft med mig är att om man har med mycket IO att göra så lönar det sig inte att parallellisera mer än vad IO-kanalen orkar med, det blir bara en negativ utveckling med ökande latense r från operativet. Visst kan man gödsla med pengar på hårdvara för sådant, men det är oftast ekonomiskt ohållbart.
Samma lärdom, mycket svårt att parallellisera så det görs inte alls med IO då det blir en flaskhals.
Om du gett en utvecklare en uppgift att göra en fil-lösning och hen hanterar filen helt i minnet så har du inte berättat tillräckligt för att hen skall lyckas med sitt uppdrag sett vad projektet kräver. Hen har gjort sitt jobb och löst problemet på bästa sätt enligt de premisser hen blivit presenterad. Exakt det som framkommit i denna tråd. Det är dåligt ledarskap och leder bara till misslyckade projekt som vi så ofta läser om i etermedia.
Visserligen så säger man inte bara fil-lösning men jag skulle allt fråga hur vederbörande tänkte om lösningen är hanterad i minnet. I aktuellt fall är det ändå tydligt att det handlar om flera filer (till och med). Skulle programmet krascha och filen därför går sönder.
Det fungerar inte för mig i alla fall om någon hade löst det på det viset.
Möjligen acceptabelt om det handlar om konsultjobb och konsulten säger att hanteringen med att hela tiden synka med disk är dyrare för det tar längre tid och därför valt minnet. Fast även då blir det en diskussion för quick and dirty = dyrt. Halvfärdiga lösningar är ingen hitt.
Jag kan inte se hur det skulle vara ok med minneshantering för filer.
Utöver kvarvarande okända parameter som du ännu inte berätta om så blir jag osäker på hur filerna används? Är det indata till körningen som är 100 GB och det reducerade slutresultatet som lagras i "arkivet". Eller pratar vi om okända indata som resulterar i arkiverade filer om 100 GB ? Körtiden per 100 GB vore intressant att veta. Någon typ av benchmark eller löpande tidsloggning har ni väl ändå i er verksamhet? Sådana prestandasiffror i driften tar ju en promilles promille att ta fram löpande och borde sparas med resultatfilen.
Simuleringsdata, det är data från simuleringar som sedan används för att beräkna och dra slutsatser från. Simuleringar kan ställas in så de är mer eller mindre exakta och vad som avgör där är hur mycket data man mäktar med och kostnader för datorer.
EDIT: I mitt mindset så tänker jag mig att vi på något sätt gör beräkningar på de inblandade filerna, men det kanske bara handlar om att skyffla data från en punkt till en annan?
Det är en process i flera steg för att få ut något vettigt. Och det komprimeras i varje steg. De första data som genereras är mer för backup tills man få fram slutliga siffror och eventuellt en låtit det gå en tid.