Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sdr-widget: overflow occurred, dropping packet (x1091000) #1

Open
kaklik opened this issue Aug 8, 2020 · 9 comments
Open

sdr-widget: overflow occurred, dropping packet (x1091000) #1

kaklik opened this issue Aug 8, 2020 · 9 comments

Comments

@kaklik
Copy link
Member

kaklik commented Aug 8, 2020

Pokusil jsem se sdr-widget použít pro nové zařízení DISTROMETER01

Za tímto účelem jsem sdr-widget zprovoznil na Ubuntu 20.04 a nyní se potýkám s potížěmi okolo zahazovaných packetů viz níže. Zatím nevím čím je to způsobeno, ale na port 3701 je připojen pouze sox.
Celé zařízení obsluhuje tento skript.

./sdr-widget: overflow occurred, dropping packet (x1091000)
./sdr-widget: overflow occurred, dropping packet (x1092000)
./sdr-widget: overflow occurred, dropping packet (x1093000)
./sdr-widget: overflow occurred, dropping packet (x1094000)
./sdr-widget: overflow occurred, dropping packet (x1095000)
./sdr-widget: overflow occurred, dropping packet (x1096000)
./sdr-widget: overflow occurred, dropping packet (x1097000)
./sdr-widget: overflow occurred, dropping packet (x1098000)
./sdr-widget: overflow occurred, dropping packet (x1099000)
./sdr-widget: overflow occurred, dropping packet (x1100000)
./sdr-widget: overflow occurred, dropping packet (x1101000)
./sdr-widget: overflow occurred, dropping packet (x1102000)
./sdr-widget: overflow occurred, dropping packet (x1103000)
./sdr-widget: overflow occurred, dropping packet (x1104000)
./sdr-widget: overflow occurred, dropping packet (x1105000)
./sdr-widget: overflow occurred, dropping packet (x1106000)
./sdr-widget: overflow occurred, dropping packet (x1107000)
./sdr-widget: overflow occurred, dropping packet (x1108000)
./sdr-widget: overflow occurred, dropping packet (x1109000)
./sdr-widget: overflow occurred, dropping packet (x1110000)
./sdr-widget: overflow occurred, dropping packet (x1111000)
./sdr-widget: overflow occurred, dropping packet (x1112000)
./sdr-widget: overflow occurred, dropping packet (x1113000)

Chybová hláška je zřejmě generována touto podmínkou. Zdrojový kód ale bohužel neobsahuje prakticky žádné komentáře, takže těžko říci, co v tomto místě dělá.

@kaklik
Copy link
Member Author

kaklik commented Aug 9, 2020

Ještě další velmi podobný typ chyby, který se vyskytuje, když sdr-widget běží volně je tento:

./sdr-widget: widget reports overflow
./sdr-widget: widget reports overflow
./sdr-widget: widget reports overflow
./sdr-widget: widget reports overflow
./sdr-widget: widget reports overflow
./sdr-widget: widget reports overflow
./sdr-widget: widget reports overflow
./sdr-widget: widget reports overflow
./sdr-widget: widget reports overflow

Tato chybová hláška se ve zdrojovém kódu vyskytuje pouze na jednom místě Nerozumím však té podmínce, která ji vyvolává.

@roman-dvorak
Copy link
Member

./sdr-widget: overflow occurred, dropping packet (x1104000)
./sdr-widget: overflow occurred, dropping packet (x1105000)
./sdr-widget: overflow occurred, dropping packet (x1106000)
./sdr-widget: overflow occurred, dropping packet (x1107000)
./sdr-widget: overflow occurred, dropping packet (x1108000)
./sdr-widget: overflow occurred, dropping packet (x1109000)
./sdr-widget: overflow occurred, dropping packet (x1110000)

Stejna vec se deje na stanicich bolidozoru s Ubuntu 18.04

kaklik added a commit to UniversalScientificTechnologies/DISDROMETER01 that referenced this issue Aug 9, 2020
@kaklik
Copy link
Member Author

kaklik commented Aug 9, 2020

./sdr-widget: overflow occurred, dropping packet (x1109000)
./sdr-widget: overflow occurred, dropping packet (x1110000)

Stejna vec se deje na stanicich bolidozoru s Ubuntu 18.04

Pokusil jsem se to vyřešit zvětšením velikosti bufferu a snížením nice. Ale jednak to úplně nepomohlo a potom to taky pravděpodobně není řešení, které by bylo vhodné pro bolidozor stanice. Neboť to pravděpodobně zvýší latenci.

@povik
Copy link
Member

povik commented Aug 10, 2020

./sdr-widget: overflow occurred, dropping packet (x1112000)
./sdr-widget: overflow occurred, dropping packet (x1113000)

