Groups | Search | Server Info | Keyboard shortcuts | Login | Register
Groups > pl.comp.os.linux.programowanie > #2252
| From | heby <heby@poczta.onet.pl> |
|---|---|
| Newsgroups | pl.comp.os.linux.programowanie |
| Subject | Re: ::read i ::poll |
| Date | 2020-11-05 15:26 +0100 |
| Organization | A noiseless patient Spider |
| Message-ID | <ro122h$9gj$1@dont-email.me> (permalink) |
| References | <rntsee$3b1$1@dont-email.me> <20201105104532.zdht7h4fy4vutyah@marchewa.redembedded.pl> <ro0pai$b5d$1@dont-email.me> <20201105124355.ixk6djsio5dqsuh2@marchewa.redembedded.pl> |
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...
Back to pl.comp.os.linux.programowanie | Previous | Next — Previous in thread | Next in thread | Find similar
::read i ::poll heby <heby@poczta.onet.pl> - 2020-11-04 10:31 +0100
Re: ::read i ::poll michal.lyszczek@bofc.pl - 2020-11-05 11:45 +0100
Re: ::read i ::poll heby <heby@poczta.onet.pl> - 2020-11-05 12:57 +0100
Re: ::read i ::poll michal.lyszczek@bofc.pl - 2020-11-05 13:43 +0100
Re: ::read i ::poll heby <heby@poczta.onet.pl> - 2020-11-05 15:26 +0100
Re: ::read i ::poll michal.lyszczek@bofc.pl - 2020-11-05 16:01 +0100
Re: ::read i ::poll heby <heby@poczta.onet.pl> - 2020-11-05 19:16 +0100
csiph-web