Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > pl.comp.os.linux.programowanie > #2252

Re: ::read i ::poll

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar


Thread

::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