🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #310363

Re: Timer pomiędzyprocesowy

#310363
From: heby
Date: Tue, 29 Jun 2021 07:51
67 lines
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-mail
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>

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