Ipari zen

Szak-irodalom. A fejlesztő jajszava haikuban. A technika ördöge avagy a lelketlen vasban a mélyen emberi.

A szoftverfejlesztés művészete és a zen


2010.05.28. 22:59 Ipari zen

Ne tégy el befőttet, ha úgyis más zabálja fel

Címkék: cache hit cache flush cache miss per cpu spinlock winpcap

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.

1 komment