--- title: Suorituskykymittaukset nav: How it works output: benchmarks/index.html description: Varsto mitattuna Pariisin, Amsterdamin ja Varsovan välillä 9. ja 10. lokakuuta 2026 sekä NATin takana olevalta kotiliittymältä: lataukset vertaisyhteydellä toiselta laitteelta verrattuna samoihin latauksiin S3-bucketista, menetelmä, raakaluvut, ajojen pohjalta tehdyt korjaukset ja mittausten rajoitukset. ---

Suorituskykymittaukset: vertaisyhteys halki Euroopan

Pariisissa oleva laite säilyttää tiedostot. Amsterdamissa ja Varsovassa olevat laitteet liittyvät holviin tyhjällä kansiolla ja lataavat kaiken: kerran suoraan Pariisin laitteelta ja toisiltaan (vertaisyhteydellä) ja kerran Pariisissa sijaitsevasta S3-bucketista. Mitattu 9. ja 10. lokakuuta 2026 vuokratuilla pilvikoneilla.

Tämä sivu kertoo, mitä mitattiin, miten, mikä tuloksia rajoitti ja mitä Varstossa muutettiin niiden vuoksi. Jokaisella suunnitellulla tapauksella on nyt lukemat, kustakin kaksi ajoa, ellei taulukossa toisin mainita. Luvut koskevat alfaversiota: ne kuvaavat koodia sellaisena kuin se oli noina päivinä. Versiosta 0.0.1-alpha.11 lähtien suuret tiedostot pilkotaan suurempiin lohkoihin (keskimäärin 1 MiB 32 MiB:n tiedostoista alkaen, 4 MiB 1 GiB:n tiedostoista alkaen), joten tämän sivun lohkomäärät eivät enää päde niihin. Mittausohjelma on repositoriossa hakemistossa scripts/bench/, ja tiivistetyt tulokset on julkaistu JSON-muodossa, joten jokaisen sivun luvun voi tarkistaa ja ajon toistaa.

Yhteenveto

Kotoa NATin takaa (10. lokakuuta)

Yllä olevat ajot ovat julkisilla osoitteilla varustettujen datakeskusten välillä. Nämä ovat kotoa: pöytäkone 100 Mbit/s:n kuluttajaliittymällä reitittimensä NATin takana, ja Varsto asennettuna niin kuin käyttäjä sen asentaa (Linux-paketti, käyttäjän taustapalvelu). Siihen liittyi kaksi pilvikonetta: yksi Amsterdamissa julkisella osoitteella ja yksi Varsovassa, jossa oli kaksi laitetta verkkonimiavaruuksissa NATin takana, toinen kartio-NATin takana (Linuxin MASQUERADE säilyttää portin) ja toinen symmetrisen NATin takana (MASQUERADE satunnaisilla porteilla, mikä estää reiänlyönnin). Kuten edellä, Pariisin bucketissa oli vain kirjanpito ja tiedostoluettelot: sen lohkot poistettiin ennen jokaista noutoa, joten jokaisen lohkon piti tulla vertaiselta, ja jokainen tiedosto tarkistettiin SHA-256-tiivistettään vasten. Mittausohjelma on scripts/nat-test/home-nat.py.

Liittymä

Kotitietokone jaEdestakainen viiveTCP, yksi virta, kotiinTCP, yksi virta, kotoa
Amsterdam31 ms9.1 MB/s12.1 MB/s
Varsova21 ms10.6 MB/s11.9 MB/s
Bucket (Pariisi), rclone, 256 MiB–7.5 MB/s4.3 MB/s

100 Mbit/s on enintään 12.5 MB/s, joten se on katto kaikelle tällä liittymällä.

NATien läpi

STUN luokitteli kotireitittimen kartio-NATiksi. Kukin siirto siirsi yhden 64 MiB:n satunnaisista tavuista koostuvan tiedoston; tässä koossa synkronoinnin kiinteä kustannus (kirjanpito ja tiedostoluettelo bucketissa) on suuri osa ajasta.

MistäMihinVastaanottajan käyttämä reittiAikaNopeus
KotiAmsterdam (julkinen)suora, kodin NATin sisään12.2 s5.5 MB/s
AmsterdamKotisuora14.3 s4.7 MB/s
Varsova, kartio-NATKotisuora, NATista NATiin (reiänlyönti)13.3 s5.0 MB/s
KotiVarsova, kartio-NATsuora, NATista NATiin14.5 s4.6 MB/s
Varsova, symmetrinen NATKotivälitetty Amsterdamin kautta65.7 s1.0 MB/s
KotiVarsova, symmetrinen NATvälitetty Amsterdamin kautta65.3 s1.0 MB/s

Jokainen reitti toimi suunnitellusti: suoraan, kun NAT säilyttää osoitemuunnoksensa, ja välittäjän kautta jonkin käyttäjän oman tavoitettavan laitteen kautta, kun ei säilytä. Mitään valmistajan palvelinta ei tarvittu; laitteet löysivät toisensa bucketissa olevien tietueiden ja julkisten STUN-palvelinten avulla.

Varston Liikenne-kortti kotitietokoneella: viivat tästä laitteesta laitteisiin waw-cone (suora), ams (suora) ja waw-sym (ams:n kautta), taulukko, jossa reitti, osoite, nopeudet ja kokonaismäärät laitteittain, ja oikeassa yläkulmassa juuri päättyneen latauksen käyrä.Sama Liikenne-kortti tummassa tilassa.
Kotitietokoneen Liikenne-kortti sekunteja sen jälkeen, kun 512 MiB:n lataus Varsovan kartio-NAT-laitteelta päättyi (käyrä oikeassa yläkulmassa): Varsova ja Amsterdam tavoitettiin suoraan, symmetrisen NATin takana oleva laite Amsterdamin kautta.

Suuret tiedostot

Yksi 512 MiB:n satunnaisista tavuista koostuva tiedosto siirtoa kohden, pelkällä vertaisyhteydellä. Ensimmäinen sarake on versio 0.0.1-alpha.9 alla kuvatulla välittäjäkorjauksella; toisessa ovat mukana saman päivän latausmuutokset (yhteydet pidetään auki vertaiskohtaisesti, objektit lähetetään pakkaamatta niitä uudelleen ja ikkuna mukautuu 8 ja 32 lohkon välillä).

SiirtoEnnen muutoksiaMuutosten kanssaOsuus yhdestä TCP-virrastaOsuus 100 Mbit/s:sta
Amsterdam → koti4.7 MB/s8.0 MB/s88 %64 %
Varsova (kartio-NAT) → koti6.9 MB/s9.3 MB/s88 %74 %
Koti → Amsterdam8.7 MB/s9.3 MB/s77 %74 %
Koti → Varsova (kartio-NAT)–8.6 MB/s72 %69 %

Sama lataus bucketista

Toinen laite kotitietokoneella, vertaisyhteys pois päältä, nouti saman liittymän kautta 512 MiB:n tiedoston, jonka palvelin oli juuri lähettänyt bucketiin.

KirjoittajaBucketistaVertaisyhteydellä (yllä)Vertaisyhteys oli
Amsterdam6.1 MB/s8.0 MB/s1.3 kertaa niin nopea
Varsova (kartio-NAT)5.2 MB/s9.3 MB/s1.8 kertaa niin nopea

Datakeskusten välillä bucket pysyy mukana, koska bucket ja koneet ovat samassa nopeassa runkoverkossa. Kotoa katsottuna bucket on yksi kaukainen välietappi lisää omine pyyntökohtaisine kustannuksineen, kun taas vertainen lähettää suoraan liittymää pitkin.

Löydetty ja korjattu

Yhä hidasta

Rajoitukset: yksi kotiliittymä, yksi iltapäivä, yksi ajo tapausta kohden (Varsovasta kotiin toistettu ajo kuvakaappauksen aikana kulki 5.2 MB/s, ja Amsterdam oli hetken tavoittamattomissa); Varsovan NATit ovat Linuxin eivätkä kuluttajareitittimien; palvelimet olivat pieniä (Scaleway DEV1-M). Latausmuutokset ovat katselmoinnissa eikä niitä ole vielä julkaistu.

Mitä mitattiin

AineistoBucketista (S3)Vertaisyhteydellä
Suuret tiedostot (2 × 2 GiB)Amsterdam, Varsova, molemmat yhtä aikaa (9.10.)Amsterdam, Varsova (9.10.); molemmat yhtä aikaa (10.10.)
Paljon pieniä tiedostoja (10 000)Amsterdam, Varsova, molemmat yhtä aikaa (10.10.; 9.10. ajot säilytetty nimellä ”ennen ennakkohakua”)Amsterdam, Varsova, molemmat yhtä aikaa (10.10.)
Pakkautuva teksti (512 MiB)Amsterdam, Varsova (9.10.); molemmat yhtä aikaa (10.10.)Amsterdam, Varsova, molemmat yhtä aikaa (10.10.)
Kirjoittajan lähetys2 ajoa aineistoa kohden, yksi kumpanakin päivänäRAM-levy: 2 ajoa aineistoa kohden; paikallinen levy: 1 ajo aineistoa kohden

Kaksi ajoa tapausta kohden; taulukoiden ajat ovat niiden mediaani (kahden ajon keskiarvo), ja kummankin ajon aika on sen vieressä. Yksittäiset ajot on merkitty erikseen. Päivien välillä latauskoodi muuttui vain tavoilla, jotka eivät koske vertailtua tapausta: 9. lokakuuta suurten tiedostojen ja tekstin ajot hakevat tiedoston sisäiset lohkot täsmälleen kuten 10. lokakuuta koontiversio, ja paljon pieniä tiedostoja -tapauksen bucket-ajot toistettiin 10. lokakuuta, koska ennakkohaku tiedostojen yli on uusi. Kaksi viimeistä tapausta, pakkautuva teksti vertaisyhteydellä ja paljon pieniä tiedostoja bucketista, kumpikin kahdella lukijalla yhtä aikaa, ajettiin kolme tuntia muiden jälkeen uusilla koneilla yhdistetyllä koontiversiolla; bucket oli tuossa istunnossa selvästi nopeampi kuin aiemmassa.

Järjestelyt ja vertailutaso

Verkon vertailutaso

VälilläEdestakainen viive (ping)TCP, yksi virta (iperf3, Pariisi lähettää), 9.10. / 10.10.TCP, neljä virtaa
Pariisi – Amsterdam9.4 ms925 / 958 Mbit/s875 / 836 Mbit/s
Pariisi – Varsova33.4 ms738 / 777 Mbit/s949 / 909 Mbit/s
Amsterdam – Varsova20.6 ms––
LukijaS3: yksi 256 MiB:n objekti, yksi virta (rclone), 9.10. / 10.10.S3: 4 KiB:n objekteja peräkkäin, 9.10. / 10.10.
Pariisi91 / 59 MB/s7 / 45 ms kukin
Amsterdam26 / 21 MB/s16 / 107 ms kukin
Varsova52 / 15 MB/s52 / 122 ms kukin

Koneiden väliset yhteydet kuljettivat yhdessä TCP-virrassa 700–950 Mbit/s (90–120 MB/s), eikä mikään Varston siirroista päässyt lähellekään: kaikkia rajoittivat edestakaiset viiveet ja pyyntökohtainen työ. Bucketin oma nopeus vaihteli paljon päivästä toiseen (toinen mittaus tehtiin varhain aamulla); sen ajot vaihtelivat koko ajan enemmän kuin vertaisajot.

Aineistot

Mitä ”pelkkä vertaisyhteys” tarkoittaa

Varsto kysyy ensin vertaisilta ja vasta sitten tallennuspaikoilta, joten vertaismittauksessa on varmistettava, ettei bucket voi auttaa. Kun kirjoittaja oli lähettänyt tiedot ja bucket-ajot oli tehty, bucketista poistettiin kaikki objektit polun chunks/ alta. Bucketiin jäi se, mitä laitteet tarvitsevat löytääkseen toisensa ja tietääkseen, mitä on olemassa (allekirjoitettu kirjanpito, tiedostoluettelot, laite- ja vertaistietueet), mutta ei lainkaan tiedostojen sisältöä: lohko, jota mikään vertainen ei olisi pystynyt toimittamaan, olisi jättänyt tiedoston saavuttamattomiin. Sitten:

AjoLadattuja palojaVertaisiltaS3:staReitti
tiedostot, Amsterdam, yksin (×2)20 24020 2400writer-paris: suora
tiedostot, Amsterdam, kaksi lukijaa (×2)20 24020 2400waw-p2p-files-ams+waw-1: suora, writer-paris: suora
tiedostot, Varsova, kaksi lukijaa (×2)20 24020 2400: suora, ams-p2p-files-ams+waw-2: , writer-paris: suora
tiedostot, Varsova, yksin (×2)20 24020 2400writer-paris: suora
suuret, Amsterdam, yksin (×2)26 94626 9460writer-paris: suora
suuret, Amsterdam, kaksi lukijaa (×2)26 75826 7580: suora, writer-paris: suora
suuret, Varsova, kaksi lukijaa (×2)26 75826 7580ams-p2p-large-ams+waw-1: suora, ams-p2p-large-ams+waw-2: suora, writer-paris: suora
suuret, Varsova, yksin (×2)26 94626 9460writer-paris: suora
teksti, Amsterdam, yksin (×2)3 5443 5440writer-paris: suora
teksti, Amsterdam, kaksi lukijaa (×2)3 5443 5440: suora, writer-paris: suora
teksti, Varsova, kaksi lukijaa (×2)3 5443 5440ams-p2p-text-ams+waw-1: suora, writer-paris: suora
teksti, Varsova, yksin (×2)3 5443 5440writer-paris: suora

Suuret tiedostot

4 GiB kahdessa tiedostossa, satunnaista sisältöä, joten zstd tallentaa sen sellaisenaan.

Vertaisyhteys (Pariisin kirjoittajalta) S3-bucket Pariisissa (MB/s, suurempi on parempi)

Amsterdam, yksin Amsterdam, yksin, vertaisyhteys: 27.0 MB/s 27.0 Amsterdam, yksin, S3-bucket: 23.9 MB/s 23.9 Varsova, yksin Varsova, yksin, vertaisyhteys: 10.2 MB/s 10.2 Varsova, yksin, S3-bucket: 23.4 MB/s 23.4 Amsterdam, kaksi lukijaa Amsterdam, kaksi lukijaa, vertaisyhteys: 26.6 MB/s 26.6 Amsterdam, kaksi lukijaa, S3-bucket: 45.2 MB/s 45.2 Varsova, kaksi lukijaa Varsova, kaksi lukijaa, vertaisyhteys: 11.8 MB/s 11.8 Varsova, kaksi lukijaa, S3-bucket: 20.9 MB/s 20.9
LukijaVertaisyhteys: aikaMB/sS3: aikaMB/sP2P vs. S3
Amsterdam, yksin159 s (158 s / 161 s)27.0180 s (171 s / 190 s)23.91.1× nopeampi
Varsova, yksin423 s (420 s / 426 s)10.2190 s (155 s / 226 s)23.42.2× hitaampi
Amsterdam, kaksi lukijaa162 s (162 s / 161 s)26.695 s (90 s / 101 s)45.21.7× hitaampi
Varsova, kaksi lukijaa365 s (367 s / 362 s)11.8208 s (185 s / 232 s)20.91.8× hitaampi
KoontiversioLukijaAikaMB/s
Vertaisyhteys, QUIC kokeiltu ennen TCP:tä (yksi yhteys vertaista kohden), 10. lokakuutaAmsterdam, yksin230 s (229 s / 230 s)18.7
Vertaisyhteys, QUIC kokeiltu ennen TCP:tä (yksi yhteys vertaista kohden), 10. lokakuutaVarsova, yksin466 s (466 s)9.2

Amsterdamiin, yhdeksän millisekunnin päähän, vertaisyhteys voitti bucketin niukasti ja oli paljon tasaisempi: jokainen vertaisajo kesti 158–162 s, bucketin ajot 171 s ja 190 s. Varsovaan bucket oli yli kaksi kertaa nopeampi. Jokainen noin 300 KiB:n lohko on yksi HTTP-pyyntö uudella TCP-yhteydellä: kättely ja sitten TCP:n hidas aloitus kymmenestä paketista, joten lohko vaatii useita edestakaisia matkoja, oli yhteys kuinka nopea tahansa. 33 ms:n viiveellä tämä rajaa kahdeksan samanaikaista pyyntöä noin 10 MB/s:iin, ja juuri sen verran mitattiin. Bucketin HTTPS-yhteydet pidetään auki pyyntöjen välillä.

Kun molemmat lukijat latasivat yhtä aikaa, Varsova sai 4.30 GB:stään 2.97 GB Amsterdamilta (20 ms:n päässä, lähempänä kuin Pariisi) ja vain 1.3 GB Pariisista; Amsterdam, jolla lohkot olivat ensin, jakoi niitä samalla kun latasi itse. Varsova oli jopa hieman nopeampi kuin yksin (11.8 vs. 10.2 MB/s) ja Amsterdam yhtä nopea kuin yksin. Myös bucket palveli kahta lukijaa yhtä aikaa hidastamatta kumpaakaan (45 ja 21 MB/s); se on jaettua infrastruktuuria, joka on rakennettu monille lukijoille.

Lukijan oma työ: noin 40 s prosessoriaikaa 4 GiB:lle (purku, kaksi tiivistettä lohkoa kohden, kirjoitus), enintään 490 MB muistia. Pariisin laite käytti 40 s prosessoriaikaa kunkin 4 GiB:n jakamiseen, yksi ydin noin neljänneksen kuormitettuna.

Paljon pieniä tiedostoja

10 000 tiedostoa, kooltaan 1 KiB – 256 KiB. Kukin tiedosto on yksi lohko. Lokakuun 10. päivästä lähtien nouto hakee enintään 32 tulevan tiedoston lohkot yhdessä, kahdeksan pyyntöä kerrallaan, ennen kuin kirjoittaa ne yksitellen.

Vertaisyhteys (Pariisin kirjoittajalta) S3-bucket Pariisissa (tiedostoa/s, suurempi on parempi)

Amsterdam, yksin Amsterdam, yksin, vertaisyhteys: 90.2 tiedostoa/s 90.2 Amsterdam, yksin, S3-bucket: 33.7 tiedostoa/s 33.7 Varsova, yksin Varsova, yksin, vertaisyhteys: 38.4 tiedostoa/s 38.4 Varsova, yksin, S3-bucket: 34.2 tiedostoa/s 34.2 Amsterdam, kaksi lukijaa Amsterdam, kaksi lukijaa, vertaisyhteys: 70.3 tiedostoa/s 70.3 Amsterdam, kaksi lukijaa, S3-bucket: 64.7 tiedostoa/s 64.7 Varsova, kaksi lukijaa Varsova, kaksi lukijaa, vertaisyhteys: 38.6 tiedostoa/s 38.6 Varsova, kaksi lukijaa, S3-bucket: 53.5 tiedostoa/s 53.5
LukijaVertaisyhteys: aikaMB/stiedostoa/sS3: aikaMB/stiedostoa/sP2P vs. S3
Amsterdam, yksin111 s (111 s / 111 s)2.690.2299 s (323 s / 274 s)1.033.72.7× nopeampi
Varsova, yksin260 s (258 s / 263 s)1.138.4294 s (269 s / 320 s)1.034.21.1× nopeampi
Amsterdam, kaksi lukijaa156 s (202 s / 110 s)2.170.3156 s (142 s / 170 s)1.964.71.0× nopeampi
Varsova, kaksi lukijaa259 s (265 s / 253 s)1.138.6192 s (161 s / 223 s)1.653.51.3× hitaampi
KoontiversioLukijaAikaMB/stiedostoa/s
S3 ennen tiedostojen yli ulottuvaa ennakkohakua (yksi tiedosto kerrallaan), 9. lokakuutaAmsterdam, yksin404 s (313 s / 495 s)0.826.1
S3 ennen tiedostojen yli ulottuvaa ennakkohakua (yksi tiedosto kerrallaan), 9. lokakuutaAmsterdam, kaksi lukijaa381 s (381 s / 380 s)0.826.2
S3 ennen tiedostojen yli ulottuvaa ennakkohakua (yksi tiedosto kerrallaan), 9. lokakuutaVarsova, kaksi lukijaa528 s (494 s / 563 s)0.619.1
S3 ennen tiedostojen yli ulottuvaa ennakkohakua (yksi tiedosto kerrallaan), 9. lokakuutaVarsova, yksin596 s (536 s / 655 s)0.516.9

Amsterdamiin vertaisyhteys toimitti 90 tiedostoa sekunnissa, 2.7 kertaa bucketin 34. Varsovaan, kolme ja puoli kertaa kauemmas, kumpikin pääsi samaan 34–38 tiedostoon sekunnissa: siellä pyyntökohtainen edestakainen viive hallitsee kummallakin reitillä. Tiedostojen yli ulottuva ennakkohaku kaksinkertaisti bucketin nopeuden Varsovaan (17:stä 34 tiedostoon sekunnissa) ja auttoi Amsterdamiin (26:sta 34:ään). Kun lohkot ovat perillä, kunkin tiedoston kirjoittaminen (data synkronoidaan levylle, uudelleennimeäminen, kirjanpidon tapahtumat) maksaa näillä verkkolohkotaltioilla muutaman millisekunnin, mikä rajaa minkä tahansa lähteen muutamaan sataan tiedostoon sekunnissa.

Kun molemmat lukijat latasivat yhtä aikaa, Varsova oli yhtä nopea kuin yksin, ja Amsterdamin kaksi ajoa erosivat toisistaan (202 s ja 110 s): lukijoiden lohkot haetaan siltä vertaiselta, joka vastaa ensin, ja toinen ajo odotti toista lukijaa enemmän kuin toinen. Bucket, joka mitattiin kahdella lukijalla kolme tuntia myöhemmin, toimitti Amsterdamiin 64 tiedostoa sekunnissa ja Varsovaan 53: lähes kaksi kertaa sen, mitä se antoi yksittäisille lukijoille aiemmassa istunnossa. Sen nopeus riippuu kellonajasta enemmän kuin lukijoiden määrästä.

Pakkautuva teksti

512 MiB lokirivejä, tallennettuna 138 MiB:nä. Tavuja kulkee vähemmän, joten lukija saa sekunnissa enemmän tiedostoa kuin satunnaisella datalla.

Vertaisyhteys (Pariisin kirjoittajalta) S3-bucket Pariisissa (MB/s, suurempi on parempi)

Amsterdam, yksin Amsterdam, yksin, vertaisyhteys: 16.7 MB/s 16.7 Amsterdam, yksin, S3-bucket: 18.1 MB/s 18.1 Varsova, yksin Varsova, yksin, vertaisyhteys: 7.2 MB/s 7.2 Varsova, yksin, S3-bucket: 16.7 MB/s 16.7 Amsterdam, kaksi lukijaa Amsterdam, kaksi lukijaa, vertaisyhteys: 16.9 MB/s 16.9 Amsterdam, kaksi lukijaa, S3-bucket: 18.4 MB/s 18.4 Varsova, kaksi lukijaa Varsova, kaksi lukijaa, vertaisyhteys: 8.1 MB/s 8.1 Varsova, kaksi lukijaa, S3-bucket: 12.3 MB/s 12.3
LukijaVertaisyhteys: aikaMB/sS3: aikaMB/sP2P vs. S3
Amsterdam, yksin32 s (33 s / 31 s)16.736 s (21 s / 52 s)18.11.1× nopeampi
Varsova, yksin74 s (70 s / 79 s)7.232 s (32 s / 32 s)16.72.3× hitaampi
Amsterdam, kaksi lukijaa32 s (32 s / 31 s)16.931 s (23 s / 39 s)18.41.0× hitaampi
Varsova, kaksi lukijaa66 s (63 s / 69 s)8.163 s (28 s / 98 s)12.31.0× hitaampi

Tässä bucket oli hieman nopeampi Amsterdamiin ja yli kaksi kertaa nopeampi Varsovaan. Kahdella lukijalla vertaisyhteys antoi Amsterdamille samat 16.9 MB/s kuin yksin ja Varsovalle 8.1 MB/s, hieman enemmän kuin yksin; kahdesta ajosta ensimmäisessä Varsova sai kaksi kolmasosaa lohkoistaan Amsterdamilta, toisessa kaikki Pariisista. Lohkon jakava laite ei säilytä pakattua kopiota: se lukee tavallisen tiedoston ja pakkaa lohkon uudelleen zstd-tasolla 12 jokaista pyyntöä varten; Pariisin laite käytti 31 s prosessoriaikaa jokaista jaettua 512 MiB:tä kohden, kun satunnaisen datan 4 GiB vei 40 s. Bucket palauttaa tallennetun objektin sellaisenaan.

Kirjoittajan puoli

Ennen kuin mitään voi ladata, kirjoittaja pilkkoo tiedostonsa lohkoiksi, pakkaa ja salaa ne ja tallentaa ne. Kolme kohdetta näyttää, mihin aika kuluu: RAM-levy (pelkkä Varston oma työ), koneen levy (verkkolohkotaltio, jolle jokainen objekti kirjoitetaan levysynkronoinnilla) ja bucket.

AineistoKohdeKoontiversioAikaMB/sProsessoriaika (käyttäjä + järjestelmä)Muistin huippukäyttö
tiedostot: 10 000 tiedostoa, 0.27 GiBRAM-levy (tmpfs)mitattu koontiversio50 s (2 ajon mediaani)5.912 s (5 + 7)68 MiB
tiedostot: 10 000 tiedostoa, 0.27 GiBS3-bucket, sama aluemitattu koontiversio652 s (2 ajon mediaani)0.521 s (8 + 13)69 MiB
pienet: 50 000 tiedostoa, 1.36 GiBRAM-levy (tmpfs)mitattu koontiversio255 s (2 ajon mediaani)5.762 s (27 + 35)258 MiB
pienet: 50 000 tiedostoa, 1.36 GiBPaikallinen levy (verkkolohkotaltio)mitattu koontiversio468 s3.167 s (27 + 41)258 MiB
pienet: 50 000 tiedostoa, 1.36 GiBPaikallinen levy (verkkolohkotaltio)alpha.8 (ennen zstd-korjausta)515 s2.8109 s (31 + 78)253 MiB
suuret: 2 tiedostoa, 4.00 GiBS3-bucket, sama aluemitattu koontiversio932 s (2 ajon mediaani)4.680 s (37 + 43)108 MiB
isot: 5 tiedostoa, 12.00 GiBPaikallinen levy (verkkolohkotaltio)mitattu koontiversio418 s30.9197 s (85 + 112)147 MiB
isot: 5 tiedostoa, 12.00 GiBPaikallinen levy (verkkolohkotaltio)alpha.8 (ennen zstd-korjausta)694 s18.6483 s (110 + 373)137 MiB
teksti: 128 tiedostoa, 0.50 GiBRAM-levy (tmpfs)mitattu koontiversio45 s (2 ajon mediaani)12.044 s (41 + 2)68 MiB
teksti: 128 tiedostoa, 0.50 GiBPaikallinen levy (verkkolohkotaltio)mitattu koontiversio56 s9.645 s (42 + 3)68 MiB
teksti: 128 tiedostoa, 0.50 GiBPaikallinen levy (verkkolohkotaltio)alpha.8 (ennen zstd-korjausta)68 s7.956 s (43 + 13)68 MiB
teksti: 128 tiedostoa, 0.50 GiBS3-bucket, sama aluemitattu koontiversio145 s (2 ajon mediaani)3.745 s (41 + 4)77 MiB

Matkan varrella korjattua

Mittaus oli myös pullonkaulojen metsästystä. Nämä muutokset ovat mukana mitatuissa koontiversioissa, ja kullekin on testi:

OngelmaKorjausEnnenJälkeen
Lataus haki yhden lohkon kerrallaan: jokainen lohko odotti kokonaisen edestakaisen viiveen ennen kuin seuraavaa pyydettiin.Enintään kahdeksan tiedoston lohkoa matkalla yhtä aikaa vertaisilta tai tallennuspaikoista liukuvassa ikkunassa; ne tarkistetaan ja kirjoitetaan yhä järjestyksessä. S3-asiakas pitää riittävästi vapaita yhteyksiä niitä varten.Teksti bucketista Varsovaan: 122 s (4.4 MB/s)27.8 s (19.4 MB/s), 4.4 kertaa nopeampi (yksittäiset ajot; välivaiheet: kahdeksan lohkon kiinteät erät 104 s, vapaat yhteydet säilyttäen 61 s)
Pienet tiedostot kulkivat yksi kerrallaan: kukin tiedosto on yksi lohko, joten yllä oleva ikkuna ei koskaan vaikuttanut.Nouto hakee enintään 32 tulevan yhden lohkon tiedoston lohkot yhdessä (10.10.).10 000 tiedostoa bucketista Varsovaan: 596 s (17 tiedostoa/s)294 s (34 tiedostoa/s)
Vertaisyhteyden HTTP-palvelin vastasi yhteen pyyntöön kerrallaan, joten kahdeksan matkalla olevaa pyyntöä jonottivat palvelimella.Kahdeksaan pyyntöön vastataan yhtä aikaa.Suuret tiedostot vertaisyhteydellä Amsterdamiin: 363 s (11.8 MB/s), yksi ajo159 s (27.0 MB/s)
Jokaista lohkoa varten luotiin uusi zstd-konteksti; sen taulukot varattiin ja tyhjennettiin joka kerta, mikä oli enemmän työtä kuin lohkon pakkaaminen.Yksi konteksti säiettä kohden, uudelleenkäytettynä (tuloste on tavu tavulta sama, minkä testi tarkistaa).12 GiB paikalliselle levylle: 694 s, 483 s prosessoriaikaa418 s, 197 s prosessoriaikaa (yksittäiset ajot)
S3-asiakas hylkäsi kaikki yli 10 MiB:n vastaukset. Muutaman tuhannen tiedoston lähetyksen jälkeen kirjanpidon erä oli 13 MB, eikä mikään muu laite voinut liittyä tai synkronoida.Enintään 2 GiB:n vastaukset luetaan.Liittyminen epäonnistuiLiittyminen toimii; testi 12 MiB:n objektilla
Taustapalvelu piti jokaista avattua tiedostoa muutoksena: lohkojen jakaminen vertaisille, varmuuskopiointityökalu tai tiedostojen katseluohjelma käynnisti täyden synkronoinnin muutaman sekunnin välein.Avaaminen ja lukeminen eivät ole muutoksia; kirjoittamista varten avatun tiedoston sulkeminen on yhä muutos.90 synkronointia 11 minuutissa tiedostoja luettaessaKaikkien 10 000 tiedoston lukeminen: ei ylimääräistä synkronointia
Yhtä aikaa matkalla olevat pyynnöt avasivat kukin oman QUIC-yhteytensä vertaiseen, johon ei vielä ollut yhteyttä.Yksi yhteysyritys osoitetta kohden; muut odottavat ja käyttävät sitä yhdessä (testi tarkistaa, että koko noudolle riittää yksi yhteys).Löytyi QUICia testattaessa (alla)
Säilytetty QUIC-yhteys uudelleenkäynnistyneeseen vertaiseen epäonnistui jokaisella pyynnöllä, ja vertainen putosi pysyvästi seuraavalle reitille.Yhdistetään kerran uudelleen ja kysytään uudestaan.Löytyi QUICia testattaessa (alla)
Vanhalla reitillä valmistuneet pyynnöt saattoivat kumota vaihdon parempaan reittiin, jonka toinen pyyntö oli juuri tehnyt.Myöhään tullut vastaus säilyttää nykyisen reitin.Löytyi QUICia testattaessa (alla)

Kokeiltu ja peruttu: QUIC ensin

Koska TCP-reitti avaa yhteyden jokaista lohkoa kohden, QUIC vaikutti ratkaisulta: Varsto käyttää jo QUICia NATin takana oleviin vertaisiin, yksi yhteys vertaista kohden ja yksi virta pyyntöä kohden. Lokakuun 10. päivänä reittijärjestys muutettiin niin, että lähiverkon ulkopuolisille osoitteille kokeillaan QUICia ennen TCP:tä. Näillä koneilla se oli hitaampi ja käytti yli kaksi kertaa enemmän prosessoriaikaa:

Suuret tiedostot, vertaisyhteysTCP ensin (säilytetty)QUIC ensin (peruttu)
Amsterdam159 s, 27.0 MB/s; lukija 38 s prosessoriaikaa, Pariisi 40 s230 s, 18.7 MB/s (229 s / 230 s); lukija 98 s prosessoriaikaa, Pariisi 88 s
Varsova423 s, 10.2 MB/s466 s, 9.2 MB/s (yksi ajo); lukija 130 s prosessoriaikaa

TCP pysyy siis ensimmäisenä, ja QUIC on edelleen tie NATien läpi. Sitä, mihin QUIC-reitti aikansa menettää, ei käytettävissä olleessa ajassa löydetty; isäntäkone ei pudottanut yhtään UDP-pakettia. Kokeilu toi esiin myös puutteen, jota ei ole vielä korjattu: laitteen vertaistaulukko rakennetaan ennen kuin synkronointi lukee laiterekisterin, joten juuri liittynyt laite saa vertaisiltaan kieltävän vastauksen QUICin kautta niiden seuraavaan synkronointiin asti (TCP:n kautta sitä palvellaan heti).

Yhä hidasta, ja miksi

Milloin vertaisyhteys voittaa ja milloin bucket

Varsto käyttää tarkoituksella molempia, ja mittaukset näyttävät miksi.

Kustannukset

Scalewayn julkinen hinnasto (luettu 9. lokakuuta 2026, Pariisin alue, verottomat hinnat): Object Storage Standard Multi-AZ €0.000022 gigatavutunnilta (noin €0.016 gigatavukuukaudelta), pyynnöt sisältyvät, sisääntuleva liikenne sisältyy, ulosmenevästä liikenteestä ensimmäiset 75 GB kuukaudessa ilmaisia ja sen jälkeen €0.01 gigatavulta. Alueiden väliset siirrot (Pariisi – Amsterdam, Pariisi – Varsova) lasketaan ulosmeneväksi liikenteeksi; alueen sisällä ne ovat ilmaisia.

Yksi Amsterdamin lukija, joka lataa 4 GiB:n aineiston Pariisin bucketista, maksaa siis noin €0.04, kun ilmaiset 75 GB on käytetty, ja kotitalous, joka synkronoi 500 GB kuukaudessa bucketin alueen ulkopuolisille laitteille, maksaa ulosmenevästä liikenteestä noin €4 kuukaudessa. Vertaisyhteys siirtää samat tavut laitteiden omien yhteyksien kautta eikä lisää tallennuslaskuun mitään. Muut palveluntarjoajat veloittavat ulosmenevästä liikenteestä tai pyynnöistä enemmän; yllä kuvattu menetelmä soveltuu niihin sellaisenaan. Tämän mittauksen koneet (kolme instanssia hintaan €0.147 tunnilta, noin seitsemän ja puoli tuntia kahtena päivänä) maksoivat noin €3.50.

Mittauksen rajoitukset

Toistaminen: scripts/bench/p2p-bench.py luo koneet ja bucketin Scalewayn komentorivityökalulla, ajaa jokaisen vaiheen, kirjoittaa tiedoston results.jsonl ja poistaa lopuksi kaiken; report.py ja page.py muuttavat tulokset tämän sivun yhteenvedoksi ja taulukoiksi.