A Spare Cores oldallal arra vállalkoztunk, hogy összegyűjtjük a nagyobb felhőszolgáltatók "compute" kínálatát, begyűjtünk és rendszerezünk róluk minden adatot, benchmarkokat futtatunk a gépeken, majd mindezt strukturált formában elérhetővé és összehasonlíthatóvá tesszük.
Az egyik mért adat a memóriasávszélesség, amelyre eredetileg az lmbench bw_mem programját használtuk, de a nagyobb, mélyebb memóriahierarchiával rendelkező gépek miatt úgy gondoltuk, hogy megpróbálkozunk egy saját implementációval, amely talán jobban támogatja ezeket a gépeket, illetve a mérési környezetünket.
Ennek eredménye lett az sc-membench, amely az alábbiakat tudja:
- Több platform támogatás – x86 és ARM64-on tesztelve (teljes támogatás Linuxon elérhető, de némi effort került abba is, hogy más OS-en is leforduljon :D)
- Több memória-művelet – külön-külön méri az olvasási, írási és másolási sávszélességet, valamint a memória-késleltetést
- OpenMP párhuzamosítás – multithread működés
- NUMA-támogatás – felismeri a NUMA-topológiát, és a memória/CPU kiosztást ahhoz igazítja
- Huge Pages támogatás – a késleltetés mérésénél nagyobb puffereknél jelentős lehet a TLB miss miatti veszteség, így -támogatott környezetben- ezeknél nagyobb lapokat használ a program
- Cache-érzékeny tesztméretek – a mérési méretek dinamikusan igazodnak a gépben lévő L1/L2/L3 cache-méretekhez, így jobban láthatóvá válnak a cache-határok
- Késleltetés-mérés – pointer-chasing technikával méri a késleltetést, amellyel megpróbáljuk kiküszöbölni a prefetch hatásait (valódi random access)
- Statisztikai adatok – medián és szórás a késleltetésmérésekhez
- CSV kimenet – könnyen feldolgozható, géppel olvasható formátum
Kipróbálni a README-ben leírtak szerint lehet, a legegyszerűbb módon konténerben, pld:
docker run --rm --privileged ghcr.io/sparecores/membench:main -H
A weblapon a mérési eredmények grafikus formában is megtekinthetők (jelenleg még a bw_mem mérései alapján, a gépek újbóli mérése még folyamatban van), illetve a keresőben az egyes benchmarkok pontszámaira lehet rendezni a találati listát.