a nie. wybacz, może źle sie wyraziłem. router to cwwk z n355 na archlinuxie (kernel -zen). klient to mój laptop z kartą usb 2.5gbit wpietą po usb.

teraz tak - głównym ograniczeniem na odroidzie h2+ z j4115 było 100% cpu na softirq, teraz sięgam moze 20% góra.

w laptopie miałem tylko 1Ge więc nie mogłem testować powyżej. router ma porty 2.5ge, więc do lapka dokupiłem kartę 2.5 na usb - stąd testy.

modem zapięty po usb, naturalnie

zrobiłem upgrade sprzętu, głównie dlatego, że miałem duże wątpliwości co do stanu usb3 w mojej poprzedniej konstrukcji. wyciągam ciągły gigabit za dnia/nocą i ogranicza mnie interfejs sieciowy w laptopie. jedyne zmiany, które zastosowałem u siebie to
1. governor cpu na performance (różnica kolosalna!)
2. poniższe parametry kernela:
net.core.default_qdisc=fq_codel
net.ipv4.tcp_congestion_control=bbr
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.ipv4.tcp_rmem = 4096 131072 67108864
net.ipv4.tcp_wmem = 4096 131072 67108864

nie zauważam istotnych różnic w wydajności między kernelem "zwykłym" a -zen.

edit: doszła karta sieciowa 2.5Ge, fast.com zwraca 2Gbit, pozostałe speedtesty 1.5Gb+

podejrzewam, że bardziej interesuje nas konfig kernela i wszystkie parmsy dla modułów. bo prawie na pewno chodzi o długości buforów. nie wiem czy u was tak jest, ale u mnie pierwsze pół sekundy jest szybciej niż reszta transferu.

wiadomo, windows lepszy bo ma mniej opcji do modyfikacji. przecież wszyscy używają w sieciach windowsa, oh wait. daj spokój. nikt nie zbadał czemu są takie wyniki tak naprawdę, co więcej masz doskonały przykład, że pod linuxem tez może to śmigać jak szalone (na tym samym hardware). innymi słowy jest to w zasięgu ręki, tylko nikt tego nie zbadał czym się różnią. nie rozumiem czemu się tak bardzo upierasz.

aby być bardziej produktywnym, zadam pytanie: czy ktoś ma zrzuty storagu tamtego routera? albo czy jest do pobrania firmware gdzieś? pewnie można by rozłożyć to na części pierwsze.

> To by wyjaśniało dlaczego na Windowsie nie ma z prędkością problemów....

w ogóle to nie wyjaśnia. stos sieciowy w windowsie to jedna wielka jednowątkowa padaka. podejrzewam, że właśnie przez to.. działa lepiej, bo pod linuxem mamy masę parametrów, które zostały przez dekady zoptymalizowane pod miedziane druty a nie radio, które dopiero od niedawna zaczyna być popularne w segmencie highend. pod windowsem moze się okazać, że po prostu są super krótkie kolejki, brak buforów jakichkolwiek i jakieś upośledzone śledzenie przerwań, które "działa", i akurat nie wpływa negatywnie na taki edge case jak modem usb.

IMHO świeży kernel, zestawic różnice w schedulearch, governorach (patche -zen, -ck, -rt). do tego wypadałoby zrobić listę tunables, na poziomie modułów jądra (usb, qmi, sieć), i do tego zestawić inne parametry (txqueuelen chociażby, które u mnie robi różnicę).

interfejs po qmi niestety nie jest wielowątkowy (/sys/class/net/tmobile/threaded). pytanie jak radzi sobie z tym mbim?

Chwilę się pobawiłem ustawieniami różnymi... https://i.imgur.com/pacw7UL.png
zrobiłem coś /rzekomo/ głupiego, czyli ip link set tmobile txqueuelen 4. tak, 4. nie zauważyłem żadnej niestabilności. wraz ze spadkiem długości kolejki rosły zauważalnie transfery.

niestety, kończą się moje możliwości testów, bo reszta sieci w domu gigabitowa, generalnie maksuję mój ethernet w peakach. jedyne co mógłbym zrobić to iperfa do jakiegoś zewnętrznego serwera wprost z mojego routera. jestem zadowolony... ale nie do końca. pora na sieć 2.5ge w domu.

> No to teraz pojechałeś smile Ja jestem temu winny smile

jeśli widzisz regresję miedzy starym kernelem a nowym i nic z tym nie zrobisz? to tak... i tylko tyle.

> Teraz jest nagle przeskok na 5G , przeskok z prędkości 250Mbps max w LTE na spokojnie ponad 1Gbps i zonk ... routery nagle tego nie potrafią. Choć jak widać niektórzy wiedzą co jest nie tak i potrafią coś z tym zrobić,że taki MT7621AT nie ma tego limitu...

pewnie parametry jądra. i w sumie kolega frutis chyba własnie poruszył temat, który jakoś przeleciał przed nami i nikt go nie zauwazył. w sumie jak będę mieć czas zobaczę czy kernel linux-rt nie będzie lepszy

> Racz przeczytać choćby ten temat , te 5 stron... Na 100% tu jest.

no właśnie widziałem. a skoro hardware ten sam, to pewnie ktoś właśnie fine-tuning zrobił parametrów jajka, żeby wszystkie bufory w komunikacji leżały jak najmniej czasu...

frutis napisał/a:

To może ten zen-kernel jest kluczem?
- https://github.com/zen-kernel/zen-kerne … ature-List

ciężko mi powiedzieć, bo nie mam akutalnie jak potwierdzić źródła sufitu ~900Mbit na moim sprzęcie - proc ma góra 50-60% obciążenia na jednym rdzeniu

Tak, śmiem twierdzić, że jesli cały kontroler USB na odroidzie h2+ jest zapiety po szynie której przepustowość jest w okolicy 1Gbit, to tyle właśnie będzie sufitem dla możliwości tego sprzętu, tyle i nic więcej. Tak samo widzę, że ten sam modem wpięty w nowoczesny sprzęt z nowym kontrolerem USB nie widzi tego sufitu i przyjmuje na klatę tyle ile wycisnę z BTS, na tym samym kernelu, zestawie paczek i generalnie podobnym środowisku (bo wszytko wszedzie trzymam na archu i kernelu linux-zen).

Wiele procków ARMowych jest pokracznych, źle zaprojektowanych, USB do niedawna w ogóle było traktowane po macoszemu - a ruting i nating po interfejsach, w sprzęcie, który miał rutować i natować - po interfejsach sieciowych - był zrobiony jako-tako - nie dziwi mnie, że nie wszystkie problemy zostały rozwiązane albo poprawnie zaadresowane.

> Możliwe też , że jak będzie to sprzęt odpowiednio "mocny" z możliwie małą ilością rdzeni/wątków , to sobie da radę mimo to....

jasne, że tak, i czasami rzucenie pieniędzmi w problem to wystarczające rozwiązanie. wiem, jestem na forum dla ludzi, którzy lubią na armowych potworkach to uruchamiać, co szanuję. w międzyczasie z przyjemnością się temu przyglądam, bo parę sztuczek sobie stąd już wybrałem i dla siebie. inna sprawa, że ruting i nating i konfigurację vlanów wolę zrobić ręcznie, z palca albo w innych konfigach niż to co siedzi w openwrt, a do wifi mam kontroler unifi, którego na armie juz nie odpalę.

> Bo znamy dobrze przykład , gdzie router z MT7621AT z modemem RM530 osiąga 1Gbps ( bo szybciej mu nie pozwala gniazdo LAN) , a routery z tym samym prockiem na Openwrt nie są w stanie wyciągnąć nawet 300Mbps....

jaki przykład? z ciekawości.

> Może odpowiednio stary kernel linuxa by wystarczył

bs. jesli tego nie zaraportowałeś, nie zrobiłeś bisecta na wersjach jajka, to winnym jestes tylko ty. cały linux się opiera na raportowaniu regresji przez społeczność.

na produkcyjnym routerze/nasie/hassie/plexie ? nie ma szans smile cały dom korzysta z tego boxa 24x7 od ponad roku.

a tak całkiem poważnie, to - z całym szacunkiem - nie uwierzę bez źródeł, że linux magicznie by gorzej obsługiwał tak podstawowy sprzęt po tak stabilnym protokole niż windows (pomijam, że który? bo xp i 7 za stare, a wszystko powyżej by zajechało tego biednego celerona i net result by był pewnie gorszy).

dlatego jestem skłonny sądzić że to problem jest z konfiguracją zadrutowania celerona bardziej niż cokolwiek innego. niemniej przyznam, że jestem w szoku, że zmiana z schedutila na performance tak drastycznie zmieniła wydajność - pierwszy raz od dwóch dekad w linuxie coś takiego doświadczyłem.

trzeba je mieć smile nawet przelotek nie mam usba->usbc żeby huba wrzucić... ale i tak jestem za blisko 1ge zeby zauwazyc czy tam jest wąskie gardło...

tak właśnie patrzę, w tym odroidzie prawie na pewno strzelam w wąskie gardło kontrolera który obsługuje wszystko poza ethernetami i pojedynczym nvme. możliwe, że jakbym w slot nvme wsadził osobny kontroler usb, to by było sporo lepiej. całość usb/sata/gpio/i2c i co tam jeszcze lata jest zapieta po pciex v2 x2... niby "wystarczająco" ale to jest w końcu relatywnie tania płytka...

wszędzie archlinux, na laptopie mam 7840hs i tam rok temu jak miałem modem wystawiony ładnie do okna to wyciągałem regularnie 1.9gbit, teraz z ręki przedwczoraj miałem 1.5 jak go more-or-less ustawiłem w stronę btsa (pojedynczy wątek wtedy potrafi sięgnąć 50-60%cpu). nigdy nie używałem modemu z windowsem, więc nie wiem jak to działa. natomiast wiem, że ten odroid ma tylko kontroler 3.0 wbudowany w proca i w sumie wypadałoby, żebym sprawdził czy on nie ma wąskiego gardła, ale nie mam żadnego storage, żeby przetestować go na szybko i wysycic port usb...

QMI, używam ModemManagera do konfiguracji połączenia. Nie widzę powodu aby pod windowsem miał działać szybciej, wytłumaczysz? Laptop naturalnie również pod linuxem, bo nie wyobrażam sobie używać windowsa.

Dorzucę swoje dwa słowa po roku nieobecności - to ja miałem wtedy 1.9Gbit z modemu (RM530N-GL). Aktualnie odroid h2+ mam jako router - ale nie na openwrt a na archlinuxie. Zauważyłem ZNACZNĄ różnicę przepustowości pomiędzy governorem `performance` a każdym innym (prawie 2x!) w wynikach fast.com - powtarzalnie. Rozważam zakup jakiegoś banana czy innego cuda, ale boję się, że to ślepa uliczka i że lepiej znowu zbudować router "ręcznie" na czystym linuxie i czymś na platformie am5... aktualnie odroid h2+ mi się "kończy" na 850-900Mbit, irqbalance nie pomaga, a nawet szkodzi(?)

ten sam modem za dnia "trzymany z ręki" ale podpięty do laptopa sięga 1.5Gbit, więc wąskim gardłem dalej jest mój router. Ciężko coś wymyślić, bo bez irqbalance dostaję maks 55% jednego z 4wątków cpu...

z innych obserwacji - latencja spada na `performance` względem innych też - 1-2ms różnicy - widzę w logach powtarzalną różnicę.

czy jakieś inne tricki, switche, parametry jądra do optymalizacji wydajności natingu/routingu zalecacie? zarówno dla openwrt jak i dorosłych linuksów?

O, dzieki, poczytam skrypt, zobaczę w którym momencie spada z rowerka

A co jest w zmiennej $device? bo tego nie ma w Twoim kodzie

Cezary napisał/a:

Co teraz zwraca ifstatus T_Mobile ?

root@openwrt:~# ifstatus T_Mobile
{
    "up": false,
    "pending": false,
    "available": false,
    "autostart": true,
    "dynamic": false,
    "proto": "qmi",
    "data": {
        
    },
    "errors": [
        {
            "subsystem": "interface",
            "code": "NO_DEVICE"
        }
    ]
}

No to ten element działa. pod luci widzę /dev/cdc-wdm0, plug od Ice4 do wydłubywania danych z modemu też działa. pytanie co jest kolejne? jak ręcznie zawołać zestawianie interfejsów? jest do tego jakiś dodatkowy debug? głupi set -x ? cokolwiek?

Cezary napisał/a:

Musisz doprowadzić to do jednolitej postaci, bo openwrt przez readlinka

devpath="$(readlink -f /sys/class/usbmisc/$devname/device/)"

czyta odpowiednie interfjesy. bez tego będzie się cały czas buntował że czegoś nie ma.

wszystko jest, co więcej, nie ma tam ani jednego pliku/"pliku" który nie ma o+r, więc wszystko powinien móc czytać - pytanie czy on tam musi pisać?

root@openwrt:~# readlink -f /sys/class/usbmisc/cdc-wdm0/device
/sys/devices/pci0000:00/0000:00:13.0/usb2/2-1/2-1.2/2-1.2:1.4
root@openwrt:~# cd /sys/devices/pci0000:00/0000:00:13.0/usb2/2-1/2-1.2/2-1.2:1.4
root@openwrt:/sys/devices/pci0000:00/0000:00:13.0/usb2/2-1/2-1.2/2-1.2:1.4# ls -lah
drwxr-xr-x    8 nobody   nogroup        0 Feb 19 22:47 .
drwxr-xr-x    9 nobody   nogroup        0 Feb 19 22:47 ..
-rw-r--r--    1 nobody   nogroup     4.0K Feb 20 18:42 authorized
-r--r--r--    1 nobody   nogroup     4.0K Feb 20 18:42 bAlternateSetting
-r--r--r--    1 nobody   nogroup     4.0K Feb 19 22:47 bInterfaceClass
-r--r--r--    1 nobody   nogroup     4.0K Feb 19 22:47 bInterfaceNumber
-r--r--r--    1 nobody   nogroup     4.0K Feb 20 18:42 bInterfaceProtocol
-r--r--r--    1 nobody   nogroup     4.0K Feb 20 18:42 bInterfaceSubClass
-r--r--r--    1 nobody   nogroup     4.0K Feb 20 18:42 bNumEndpoints
lrwxrwxrwx    1 nobody   nogroup        0 Feb 20 18:10 driver -> ../../../../../../../bus/usb/drivers/qmi_wwan
drwxr-xr-x    3 nobody   nogroup        0 Feb 20 18:42 ep_0f
drwxr-xr-x    3 nobody   nogroup        0 Feb 20 18:42 ep_88
drwxr-xr-x    3 nobody   nogroup        0 Feb 20 18:42 ep_8e
-r--r--r--    1 nobody   nogroup     4.0K Feb 20 18:42 interface
-r--r--r--    1 nobody   nogroup     4.0K Feb 20 18:42 modalias
drwxr-xr-x    3 nobody   nogroup        0 Feb 20 18:10 net
drwxr-xr-x    2 nobody   nogroup        0 Feb 20 18:42 power
lrwxrwxrwx    1 nobody   nogroup        0 Feb 19 22:47 subsystem -> ../../../../../../../bus/usb
-r--r--r--    1 nobody   nogroup     4.0K Feb 20 18:42 supports_autosuspend
-rw-r--r--    1 nobody   nogroup     4.0K Feb 19 22:47 uevent
drwxr-xr-x    3 nobody   nogroup        0 Feb 20 18:10 usbmisc

Okej. na hoście proxmoxa mam:

root@swarog:/sys/class/usbmisc/cdc-wdm0# ls -alh
total 0
drwxr-xr-x 3 root root    0 Feb 20 18:10 .
drwxr-xr-x 3 root root    0 Feb 20 18:10 ..
-r--r--r-- 1 root root 4.0K Feb 20 18:14 dev
lrwxrwxrwx 1 root root    0 Feb 20 18:14 device -> ../../../2-1.2:1.4
drwxr-xr-x 2 root root    0 Feb 20 18:19 power
lrwxrwxrwx 1 root root    0 Feb 20 18:19 subsystem -> ../../../../../../../../../class/usbmisc
-rw-r--r-- 1 root root 4.0K Feb 20 18:10 uevent

ale wewnątrz LXC już:

root@openwrt:/sys/class/usbmisc/cdc-wdm0# ls -alh
drwxr-xr-x    3 nobody   nogroup        0 Feb 20 18:10 .
drwxr-xr-x    3 nobody   nogroup        0 Feb 20 18:10 ..
-r--r--r--    1 nobody   nogroup     4.0K Feb 20 18:14 dev
lrwxrwxrwx    1 nobody   nogroup        0 Feb 20 18:14 device -> ../../../2-1.2:1.4
drwxr-xr-x    2 nobody   nogroup        0 Feb 20 18:19 power
lrwxrwxrwx    1 nobody   nogroup        0 Feb 20 18:19 subsystem -> ../../../../../../../../../class/usbmisc
-rw-r--r--    1 nobody   nogroup     4.0K Feb 20 18:10 uevent

ależ to podłe. nie wiem czemu zrzuca ownership

Cezary napisał/a:

Pokaż

uci show network.T_Mobile

PS. Jeżeli to qmi to /sys/class/usbmisc musi być także dostępny.

