Többszálú program elvi wallclock-time mérése
A cím is elég béna lett, de a felvetés még bénább lesz:
Szóval egy 4 core-os gépen egy többszálú program hatékonyságát szeretném mérni, ha lehet úgy, hogy közben a napi desktop munka mehessen, de olyan időt mérjek, mintha csak a vizsgált progi futna.
Hogy világosabb legyek: az a baj, hogy a szálak néha várnak egymásra, így ha az egyik core-t egy kicsit leterheli mondjuk egy nagyobb weboldal behozása, az ott futó szál lelassul, de ez a szinkronizáció miatt a többit is várakoztatja, így a végső hatás meglehetősen bonyolultan alakul ki.
A cél pedig az lenne, hogy azt mérjem, milyen lenne a futásidő, ha nem zavarnának be a többi processzek, hisz ez méri a vizsgált algoritmus hatékonyságát.
1. megoldás: mindenkit kitiltok a benchmark idejére a gépről és csak a teszt fut. Ez nehezzen oldható meg.
2. megoldás?: Valahogy egy virtuális gépet kreálok, amin csak a mérni kívánt kód fut és ott mérek egy virtuális wallclock time-ot.
Nagy baromság a 2. megoldás ötlete? Az nem baj, hogy a virtualizáció lassít: csak az egyes algoritmusváltozatok egymáshoz képesti viselkedése érdekes, no meg a skálázódása.
Vagy van valami más megoldás?
Előre is kösz!
- Tovább (Többszálú program elvi wallclock-time mérése)
- 777 megtekintés