Komunikace mezi pthread vlakny
Stanislav Meduna
stano-cznews na meduna.org
Neděle Duben 6 18:19:17 CEST 2003
On Sun, 6 Apr 2003 14:13:01 +0000 (UTC), Pavel Kankovsky wrote:
: To leda pokud writer provadi aktivni cekani. Pokud visi v select(),
: poll() (a ceka na zapisovatelnost), nebo primo ve write(), tak jaksi
: schazi duvod provadet context switche.
Writer nemoze pokracovat, tak sa zobudi reader. Precita tych desat
bajtov co mu tam writer poslal a odvisne v selecte sam. No a v tom
momente moze zase ist writer. Ked som to pred tymi 3 rokmi
skusal, PPro 166 MHz mi spravil 75000 context switchov
(podla /proc/stat) za sekundu s pomerom user-system time 20:80.
To je sice impozantne cislo (windoze zvladli daleko menej), ale
vtedy ma nejak nepotesilo :-) Ked som zbastlil patch,
ktory si pre pipu naalokoval dvojnasobok PIPE_BUF, to cislo
islo okamzite o rad dole.
Na ten problem som vtedy narazil s realnou aplikaciou - sice
pri zatazovom teste, ale nebol to len umelo vyfabrikovany kod.
Andi Kleen mi na to napisal:
Programs that really need the bandwidth don't use pipes. Page
switching is relatively costly, especially on SMP. Clean POSIX
shm support would be probably better.
Co ma zrejme pravdu...
: Vypada, ze zde je (a nebo aspon nekdy v historii Linuxu byl) jisty problem
: spis v implementaci select()/poll() (a vlastne i write() na rouru), ktera
: vesele budila cekajici procesy, bez ohledu na to, na co cekaji
Hej, to mi tiez nieco hovori.
Zdravi
--
Stano
Další informace o konferenci Linux