Article View: pl.comp.lang.c
Article #310363Re: Timer pomiędzyprocesowy
From: heby
Date: Tue, 29 Jun 2021 07:51
Date: Tue, 29 Jun 2021 07:51
67 lines
4269 bytes
4269 bytes
On 27/06/2021 01:35, bartekltg wrote: > No, jeśli potwierdzanie to komunikacja z B do A i potwierdzasz > po każdym bajcie, to nic dziwnego, że to działa na ułamek procenta. Czysto teoretycznie: powinno być 100% jednego rdzenia minu czas spędzony w kernelu na switchowaniu wątków i procesów. Ale obecnie mamy przecież multicore. > Jesteś w ogole pewien, że odpalają się dwa wątki? Dwa procesy. > No, w sumie rurki nie sa od tego. Są IPC ;) W zasadzie nie ma innych rozwiązań, jesli to ma być kanoniczny Unix. > To zastępuje sytuacje A pisze do pliku, B czyta z pliku, > nikt nie obiecuje, że nie będzie buforowania etc, w końcu co zbobić z jednym bajtem. Tak to wygląda z poziomu API, ale pod spodem są inne implementacje, np. buforowanie rurki wykonywane jest bezpośrednio w kernelu specjalistyczną implementacją, ponoć super szybką. Podobno, tak piszą w internetach. Bo mi nie działa tak szybko, aby skakać z radości. > Jak chcesz iść całkiem na całość, to pewnie to lub coś podobnego: > https://www.boost.org/doc/libs/1_76_0/doc/html/interprocess.html > https://theboostcpplibraries.com/boost.interprocess Używam. Podstawowy problem to spinlocki. > Ale to trochę overkill. Nie, to całkiem spoko, gdyby nie fakt, że spinlocki powodują złudzenie że program wypełnia cały rdzeń, a to tylko kręcenie sie w kółko w ciasnych pętlach, czekając na bajt. Dodatkowo nie wiem, czy używanie co chwilę "fence" w celu czekania na kocherencję cache między rdzeniami, jest wydajne. > Zastanow sie, czy na pwno potrzebujesz osobnych proecesów, może wątki > wystarczą. Potrzebuje, z przyczyn kłopotliwych do wyjaśnienia (komercyjna aplikacja). > Jak chcesz duzęgo transferu danych (i dużych % w uzyciu cpu), transferuj duze paczki danych, buforuj etc. Tak by się mogło wydawac, ale rura ma 4kB w kernelu i w zasadzie, jeśli wysyłam takie paczki, to czas reakcji po drugiej stronie jest równie długi. Zwiększam przepustowośc, responsywanośc pozostaje taka sama. Walczę o responsywność, nie przepustowość. > Jeśli chesz szybkiej reakcji, jak pisałem poprzednio, nie ten system. Nie chce reakcji RT, ale spodziewam się reakcji nie bazujacej na "sleep(1)". A obecnie mam wrażenie, że te sleepy ktoś mi złośliwie powstawiał do kodu. W ignorancji swojej myślałem, że drugi proces będzie miał przydzielony inny rdzeń CPU i *natymiast* po zauważeniu czegoś w buforze wykona się "read()". Ale się nie wykonuje tak natychmiast, wręcz zdumiewająco długo to trwa. Jestem ciekaw dlaczego, najzwyczajniej nie rozumiem kosztu przełączenia procesu/wątku we współczesnych CPU chyba, skoro to tyle zajmuje. Wydawało mi się, że wręcz przełaczenia nie będzie, a jedynie wybudzenie (tzn brak problemów z cache/stronami) - z uwagi na multicore. Jestem zaskoczony, dlatego chciałem sobie to pomierzyć, coby zrozumieć jeszcze mniej ;).
Technical Details
Message-ID:
<sbejdq$td1$1@dont-email.me>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mailReferences:
<s85jc8$i4p$1@dont-email.me> <a7ffc312-f808-4e5f-8a26-a13779b59962n@googlegroups.com> <sb3pld$464$1@dont-email.me> <69bd44d4-ae32-479d-bd33-a858bbf1dcddn@googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail From: heby <heby@poczta.onet.pl> Newsgroups: pl.comp.lang.c Subject: Re: Timer pomiędzyprocesowy Date: Tue, 29 Jun 2021 09:51:10 +0200 Organization: A noiseless patient Spider Lines: 68 Message-ID: <sbejdq$td1$1@dont-email.me> References: <s85jc8$i4p$1@dont-email.me> <a7ffc312-f808-4e5f-8a26-a13779b59962n@googlegroups.com> <sb3pld$464$1@dont-email.me> <69bd44d4-ae32-479d-bd33-a858bbf1dcddn@googlegroups.com> Mime-Version: 1.0 Injection-Date: Tue, 29 Jun 2021 07:51:22 -0000 (UTC) Injection-Info: reader02.eternal-september.org; posting-host="0ef891c59b08400937b75b6d3fae93b5"; logging-data="30113"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/Sn0I0bzgPhWrKPDvAkCeK" User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 Cancel-Lock: sha1:0G4j4Ze+vKH8MIk+ahKQ/lhRA2I= In-Reply-To: <69bd44d4-ae32-479d-bd33-a858bbf1dcddn@googlegroups.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit