Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


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

UDP na localhost, gubienie datagramów

From queequeg@trust.no1 (Queequeg)
Newsgroups pl.comp.os.linux.programowanie
Subject UDP na localhost, gubienie datagramów
Date 2019-03-08 12:24 +0000
Organization news.chmurka.net
Message-ID <cc3a114c-98ff-4beb-aeca-00d24c6a5026@trust.no1> (permalink)

Show all headers | View raw


Hej,

Mam (chyba dosyć nietypowy) problem.

Jest aplikacja, której nie mogę zmienić, i która wysyła datagramy UDP 
do skonfigurowanego serwera. Częstotliwość tych datagramów jest różna.

Skonfigurowałem aplikację tak, żeby wysyłała datagramy do localhosta, 
i napisałem program, który chodzi na tej samej maszynie i je odbiera.

Niestety przy dużym obciążeniu (datagramy wysyłane jeden po drugim) część 
z nich jest gubiona. W prostym teście, w którym jeden program wysyłał 
10000 datagramów jeden po drugim, a drugi je odbierał, gubione było ok. 
30% datagramów.

Co ciekawe, efekt ten nie występuje, gdy skonfigurowany jest zewnętrzny 
serwer (w tej samej sieci) -- wtedy odbierane jest 100% datagramów. Może 
LAN wprowadza takie opóźnienia, że nagle się to wyrabia, a może sam serwer 
na tyle obciąża CPU na tej źródłowej maszynie (to słaby, jednordzeniowy 
ARMv7), że dopiero wtedy to klęka...

Wiem, że to naturalna cecha UDP i pewnie po prostu jakiś bufor w kernelu 
się przepełnia, ale czy z poziomu aplikacji odbierającej można jakoś na to 
wpłynąć? Eksperymenty z SO_RCVBUF nic nie dały.

Tylko proszę bez "przejdź na TCP lub unix domain socket lub pipe lub 
cokolwiek" :) Gdybym mógł modyfikować aplikację wysyłającą, to bym to 
zrobił.

Dzięki.

-- 
https://www.youtube.com/watch?v=9lSzL1DqQn0

Back to pl.comp.os.linux.programowanie | Previous | Next | Find similar


Thread

UDP na localhost, gubienie datagramów queequeg@trust.no1 (Queequeg) - 2019-03-08 12:24 +0000

csiph-web