Article View: pl.comp.os.linux.programowanie
Article #72996Re: ::read i ::poll
From: michal.lyszczek
Date: Thu, 05 Nov 2020 15:01
Date: Thu, 05 Nov 2020 15:01
29 lines
2611 bytes
2611 bytes
On 2020-11-05 15:26:23, heby wrote: > On 05/11/2020 13:43, michal.lyszczek@bofc.pl wrote: > > 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. I to jest twój główny problem. Wołanie ciągle read(2) z tak małym parametrem count rozwala ci całkowicie wydajność. Jak sam piszesz, każdy read(2) to przejście do kernela, a to jest bardzo droga operacja, zwłaszcza jak robisz "miliony" tego. Moja propozycja rozwiązania jak wcześniej. Niech 1 wątek czyta ciągle w pętli deskryptor, z dużym rozmiarem (jak 10kB), jak będzie mniej danych niż 10kB to read(2) wyjdzie i zwróci liczbę odczytanych bajtów. Te dane wrzucaj na kolejkę synchronizowaną i niech sobie reszta wątków czyta to nawet i po 1 bajcie. Wołanie funkcji jest kilka rzędów wielkości szybsze niż wołanie syscalla. -- .-----------------.-------------------.---------------------.------------------. | Michal Lyszczek | Embedded C, Linux | Company Address | .-. open source | | +48 727 564 419 | Software Engineer | Leszczynskiego 4/29 | oo| supporter | | https://bofc.pl `----.--------------: 50-078 Wroclaw, Pol | /`'\ & | | GPG FF1EBFE7E3A974B1 | Bits of Code | NIP: 813 349 58 78 |(\_;/) programer | `----------------------^--------------^---------------------^------------------'
Technical Details
Message-ID:
<20201105150117.satsi3mksuslsmjg@marchewa.redembedded.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!news2.arglkargh.de!news.mixmin.net!aioe.org!.POSTED.Dv7bhxWG68Wvha0HTDCvvg.user.gioia.aioe.org!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> <ro122h$9gj$1@dont-email.me>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!news2.arglkargh.de!news.mixmin.net!aioe.org!.POSTED.Dv7bhxWG68Wvha0HTDCvvg.user.gioia.aioe.org!not-for-mail From: michal.lyszczek@bofc.pl Newsgroups: pl.comp.os.linux.programowanie Subject: Re: ::read i ::poll Date: Thu, 5 Nov 2020 16:01:17 +0100 Organization: Aioe.org NNTP Server Lines: 71 Message-ID: <20201105150117.satsi3mksuslsmjg@marchewa.redembedded.pl> References: <rntsee$3b1$1@dont-email.me> <20201105104532.zdht7h4fy4vutyah@marchewa.redembedded.pl> <ro0pai$b5d$1@dont-email.me> <20201105124355.ixk6djsio5dqsuh2@marchewa.redembedded.pl> <ro122h$9gj$1@dont-email.me> NNTP-Posting-Host: Dv7bhxWG68Wvha0HTDCvvg.user.gioia.aioe.org Mime-Version: 1.0 X-Complaints-To: abuse@aioe.org X-Notice: Filtered by postfilter v. 0.9.2 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit