tehnika · 6 min · 25.08.2026

Deviņi ath11k ielāpi nolaiž Wi-Fi aizturi no 155 uz 22 milisekundēm

Uz Qualcomm IPQ8074 piekļuves punkta piesātināta lejielāde dod 155 milisekundes aiztures. Ar deviņu ielāpu kopu, ko izstrādātājs Julius Bairaktaris nosūtīja linux-wireless sarakstam, tas pats mērījums dod 22 milisekundes. Caurlaide pie tā krīt no 94,6 uz 74,3 Mbit/s. Visa kopa pievieno nedaudz vairāk par 150 koda rindām.

Tik liela starpība no tik maza ielāpu apjoma sanāk tāpēc, ka ath11k draiveris līdz šim neturēja nevienu savu rindu. Katrs baits, kas gaidīja sūtīšanu, jau sēdēja aparatūras TX gredzenos. Tur nav ne aktīvās rindas pārvaldības, ne plūsmu atdalīšanas, tāpēc īss ping paciņas ceļā stāv aiz visa, ko lejielāde jau iegrūdusi aparatūrā.

Divi karodziņi, ko draiveris nekad neuzstādīja

Linux bezvadu slānī mac80211 jau septiņus gadus ir mehānisms tieši šai problēmai. To sauc AQL, airtime queue limits. Toke Høiland-Jørgensen un Kan Yan to iesūtīja 2019. gada 15. oktobrī, pārnesot ideju no ath10k koda, kas tolaik dzīvoja ārpus kodola: 693 rindas 12 failos, tostarp jauns airtime.c ar aptuveni 375 rindām aprēķinu.

AQL mēra ēterā pavadīto laiku. Paciņu skaits tam nav svarīgs. Pirms katras paciņas izņemšanas no rindas mac80211 novērtē, cik ēterā laika tās nosūtīšana prasīs. Pēc šī novērtējuma slānis ierobežo, cik daudz datu vienlaikus atrodas aparatūrā. Katrai sūtīšanas rindai tiek atļauts izlaist tikai tik daudz, lai aparatūra savāktu vienu vai divus lielus agregātus. Pārējais paliek mac80211 pusē, kur to jau apstrādā CoDel. Tas ir viss triks: ja dati sēž kodola rindā, tos var mest ārā vai pārkārtot, bet aparatūras gredzenā tie vairs nav sasniedzami.

Uz ath11k neviens no šiem mehānismiem nekad nav sācis strādāt. Draiveris nepieteica ne NL80211_EXT_FEATURE_AQL, ne NL80211_EXT_FEATURE_AIRTIME_FAIRNESS. Katrs abu funkciju lietotājs mac80211 iekšienē ir aizvērts aiz attiecīgā bita, tāpēc bez pieteikuma visa AQL mašinērija draiverim vienkārši nepieskaras. Kods bija klāt visu laiku. Neviens to nebija ieslēdzis.

Katrs rindā ieliktais baits sēž aparatūras TX gredzenos, kur nav ne AQM, ne plūsmu atdalīšanas.

Trīs mērījumi uz IPQ8074

Kopas pavadvēstulē ir trīs skaitļu pāri no viena un tā paša testa uz IPQ8074 piekļuves punkta:

  • pašreizējais kods: 94,6 Mbit/s pie 155 ms
  • ar ielāpiem, noklusētais limits: 94,0 Mbit/s pie 157 ms
  • ar ielāpiem, BE rindas aql_txq_limit 500/1000: 74,3 Mbit/s pie 22 ms

Otrā rinda ir tā, kas kopai dod izredzes tikt pieņemtai. Ar noklusējuma iestatījumiem limits nesaista, tāpēc kopa neko nemaina: 94,0 pret 94,6 Mbit/s ir mērījuma troksnis. Nekas nesalūzt tiem, kas neko nekonfigurē. Trešā rinda parāda, ko dod pieskrūvēts limits: aizture nokrīt aptuveni septiņas reizes, samaksa ir piektā daļa caurlaides.

Šī samaksa nav slēpta. Piecdesmit kilobaitu, kas negaida gredzenā, ir piecdesmit kilobaitu, ko radio šajā mirklī nesūta. Piekļuves punkta administratoram tas ir izvēles jautājums: pilna caurlaide vienam lejielādētājam vai zema aizture visiem pārējiem mājas tīklā.

Sestais ielāps maksā 2,2 reizes

Kopā ir viens ielāps, kas ar aizturi nedara neko. Sestais ievieš plānošanas kārtu, ko izsauc sūtīšanas pabeigšana. Kad aparatūra ziņo, ka kadrs ir aizgājis, draiveris uzreiz sāk jaunu kārtu. Agrāk tas gaidīja nākamo sūtīšanas pieprasījumu no augšas. Pie noklusētā limita tas nedod nekādu efektu. Pie pieskrūvēta limita tas ir 2,2 reizes lielāka caurlaide pie tās pašas aiztures.

Loģika ir tieša: kad limits saista, gredzenā atbrīvojusies vieta ir vērtīga. Jo ātrāk to aizpilda, jo mazāk aparatūra dīkstāv. Bez šīs kārtas pieskrūvēts AQL limits nozīmētu, ka radio gaida darbu, kas rindā jau ir. Tāpēc sestais ielāps kopā ar pārējiem astoņiem ir obligāts, atsevišķi tas ir bezjēdzīgs.

Cik daudz aparatūras to skar

ath11k apkalpo Qualcomm 802.11ax mikroshēmas divos ļoti dažādos veidos. IPQ8074 un IPQ6018 ir maršrutētāju un piekļuves punktu sistēmas uz mikroshēmas, kur šis draiveris apkalpo visu mājas tīklu. QCA6390, QCA6391, WCN6855, QCA2062, QCA2066 un QCA6698AQ ir PCIe kartes klēpjdatoros, kur svarīgāka ir pretējā virziena aizture. QCN9074 aizgāja kodolā 5.14 laidienā, WCN6855 un QCA206x saime 5.17, tāpēc runa ir par aparatūru, kas šodien ir veikalu plauktos.

Piekļuves punkta pusē starpība ir jūtama tieši tā, kā to apraksta bufferbloat literatūra. Viena mašīna lejielādē lielu failu. Visiem citiem tīklā video zvans sāk lēkāt. Foruma ierakstu, kurā autors raksta, ka AQL un ATF ieviešana ath11k ļāvusi Wi-Fi bufferbloat gandrīz izskaust, 23. augustā pārsūtīja cake sarakstam kā veltījumu Deivam Tetam (1965-2025), kurš šo tēmu tur turēja gadu desmitu. Toms Herberts atbildēja ar vienu vārdu: fantastiski.

Pavadvēstulē pieminēts modelis

Bairaktaris pavadvēstulē norāda, ka deviņu ielāpu izstrādē palīdzējis Claude Opus 5. Kodola sarakstos šāda piezīme vairs nav retums. Šis gadījums ir neparasts ar to, ka ielāpi nav pārrakstīšana no vienas valodas otrā. Tie savieno esošu apakšsistēmu ar draiveri, kas to nekad nebija pieteicis. Rezultātu var izmērīt vienā komandrindā, tāpēc recenzentam nav jāticēt aprakstam.

Kopa joprojām ir recenzijā linux-wireless sarakstā. Noklusējuma iestatījumos ath11k lietotājs no tās neiegūst neko: 94,0 Mbit/s pie 157 ms ir tas pats, ko dod pašreizējais kods. Skaitlis 22 parādās tikai pēc tam, kad kāds ar rokām uzstāda aql_txq_limit uz 500/1000.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no tehnikasaistītie