🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #72995

Re: ::read i ::poll

#72995
From: heby
Date: Thu, 05 Nov 2020 14:26
32 lines
2804 bytes
On 05/11/2020 13:43, michal.lyszczek@bofc.pl wrote:
> Jak 1 z kolokwium to brzmi "To ogromna aplikacja" ;-)

To raczej problem z okolic "w ksiąze do programowani jest taki przykłąd 
na 3 linijki i działa", a potem masz bazę kodu na ~500MB (nie 
przesadzam) i zastanawiasz się jaki idiota wymyślił globalny handler 
który ma obsługiwać setki równoległych i kompletnie niezależnych części 
tej aplikacji.

> Dodatkowo, zmierzyłeś
> że problem z wydajnością jest spowodowany przez select/poll?

Apliakcja wykonuje miliony ::read( *foo, 4 );. Ogólnie wykonuje bardzo 
dużo małych read na namedpipe, bezustannie komunikujac się z inną 
apliakcją (inny proces). Przypuszczam że każdy ::read to switch 
kontekstu do kernela, albo przynajmniej jakieś cieżkie operacje na 
granicy kernel/user space.

> Jak masz tam
> raptem kilka deskryptorów, to ciężko mi uwierzyć żeby to miało taki narzut
> na wydajność i problem jest zapewne gdzie indziej. To, albo optymalizujesz
> program na siłę.

Nie, zostało to dokładnie rozpracowane. ::read jest znaczaco szybszy niż 
::poll->::read. Nawet w syntetycznym przykładzie da się to zobaczyć.

> Jak bardzo chcesz mieć nieblokujący read(2) oraz nie używać polla to możesz
> zawsze ustawić przy pomocy fcntl(2) ustawić flagę O_NONBLOCK, i przy każdym
> read(2) gdy nie będzie danych dostaniesz zwrotkę -1 oraz errno na EAGAIN.

Jesli teraz zawolam ::read ponownie i tak w kółko to właśnie przerobiłem 
komputer na grzejnik. A jak wstawie usleep... no własnie...
Technical Details
Message-ID: <ro122h$9gj$1@dont-email.me>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.samoylyk.net!aioe.org!eternal-september.org!feeder.eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
References: <rntsee$3b1$1@dont-email.me> <20201105104532.zdht7h4fy4vutyah@marchewa.redembedded.pl> <ro0pai$b5d$1@dont-email.me> <20201105124355.ixk6djsio5dqsuh2@marchewa.redembedded.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.samoylyk.net!aioe.org!eternal-september.org!feeder.eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: heby <heby@poczta.onet.pl>
Newsgroups: pl.comp.os.linux.programowanie
Subject: Re: ::read i ::poll
Date: Thu, 5 Nov 2020 15:26:23 +0100
Organization: A noiseless patient Spider
Lines: 33
Message-ID: <ro122h$9gj$1@dont-email.me>
References: <rntsee$3b1$1@dont-email.me> <20201105104532.zdht7h4fy4vutyah@marchewa.redembedded.pl> <ro0pai$b5d$1@dont-email.me> <20201105124355.ixk6djsio5dqsuh2@marchewa.redembedded.pl>
Mime-Version: 1.0
Injection-Date: Thu, 5 Nov 2020 14:26:25 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="ead3770d27c28f2726beb2f50b568996"; logging-data="9747"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18+twJTenkfU0L7KqxJvR1a"
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.12.1
Cancel-Lock: sha1:AgHwAHhEQ1T4MnNGUYNB25NaQgY=
In-Reply-To: <20201105124355.ixk6djsio5dqsuh2@marchewa.redembedded.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit