Article View: pl.comp.os.linux.programowanie
Article #72995Re: ::read i ::poll
From: heby
Date: Thu, 05 Nov 2020 14:26
Date: Thu, 05 Nov 2020 14:26
32 lines
2804 bytes
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-mailReferences:
<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