Optymalizacja wykorzystania procesora na routerze z OpenWrt

Moje przygody z OpenWrt rozpocz─ů┼éem od routera ASUS RT-AC56U. By┼é to do┼Ť─ç dobry, tani router z dwurdzeniowym procesorem Broadcom BCM4708A0 taktowanym 800MHz. Dodatkowo posiada┼é 128MB pami─Öci flash oraz 256MB RAM.

Wraz z jedzeniem wzrasta apetyt, jak to si─Ö m├│wi.

O ile nie skarżyłem się na procesor, to bardzo szybko zabrakło mi miejsca na kolejne to aplikacje. Postanowiłem więc wymienić go na Linksys WRT3200ACM, który później zmieniłem na Linksys WRT32x.

WRT3200ACM (WRT32x) to bardzo porz─ůdna maszyna, do tej pory u┼╝ywamy tego typu routery w pracy. O ile by┼éem zadowolony z jego wydajno┼Ťci, o tyle nie do ko┼äca spisywa┼éa si─Ö sie─ç WiFi.

Siła sygnału pozostawiała sporo do życzenia, a współpraca z innymi routerami lub punktami dostępu (access point) nie obyła się bez problemów. Wszystko przez zastosowany w nim chip sieci bezprzewodowej od Marvell.

Dodatkowo brak wsparcia dla kana┼é├│w DFS w WiFi w cz─Östotliwo┼Ťci 5GHz dodatkowo ogranicza┼éo jego wykorzystanie. Zapomnij r├│wnie┼╝ o szyfrowaniu WPA3 wprowadzony domy┼Ťlnie w serii OpenWrt 21.02 (WPA3 da si─Ö w┼é─ůczy─ç, ale WiFi i ca┼éy router szybko przestaje dzia┼éa─ç).

W poszukiwaniu lepszego routera natrafi┼éem na Linksys MR8300. Posiada┼é on 3 radia Qualcomm Atheros. Jedno s┼éu┼╝y┼éo do cz─Östotliwo┼Ťci 2.4GHz a dwa pozosta┼ée do 5GHz, z czego pierwszy dla kana┼é├│w do 60 a drugi powy┼╝ej 100 (wraz z obs┼éug─ů DFS).

O ile router sprawowa┼é si─Ö w porz─ůdku, wyra┼║nie mo┼╝na by┼éo odczu─ç, ┼╝e jest on sporo wolniejszy, szczeg├│lnie przy instalacji oprogramowania.

Sprawdzone w wersji OpenWrt 21.02 oraz OpenWrt 22.03

WRT3200ACM (WRT32x) posiadał dwurdzeniowy procesor 1866MHz, podczas gdy MR8300 posiadał czterordzeniowy 717MHz.

Teoretycznie wydajno┼Ť─ç, w zwi─ůzku z wi─Öksz─ů liczb─ů rdzeni powinna by─ç podobna, jednak┼╝e nie by┼éa.

Podczas gdy m├│j internet zwi─Ökszy┼é si─Ö z 100/10Mbps do 200/20Mbps dodatkowo zauwa┼╝y┼éem, ┼╝e router zacz─ů┼é si─Ö d┼éawi─ç, szczeg├│lnie gdy mia┼é wprowadzon─ů optymalizacja ┼é─ůcza internetowego przy pomocy SQM QoS.

SQM QoS nie wyrabia┼é powy┼╝ej 100Mbps a po jego wy┼é─ůczeniu mo┼╝na bez problemu by┼éo osi─ůgn─ů─ç 200Mbps.

Nie pomog┼éo niestety w┼é─ůczenie sterowania pakietami (Packet Steering) w Network > Interfaces > Global network options.

Packet Steering pozwala na zarz─ůdzanie pakietami z wykorzystaniem wszystkich dost─Öpnych procesor├│w w systemie, w tym przypadku rdzeni (kt├│re MR8300 ma cztery).

Zmuszony zosta┼éem do wy┼é─ůczenia SQM QoS, do czasu a┼╝ znajd─Ö rozwi─ůzanie na t─Ö bol─ůczk─Ö. Podejrzewam, ┼╝e b─Öd─Ö to sprawdza┼é, wraz z wydaniem stabilnej wersji OpenWrt 22.03, gdzie wprowadzony zostanie Firewall 4.

Postanowi┼éem jednak zag┼é─Öbi─ç si─Ö z aspekt wykorzystania mocy obliczeniowej tkwi─ůcej w czterech rdzeniach Linksys MR8300.

W moich poszukiwaniach natrafi┼éem na komend─Ö pokazuj─ůc─ů, jak wykorzystywany jest nasz procesor i jego rdzenie.

tail /proc/interrupts -n 100

Dzi─Öki temu zobaczy┼éem, ┼╝e pierwszy rdze┼ä robi nadgodziny, podczas gdy trzy pozosta┼ée si─Ö opierdzielaj─ů.

Linksys MR8300 z OpenWrt przed w┼é─ůczniem irqbalance

Postanowi┼éem co┼Ť z tym zrobi─ç.

Przegl─ůdaj─ůc oficjaln─ů stron─Ö OpenWrt natrafi┼éem na pakiet Irqbalance.

Zadaniem tego pakietu jest, w dos┼éownym t┼éumaczeniu “dystrybucja przerwania na wiele logicznych procesor├│w (rdzeni)”. W skr├│cie rozdzielenie polece┼ä z g┼é├│wnego rdzenia na wszystkie dost─Öpne.

Irqbalance is a Linux daemon that distributes interrupts over multiple logical CPUs. This may result in improved overall performance and even reduced power consumption.

Pakiet ten nie jest dost─Öpny domy┼Ťlnie w systemie oraz jego zainstalowanie nie w┼é─ůcza go automatycznie. Jest to podyktowane faktem, ┼╝e w przypadku urz─ůdze┼ä do dw├│ch rdzeni, wzrost wydajno┼Ťci jest minimalny lub te┼╝ powoduje jego pogorszenie.

W przypadku Linksys MR8300, kt├│ry posiada cztery rdzenie, warto jednak spr├│bowa─ç.

Zaktualizowałem pakiety oraz zainstalowałem irqbalance

opkg update
opkg install irqbalance

Edytuj─ůc plik konfiguracyjny, w┼é─ůczy┼éem jego automatyczny start

nano /etc/config/irqbalance
 option enabled '1'

Po czym go uruchomiłem ręcznie

/etc/init.d/irqbalance start

Już po chwili widać było, że 3 leniwe rdzenie zaczęły pracować na chleb.

tail /proc/interrupts -n 100

Linksys MR8300 z OpenWrt po w┼é─ůczniu irqbalance

Wykonuj─ůc kilka test├│w, w tym zarzucenie do ┼Ťci─ůgania plik z torrent├│w (zobacz jak doda─ç klienta torrent do routera z OpenWrt), kt├│ry w pocz─ůtkowym stadium, zawsze powodowa┼é przymulenie routera pokaza┼é, zobaczy┼éem lekk─ů popraw─Ö.

Load Average 1.44, 0.83, 0.50

Nie jest to rewelacyjne, ale zawsze lepsze to ni┼╝ nic.

Nadal musia┼éem zapomnie─ç o SQM QoS, ale przynajmniej widz─Ö, ┼╝e procesor routera wykorzystany jest w wi─Ökszym stopniu, ni┼╝ przez zmian─ů.

Idealne byłoby posiadanie procesora z Linksys WRT3200ACM (WRT32x) oraz kart sieci bezprzewodowej z MR8300.

Je┼╝eli interesujecie si─Ö zastosowaniem OpenWrt do bardziej zaawansowanych cel├│w, w├│wczas warto pomy┼Ťle─ç o stworzeniu routera z wykorzystaniem Raspberry Pi 4 oraz osobnych punkt├│w WiFi.

Gdyby tylko Askey RT4230W REV6 / RAC2V1K (nie SAC2V1K) mo┼╝na by┼éoby zdoby─ç, do pobawienia si─Ö, po tej stronie globu, to mo┼╝liwe, ┼╝e by┼Ťmy mieli niedrog─ů pot─Ö┼╝n─ů alternatyw─Ö do WRT3200ACM (WRT32x) czy MR8300, kt├│ry ma by─ç oficjalnie wspierany w wersji OpenWrt 22.03.

Skusi┼éem si─Ö i zakupi┼éem z USA za po┼Ťrednictwem eBay UK Askey RT4230W REV6 / RAC2V1K. Wgra┼éem OpenWrt bez konieczno┼Ťci otwierania obudowy i wszystko ┼Ťmiga pi─Öknie na OpenWrt 22.03. Czekam tylko na finaln─ů wersj─Ö 22.03.x i stanie si─Ö on moim podstawowym urz─ůdzeniem.

Pozdrawiam.

Komentarze
Kategorie