Csúf viszály kél, ha
változódon megannyi
proci osztozik.
Nemrégiben egy kisebb projekt keretében egy meglévő egyszálú linux kernel modult kellett átalakítani többszálúvá, mert egy szálon már nem tudott megfelelő teljesíményt nyújtani. A jelenlegi állapotban egy 8 processzoros gépen, 8 konkurrens szálon fut nagyjából ugyanaz az adatfeldolgozó rutin. A szálak működését befolyásoló tényezők egy közös memóraiterületen vannak tárolva és akár működés közben is változhatnak. Ezeket sikerült megfelelő read/write spinlockokkal úgy zárolni, hogy a modul teljesítménye az eredeti egyszálas verzió többszörösére nőtt. Ezzel a feladat nagyjából megoldottnak volt tekinthető, ám egy kóbor ötlettől vezérelve kitaláltuk, hogy jó lenne statisztikákat kapni futás közben arról, hogy mennyi és milyen típusú adatot dolgoztunk fel. Mindössze néhány egyszerű számlálóról volt szó, pillanatok alatt kész is lett. Csakhogy döbbenten tapasztaltuk, annyira gyorsan dolgozik a modul, hogy nem győzi számolni az elvégzett munkát.