Chybová hláška je zřejmě generována touto podmínkou. Zdrojový kód ale bohužel neobsahuje prakticky žádné komentáře, takže těžko říci, co v tomto místě dělá.

Hlášku vyvolá, když není místo v kruhovým bufferu na straně počítače při příjmu paketu.

Druhá hláška

./sdr-widget: widget reports overflow
./sdr-widget: widget reports overflow

je vyvolaná tím, když přeteče buffer na straně zařízení. Ta podmínka kouká na flag, který se v paketu nahazuje při přetečení. Je to flag přidaný ve firmwaru opečovaném pro Bolidozor.

@kaklik
Copy link
Member Author

kaklik commented Aug 10, 2020

@povik Takže obě tyto chybové hlášky jsou způsobeny tím, že se nevyprazdňuje kruhový buffer uvnitř ./sdr-widget? Nebo jakým jiným mechanismem může dojít k tomu, že se tyto chybové hlášky nevyskytují souběžně?
Podle tvého popisu bych totiž očekával, že nejdříve nastane "./sdr-widget: overflow occurred, dropping packet (x1112000)" a pak vzápětí "./sdr-widget: widget reports overflow" protože se nestihnout vyčíst data z USB zařízení.

@kaklik
Copy link
Member Author

kaklik commented Aug 10, 2020

@roman-dvorak zatím jsem zřejmě přišel na rozdíl v chování mezi Ubuntu 16.04 a Ubuntu 20.04 (Možná i 18.04 ale to nemám kde zkusit.)

Ten rozdíl vypadá tak, že když na stanici s Ubuntu 16.04 spustím tehle příkaz:

nc localhost 3701 | sox -t f32 -c 2 -r 96000 - test2.wav trim 0 300

Tak to vyrobí 300 sekund dlouhý wav a pak se to ukončí bez nějakých chybových hlášek.

Pokud to samé zkusím udělat na MOXu. Tak to dopadne tak, že sdr-widget začne psát

./sdr-widget: overflow occurred, dropping packet (x699000)
./sdr-widget: overflow occurred, dropping packet (x700000)
./sdr-widget: overflow occurred, dropping packet (x701000)
./sdr-widget: overflow occurred, dropping packet (x702000)
./sdr-widget: overflow occurred, dropping packet (x703000)

A ten příkaz se soxem se zřejmě neukončí nikdy.. Ono vlastně celou tuhle věc jsem začal řešit proto, protože jsem chtěl zaznamenat minutové soubory s deštěm, které bych si pak mohl zobrazit v pysdr-recviewer. Jenže tohle neukončení soxu znamená, že je nejde vyrobit tak jednoduše.

Pokud se ten příkaz nc localhost 3701 | sox -t f32 -c 2 -r 96000 - test2.wav trim 0 300 ukončí pomocí ctrl+C, tak chybové hlášky přestanou asi takhle:

./sdr-widget: overflow occurred, dropping packet (x5302000)
./sdr-widget: overflow occurred, dropping packet (x5303000)
./sdr-widget: overflow occurred, dropping packet (x5304000)
./servestream: write error, closing connection

@povik
Copy link
Member

povik commented Aug 10, 2020 via email

@kaklik
Copy link
Member Author

kaklik commented Aug 11, 2020

@kaklik Ne, jenom první, tj. overflow occurred, dropping packet, je způsobena tím, že se nevyprazdňuje kruhový buffer v ./sdr-widget. Paket vzorků se pak zahodí a zařízení na USB by o tom nemělo vědět. Ta druhá hláška se vyskytne, když se ze zařízení nestíhají odeslat vzorky. Což nevím, jestli má jak USB host ovlivnit, možná jo.

Tak ale ten tok dat po USB z SDR-widget by měl být hodně konstantní. Tam nevidím důvod, proč by vznikaly nějaké návaly dat na USB hosta...
Takže bych asi pochopil že v LXC kontejneru může vznikat problém s rychlostí přístupu k USB. To znamená že hláška ./sdr-widget: widget reports overflow by mohla být specifická pro MOX a jeho LXC virtualizaci. Budiž, takhle hláška vzniká velmi zřídka, takže by s tím asi mohlo jít žít.

Potíž ale je teď primárně s tím ./sdr-widget: overflow occurred, dropping packet (x5302000) Protože to vypadá tak, že to nějak zasekne celý datový stream. A začal to být teď závažný problém po tom, co @roman-dvorak aktualizoval distribuci na stanici Bolidozoru a zároveň to pozoruju já v tom LXC kontejneru na MOXu..

@povik
Copy link
Member

povik commented Aug 11, 2020 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants