Metodoloģija
Šī lapa apraksta, kā tieši savienojums.lv mēra interneta savienojumu — ko katrs skaitlis nozīmē, kā tas ir izrēķināts un kādas ir metodes robežas. Mērījumu uzticamība sākas ar atklātību.
Pārskats
Tests sastāv no trim fāzēm: latences mērīšana bez slodzes (~4 s), lejupielādes tests (10 s) un augšupielādes tests (10 s). Lejupielādes laikā papildus tiek mērīta latence zem slodzes. Viens tests var patērēt līdz aptuveni 1,5 GB datu (mazāk lēnākiem savienojumiem un mobilajām ierīcēm — tests pielāgojas).
Pings un džiters
Latence tiek mērīta ar maziem HTTP pieprasījumiem serverim (/api/ping)
un atbildes gaidīšanas laiku, ko fiksē pārlūka augstas precizitātes pulkstenis.
Pirmie 3 pieprasījumi (savienojuma izveide, TCP lēnais starts) netiek ieskaitīti;
pēc tam seko 16 mērījumi pēc kārtas.
- Pings — ātrākais (minimālais) no mērījumiem. Minimums labāk nekā vidējais atspoguļo tīkla patieso latenci, jo neietver operētājsistēmas un pārlūka plānošanas kavējumus. Mediāna tiek rādīta detaļās.
- Džiters — secīgu mērījumu starpību vidējais absolūtais lielums:
jitter = vidējais( |t[i] − t[i−1]| )(RFC 3550 pieeja). Zems džiters nozīmē stabilitāti — svarīgi balss un video zvanos.
Lejupielāde
Ātrumu nekad neizmēra vienā "dati ÷ laiks" darbībā. Tā vietā:
- vairākas paralēlas plūsmas (parasti 6, mobilajā ierīcē 4) — katra lejupielādē
32 MB blokus no
/api/download, līdz fāzei beidzas 10 sekundes; - pirmais 1,5 s netiek ieskaitīts rezultātā — šajā laikā TCP savienojums "iesilst" (lēnais starts);
- ātrums tiek rēķināts 500 ms logos no faktiski saņemto baitu skaita;
- galarezultāts ir šo logu mediāna. Mediāna ir noturīga pret īsiem tīkla kavējumiem un mērījumu troksni, atšķirībā no vidējā aritmētiskā;
- serveris šajā laikā nepārtraukti plūsmā sūta iepriekš ģenerētus nejaušus datus
ar
Cache-Control: no-storeun unikālu URL — pārlūka kešatmiņa un starpserveru keši rezultātu nevar izkropļot.
Detaļās redzamais p10–p90 diapazons parāda, cik plats bija ātruma izsvārme testā.
Augšupielāde
Augšupielādei pārlūki nepiedāvā precīzu "nosūtīto baitu" plūsmu standarta
fetch API, tāpēc tiek izmantoti XMLHttpRequest augšupielādes
progresa notikumi: 4 plūsmas (mobilajā 3), katras 8 MB, 10 sekundes. Fāzes beigās
nenosūtītie dati tiek pārtraukti, tāpēc tests nevilcinās arī uz ļoti lēniem
augšupielādes kanāliem.
Rezultāts rēķināts ar to pašu logu + mediānas metodi kā lejupielādei.
Ierobežojums: progresa notikumi fiksē baitus, ko operētājsistēma ir pieņēmusi nosūtīšanai, nevis baitus, kurus tīkls jau apstiprinājis. Ļoti ātriem savienojumiem tas rezultātu var nedaudz (parasti < 1 %) pārvērtēt. Precīzākai mērīšanai nākotnē plānojam WebSocket balstītu dzini ar servera apstiprinājumiem.
Latence zem slodzes (bufferbloat)
Lejupielādes testa laikā katras ~350 ms tiek mērīts pings. Ja maršrutētājs
vai interneta pakalpojumu sniedzēja aprīkojums pieņem vairāk datu, nekā spēj
nosūtīt, gaidīšanas rindas izaug — un latence zem slodzes ievērojami pieaug.
Rezultāts ir starpība: latence zem slodzes − pings bez slodzes.
- < 5 ms — lieliski: rindas praktiski nav;
- 5–15 ms — labi;
- 15–50 ms — vidēji: video zvanos var rasties aizkavēšanās;
- > 50 ms — augsta buferizācija: pie pārlūkošanas vai lejupielādēm zvani un spēles "lec".
Ja šī vērtība ir augsta, palīdz maršrutētājā ieslēgt Smart Queue Management (SQM / CAKE / FQ-CoDel) vai samazināt maršrutētāja buferu lielumu.
Stabilitāte
Stabilitāte raksturo, cik vienmērīgs bija lejupielādes ātrums testā:
stabilitāte = 1 − variācijas koeficients (standartnovirze dalīta ar
vidējo vērtību logiem). 100 % nozīmē, ka ātrums visu laiku bijis vienāds;
zemāka vērtība parasti norāda uz Wi-Fi traucējumiem, signāla problēmām
vai mobilā tīkla šūnu pārslēgšanu.
Parametru tabula
| Parametrs | Vērtība |
|---|---|
| Ping fāze | 3 iesildīšanās + 16 mērījumi, 60 ms starplaiks |
| Lejupielādes fāze | 10 s (pagarinās līdz 15 s, ja ātrums vēl strauji pieaug), 6 plūsmas (4 mobilajā), 32 MB bloki |
| Augšupielādes fāze | 10 s, 4 plūsmas (3 mobilajā), 8 MB bloki |
| Savienojumi | 2 atšķirīgas izcelsmes (savienojums.lv + speed.savienojums.lv) — divi paralēli TCP savienojumi; izmantojot vienu HTTP/2 savienojumu, nevienmaiļu un augstas latentces ceļos ātrums tiktu nenovērtēts |
| Iesildīšanās, kas netiek ieskaitīta | 1,5 s |
| Loga izmērs | 500 ms |
| Rezultāta metrika | logu mediāna |
| Datu limits vienam testam | ~1,5 GB (mazāk, ja savienojums lēnāks) |
| Datu limits vienam IP stundā | 12 GB |
Metodes robežas
- Tiek mērīts ceļš no tavas ierīces līdz mērījumu serverim — nevis "internets kopumā". Ātruma ierobežojums var būt Wi-Fi, vecs maršrutētājs, VPN, ierīce vai tīkls; tests parāda tikai kopējo rezultātu.
- Pārlūks mērī virs TCP/HTTP. HTTP/2 un HTTP/3 multipleksē vairākas plūsmas vienā savienojumā — ļoti ātriem (gigabita) savienojumiem rezultāts var būt nedaudz zemāks par pieslēguma maksimumu.
- Wi-Fi gandrīz vienmēr ir ātruma ierobežojums. Precīzam pieslēguma mērījumam izmanto kabeli.
- Mobilajos tīklos operators var pēkšņi mainīt ātrumu (piemēram, sasniedzot datu limitu) — viens tests to var neredzēt.
- VPN, korporatīvie ugunsmūri un starpserveri var ievērojami izkropļot rezultātu.
Servera atrašanās vieta
Kad mezglu būs vairāki, pārlūks automātiski izvēlēsies tuvāko pēc latences, un rezultātos redzēsi, kurš servers tika izmantots.
Privātums
- Nav reklāmu, nav trešo pušu izsekošanas, nav sīkdatņu, nav pieteikšanās.
- Uzglabājam tikai testa rezultātus (ātrums, latence utt.), pārlūka lietotāja aģentu un client IP adresi. IP tiek izmantota ļaunprātīgas izmantošanas ierobežošanai; publicētajos datos tā tiks anonimizēta.
- Rezultāti, kurus redzi, paliek tikai tavā pārlūkā — mēs no tiem neveidojam profilu.
Atklātība
Mērījumu servera programmatūra ir rakstīta Go valodā ar standarta bibliotēku, mērījumu dzinis — pārlūkā TypeScript bez trešo pušu bibliotēkām. Mēs balstāmies uz atklātu projektu (piemēram, LibreSpeed) pieredzi, bet mērījumu dzini esam uzrakstījuši paši, lai saprastu katru mērījumu. Pārpublicējot datos no šī servisa, lūdzu norādi izcelsmi un parauga izmēru; mēs neteiksim "ātrākā operatora" apgalvojumus — tikai datus un to robežas.