Ik wilde de snelheid van een Raspberry Pi 4B testen, door over een bestand van 9 GB (dit past dus niet in z'n geheugen) de MD5 waarde te berekenen.
Ik heb 3 commando's uitgevoerd:
Voor wie het niet kent: pv is "pipeviewer" en dit toont een fancy voortgangsbalkje voor een pipe.
Toelichting:
Als ik met htop meekijk, dan zie ik dat mijn commando's blijkbaar allemaal single-core processen zijn en dat er voor de pipes 2 cores actief zijn.
Als alleen md5sum draait, dan heeft de core ongeveer 100% CPU belasting.
Als pv en md5sum draaien, dan hebben de cores 40% cq 100% CPU belasting.
Als cat en md5sum draaien, dan hebben de cores 70% cq 85% CPU belasting.
Al met al zijn de doorlooptijden: 60 seconden, 54 seconden, 59 seconden.
Hoe kan het dat de berekening sneller wordt door de data via een pipe en via pv te laten lopen en op welk woord moet je googelen om meer over dit fenomeen te lezen?
Ik heb 3 commando's uitgevoerd:
- time md5sum bestand.mkv
- time pv bestand.mkv | md5sum
- time cat bestand.mkv | md5sum
Voor wie het niet kent: pv is "pipeviewer" en dit toont een fancy voortgangsbalkje voor een pipe.
spoiler: Het antwoord
de variant met pv is het snelst
Toelichting:
Als ik met htop meekijk, dan zie ik dat mijn commando's blijkbaar allemaal single-core processen zijn en dat er voor de pipes 2 cores actief zijn.
Als alleen md5sum draait, dan heeft de core ongeveer 100% CPU belasting.
Als pv en md5sum draaien, dan hebben de cores 40% cq 100% CPU belasting.
Als cat en md5sum draaien, dan hebben de cores 70% cq 85% CPU belasting.
Al met al zijn de doorlooptijden: 60 seconden, 54 seconden, 59 seconden.
Hoe kan het dat de berekening sneller wordt door de data via een pipe en via pv te laten lopen en op welk woord moet je googelen om meer over dit fenomeen te lezen?
„Ik kan ook ICT, want heel moeilijk is dit niet”