root@openwrt:/# uci show network.T_Mobile
network.T_Mobile=interface
network.T_Mobile.proto='qmi'
network.T_Mobile.device='/dev/cdc-wdm0'
network.T_Mobile.apn='internet'
network.T_Mobile.auth='none'
network.T_Mobile.pdptype='ipv4'

dodałem do LXC też `/sys/class/usbmisc` ale wciąż:

root@openwrt:~# logread | grep -i t_mo
Tue Feb 20 18:14:09 2024 daemon.notice netifd: Interface 'T_Mobile' is setting up now
Tue Feb 20 18:14:09 2024 daemon.notice netifd: T_Mobile (898): The interface could not be found.
Tue Feb 20 18:14:09 2024 daemon.notice netifd: T_Mobile (970): Stopping network T_Mobile
Tue Feb 20 18:14:09 2024 daemon.notice netifd: T_Mobile (970): Command failed: ubus call network.interface notify_proto { "action": 0, "link-up": false, "keep": false, "interface": "T_Mobile" } (Permission denied)
Tue Feb 20 18:14:09 2024 daemon.notice netifd: Interface 'T_Mobile' is now down

a w luci mam "Error: Network device is not present"

Panowie,

potrzebuję pomocy ze zdiagnozowaniem braku w mojej konfiguracji LXC.

Pacjent: OpenWRT na LXC na hoście z Proxmoxem.

Problem:

Fri Feb 16 17:38:12 2024 daemon.notice netifd: Interface 'T_Mobile' is setting up now
Fri Feb 16 17:38:12 2024 daemon.notice netifd: T_Mobile (925): The interface could not be found.
Fri Feb 16 17:38:12 2024 daemon.notice netifd: T_Mobile (1007): Stopping network T_Mobile
Fri Feb 16 17:38:12 2024 daemon.notice netifd: T_Mobile (1007): Command failed: ubus call network.interface notify_proto { "action": 0, "link-up": false, "keep": false, "interface": "T_Mobile" } (Permission denied)
Fri Feb 16 17:38:12 2024 daemon.notice netifd: Interface 'T_Mobile' is now down

Moja konfiguracja kontenera na Proxmoxie:

arch: amd64
cores: 2
features: mknod=1
hostname: openwrt
memory: 1024
net0: name=eth0,bridge=vmbr0,hwaddr=BC:24:11:0E:D1:B1,type=veth
ostype: unmanaged
rootfs: local-lvm:vm-666-disk-0,size=8G
swap: 0
tty: 1
unprivileged: 1
lxc.idmap: u 0 100000 65536
lxc.idmap: g 0 100000 65536
lxc.mount.auto: proc:mixed sys:rw cgroup:mixed
lxc.cgroup2.devices.allow: c 180:* rwm
lxc.cgroup2.devices.allow: c 188:* rwm
lxc.mount.entry: /dev/bus/usb dev/bus/usb none bind,optional,create=dir
lxc.mount.entry: /dev/ttyUSB0 dev/ttyUSB0 none bind,optional,create=file
lxc.mount.entry: /dev/ttyUSB1 dev/ttyUSB1 none bind,optional,create=file
lxc.mount.entry: /dev/ttyUSB2 dev/ttyUSB2 none bind,optional,create=file
lxc.mount.entry: /dev/ttyUSB3 dev/ttyUSB3 none bind,optional,create=file
lxc.mount.entry: /dev/cdc-wdm0 dev/cdc-wdm0 none bind,optional,create=file
lxc.mount.entry: /sys/devices/pci0000:00/0000:00:13.0/ sys/devices/pci0000:00/0000:00:13.0/ none bind,optional,create=dir
lxc.net.1.name: wwan0
lxc.net.1.type: phys
lxc.net.1.link: wwan0

Napisałem na forum linuxcontainers, odpisał Stephane Graber himself (https://ubuntu.com/blog/author/stgraber) ale nie mam pojęcia jak się zabrać do stracowania procesu odpowiedzialnego za sieć w OpenWRT, bo nigdy nie zestawiałem połaczenia ręcznie, tylko przez uci/luci.

https://discuss.linuxcontainers.org/t/h … iner/19090

Jakbyście mogli zasugerować jak się za to zabrać, to będę wdzięczny.

Focus napisał/a:

Wyniki masz bardzo dobre ale nie wiadomo z czego to wynika, czy masz 32T32R, czy 64T64R i czy masz SA, czy NSA.

5G NSA | B7 (2600 MHz) + B1 (2100 MHz) / n78 (3500 MHz)

Jakbyś chciał jakieś statsy to mów