--- title: Prestandamätningar nav: How it works output: benchmarks/index.html description: Varsto uppmätt mellan Paris, Amsterdam och Warszawa den 9 och 10 oktober 2026, och från en hemanslutning bakom NAT: nedladdningar peer-to-peer från en annan enhet jämförda med samma nedladdningar från en S3-bucket, med metod, rådata, de åtgärder körningarna ledde till och deras begränsningar. ---

Prestandamätningar: peer-to-peer tvärs över Europa

En enhet i Paris har filerna. Enheter i Amsterdam och Warszawa ansluter till valvet med en tom mapp och laddar ned allt: en gång direkt från enheten i Paris och från varandra (peer-to-peer), en gång från en S3-bucket i Paris. Uppmätt den 9 och 10 oktober 2026 på hyrda molnmaskiner.

Den här sidan redovisar vad som mättes, hur, vad som begränsade det och vad som ändrades i Varsto till följd av det. Alla planerade fall har nu siffror, från två körningar vardera om inte en tabell säger annat. Siffrorna gäller en alfaversion: de beskriver koden som den såg ut de dagarna. Sedan 0.0.1-alpha.11 delas stora filer upp i större block (i genomsnitt 1 MiB från 32 MiB, 4 MiB från 1 GiB), så blockantalen här gäller inte längre för dem. Mätskriptet finns i repositoryt under scripts/bench/, och de sammanfattade resultaten publiceras som JSON, så att varje siffra på sidan kan kontrolleras och körningen upprepas.

Sammanfattning

Från ett hem bakom NAT (10 oktober)

Körningarna ovan är mellan datacenter med publika adresser. Dessa är från ett hem: en stationär dator på en konsumentanslutning på 100 Mbit/s bakom routerns NAT, med Varsto installerat så som en användare installerar det (Linux-paketet, en bakgrundstjänst för användaren). Två molnmaskiner anslöt till den: en i Amsterdam med publik adress, och en i Warszawa med två enheter i nätverksnamnrymder bakom NAT, en bakom en kon-NAT (Linux MASQUERADE behåller porten) och en bakom en symmetrisk NAT (MASQUERADE med slumpmässiga portar, vilket omintetgör hålslagning). Liksom ovan innehöll bucketen i Paris bara liggaren och fillistorna: före varje hämtning raderades dess block, så att varje block måste komma från en annan enhet, och varje fil kontrollerades mot sin SHA-256. Mätskriptet är scripts/nat-test/home-nat.py.

Linjen

Hemdatorn ochRundresaTCP, en ström, till hemmetTCP, en ström, från hemmet
Amsterdam31 ms9.1 MB/s12.1 MB/s
Warszawa21 ms10.6 MB/s11.9 MB/s
Bucketen (Paris), rclone, 256 MiB–7.5 MB/s4.3 MB/s

100 Mbit/s är högst 12.5 MB/s, så det är taket för allt på den här linjen.

Genom NAT

STUN klassade hemroutern som en kon-NAT. Varje överföring flyttade en fil på 64 MiB med slumpmässiga byte; vid den storleken utgör den fasta kostnaden för en synkronisering (liggare och fillista i bucketen) en stor del av tiden.

FrånTillVäg som mottagaren användeTidHastighet
HemmetAmsterdam (publik)direkt, in genom hemmets NAT12.2 s5.5 MB/s
AmsterdamHemmetdirekt14.3 s4.7 MB/s
Warszawa, kon-NATHemmetdirekt, NAT till NAT (hålslagning)13.3 s5.0 MB/s
HemmetWarszawa, kon-NATdirekt, NAT till NAT14.5 s4.6 MB/s
Warszawa, symmetrisk NATHemmetvia relä i Amsterdam65.7 s1.0 MB/s
HemmetWarszawa, symmetrisk NATvia relä i Amsterdam65.3 s1.0 MB/s

Varje väg fungerade så som designen säger: direkt där en NAT behåller sin mappning, via ett relä genom en av användarens egna nåbara enheter där den inte gör det. Ingen leverantörsserver var inblandad; enheterna hittade varandra genom poster i bucketen och publika STUN-servrar.

Varstos trafikkort på hemdatorn: linjer från den här enheten till waw-cone (direkt), ams (direkt) och waw-sym (via ams), en tabell med väg, adress, hastigheter och summor per enhet, och uppe till höger kurvan för en nedladdning som just avslutats.Samma trafikkort i mörkt läge.
Hemdatorns trafikkort några sekunder efter en nedladdning på 512 MiB från enheten bakom kon-NAT i Warszawa (kurvan uppe till höger): Warszawa och Amsterdam nås direkt, enheten bakom symmetrisk NAT via Amsterdam.

Stora filer

En fil på 512 MiB med slumpmässiga byte per överföring, enbart peer-to-peer. Första kolumnen är version 0.0.1-alpha.9 med reläåtgärden nedan; den andra lägger till samma dags ändringar i nedladdningen (anslutningar hålls öppna per enhet, objekt skickas utan att komprimeras på nytt, ett fönster som anpassar sig mellan 8 och 32 block).

ÖverföringFöre ändringarnaMed ändringarnaAndel av en TCP-strömAndel av 100 Mbit/s
Amsterdam → hemmet4.7 MB/s8.0 MB/s88 %64 %
Warszawa (kon-NAT) → hemmet6.9 MB/s9.3 MB/s88 %74 %
Hemmet → Amsterdam8.7 MB/s9.3 MB/s77 %74 %
Hemmet → Warszawa (kon-NAT)–8.6 MB/s72 %69 %

Samma nedladdning från bucketen

En andra enhet på hemdatorn, med peer-to-peer avstängt, hämtade en fil på 512 MiB som en server just hade laddat upp till bucketen, över samma linje.

Skriven avFrån bucketenPeer-to-peer (ovan)Peer-to-peer var
Amsterdam6.1 MB/s8.0 MB/s1.3 gånger så snabb
Warszawa (kon-NAT)5.2 MB/s9.3 MB/s1.8 gånger så snabb

Mellan datacenter hänger bucketen med, eftersom bucketen och maskinerna sitter på samma snabba stamnät. Från ett hem är bucketen ytterligare ett avlägset steg med sin egen kostnad per begäran, medan en annan enhet skickar rakt ned i linjen.

Hittat och åtgärdat

Fortfarande långsamt

Begränsningar: en hemanslutning, en eftermiddag, en körning per fall (en upprepning av Warszawa till hemmet under skärmbilden gick i 5.2 MB/s, med Amsterdam tillfälligt onåbart); NAT i Warszawa är Linux egen, inte en konsumentrouters; servrarna var små (Scaleway DEV1-M). Ändringarna i nedladdningen granskas och är ännu inte släppta.

Vad som mättes

DatamängdFrån bucketen (S3)Peer-to-peer
Stora filer (2 × 2 GiB)Amsterdam, Warszawa, båda samtidigt (9 okt)Amsterdam, Warszawa (9 okt); båda samtidigt (10 okt)
Många små filer (10 000)Amsterdam, Warszawa, båda samtidigt (10 okt; körningarna från 9 okt behålls som ”före förhandshämtning”)Amsterdam, Warszawa, båda samtidigt (10 okt)
Komprimerbar text (512 MiB)Amsterdam, Warszawa (9 okt); båda samtidigt (10 okt)Amsterdam, Warszawa, båda samtidigt (10 okt)
Skrivarens uppladdning2 körningar per mängd, en varje dagRAM-disk: 2 körningar per mängd; lokal disk: 1 körning per mängd

Två körningar per fall; tiderna i tabellerna är deras median (medelvärdet av två), med båda körningarna bredvid. Enskilda körningar anges som sådana. Mellan de två dagarna ändrades nedladdningskoden bara på sätt som inte berör de jämförda fallen: körningarna med stora filer och text den 9 oktober hämtar block inom en fil exakt som versionen från den 10 oktober gör, och bucketkörningarna med många små filer upprepades den 10 oktober eftersom förhandshämtning över filgränserna är ny. De två sista fallen, komprimerbar text peer-to-peer och många små filer från bucketen, båda med två läsare samtidigt, kördes tre timmar efter de andra på nya maskiner med den sammanslagna versionen; bucketen var tydligt snabbare under den sessionen än under den tidigare.

Uppställning och referensvärden

Nätverkets referensvärden

MellanRundresa (ping)TCP, en ström (iperf3, Paris skickar), 9 / 10 oktTCP, fyra strömmar
Paris – Amsterdam9.4 ms925 / 958 Mbit/s875 / 836 Mbit/s
Paris – Warszawa33.4 ms738 / 777 Mbit/s949 / 909 Mbit/s
Amsterdam – Warszawa20.6 ms––
LäsareS3: ett objekt på 256 MiB, en ström (rclone), 9 / 10 oktS3: objekt på 4 KiB efter varandra, 9 / 10 okt
Paris91 / 59 MB/s7 / 45 ms styck
Amsterdam26 / 21 MB/s16 / 107 ms styck
Warszawa52 / 15 MB/s52 / 122 ms styck

Förbindelserna mellan maskinerna klarade 700 till 950 Mbit/s (90 till 120 MB/s) i en TCP-ström, och ingen av Varstos överföringar kom i närheten: alla begränsades av rundresor och arbete per begäran. Bucketens egen hastighet varierade mycket från en dag till nästa (den andra mätningen gjordes tidigt på morgonen); dess körningar varierade genomgående mer än peer-to-peer-körningarna.

Datamängder

Vad ”bara peer-to-peer” betyder

Varsto frågar andra enheter först och lagringsplatser i andra hand, så en peer-to-peer-mätning måste se till att bucketen inte kan hjälpa till. När skrivaren hade laddat upp och bucketkörningarna var klara raderades varje objekt under chunks/ från bucketen. Bucketen behöll det som enheterna behöver för att hitta varandra och veta vad som finns (signerad liggare, fillistor, enhets- och peer-poster), men inget filinnehåll: ett block som ingen enhet kunde leverera skulle ha gjort filen otillgänglig. Sedan:

KörningNedladdade chunksFrån andra enheterFrån S3Väg
filer, Amsterdam, ensam (×2)20 24020 2400writer-paris: direkt
filer, Amsterdam, båda samtidigt (×2)20 24020 2400waw-p2p-files-ams+waw-1: direkt, writer-paris: direkt
filer, Warszawa, båda samtidigt (×2)20 24020 2400: direkt, ams-p2p-files-ams+waw-2: , writer-paris: direkt
filer, Warszawa, ensam (×2)20 24020 2400writer-paris: direkt
stora, Amsterdam, ensam (×2)26 94626 9460writer-paris: direkt
stora, Amsterdam, båda samtidigt (×2)26 75826 7580: direkt, writer-paris: direkt
stora, Warszawa, båda samtidigt (×2)26 75826 7580ams-p2p-large-ams+waw-1: direkt, ams-p2p-large-ams+waw-2: direkt, writer-paris: direkt
stora, Warszawa, ensam (×2)26 94626 9460writer-paris: direkt
text, Amsterdam, ensam (×2)3 5443 5440writer-paris: direkt
text, Amsterdam, båda samtidigt (×2)3 5443 5440: direkt, writer-paris: direkt
text, Warszawa, båda samtidigt (×2)3 5443 5440ams-p2p-text-ams+waw-1: direkt, writer-paris: direkt
text, Warszawa, ensam (×2)3 5443 5440writer-paris: direkt

Stora filer

4 GiB i två filer, slumpmässigt innehåll, så zstd lagrar det som det är.

Peer-to-peer (från skrivaren i Paris) S3-bucket i Paris (MB/s, mer är bättre)

Amsterdam, ensam Amsterdam, ensam, peer-to-peer: 27.0 MB/s 27.0 Amsterdam, ensam, S3-bucket: 23.9 MB/s 23.9 Warszawa, ensam Warszawa, ensam, peer-to-peer: 10.2 MB/s 10.2 Warszawa, ensam, S3-bucket: 23.4 MB/s 23.4 Amsterdam, båda samtidigt Amsterdam, båda samtidigt, peer-to-peer: 26.6 MB/s 26.6 Amsterdam, båda samtidigt, S3-bucket: 45.2 MB/s 45.2 Warszawa, båda samtidigt Warszawa, båda samtidigt, peer-to-peer: 11.8 MB/s 11.8 Warszawa, båda samtidigt, S3-bucket: 20.9 MB/s 20.9
LäsarePeer-to-peer: tidMB/sS3: tidMB/sP2P mot S3
Amsterdam, ensam159 s (158 s / 161 s)27.0180 s (171 s / 190 s)23.91.1× snabbare
Warszawa, ensam423 s (420 s / 426 s)10.2190 s (155 s / 226 s)23.42.2× långsammare
Amsterdam, båda samtidigt162 s (162 s / 161 s)26.695 s (90 s / 101 s)45.21.7× långsammare
Warszawa, båda samtidigt365 s (367 s / 362 s)11.8208 s (185 s / 232 s)20.91.8× långsammare
VersionLäsareTidMB/s
Peer-to-peer med QUIC provat före TCP (en anslutning per enhet), 10 oktoberAmsterdam, ensam230 s (229 s / 230 s)18.7
Peer-to-peer med QUIC provat före TCP (en anslutning per enhet), 10 oktoberWarszawa, ensam466 s (466 s)9.2

Till Amsterdam, nio millisekunder bort, slog peer-to-peer bucketen med liten marginal och var betydligt jämnare: varje peer-to-peer-körning tog 158 s till 162 s, bucketens 171 s och 190 s. Till Warszawa var bucketen mer än dubbelt så snabb. Varje block på omkring 300 KiB är en HTTP-begäran på en ny TCP-anslutning: en handskakning, sedan TCP slow start från tio paket, så ett block behöver flera rundresor hur snabb förbindelsen än är. Vid 33 ms begränsar det åtta samtidiga begäranden till ungefär 10 MB/s, vilket är just vad som uppmättes. Bucketens HTTPS-anslutningar hålls öppna mellan begärandena.

Med båda läsarna samtidigt hämtade Warszawa 2.97 GB av sina 4.30 GB från Amsterdam (20 ms bort, närmare än Paris) och bara 1.3 GB från Paris; Amsterdam, som hade blocken först, levererade dem medan det laddade ned. Warszawa var till och med lite snabbare än ensamt (11.8 mot 10.2 MB/s) och Amsterdam lika snabbt som ensamt. Bucketen betjänade också två läsare samtidigt utan att någon av dem blev långsammare (45 och 21 MB/s); den är delad infrastruktur byggd för många läsare.

Läsarens eget arbete: omkring 40 s CPU-tid för 4 GiB (dekryptering, två hashar per block, skrivning), högst 490 MB minne. Enheten i Paris använde 40 s CPU-tid för att leverera varje 4 GiB, en kärna ungefär till en fjärdedel upptagen.

Många små filer

10 000 filer på 1 KiB till 256 KiB. Varje fil är ett block. Sedan den 10 oktober hämtar en hämtning blocken för upp till 32 kommande filer tillsammans, åtta begäranden åt gången, innan de skrivs en och en.

Peer-to-peer (från skrivaren i Paris) S3-bucket i Paris (filer/s, mer är bättre)

Amsterdam, ensam Amsterdam, ensam, peer-to-peer: 90.2 filer/s 90.2 Amsterdam, ensam, S3-bucket: 33.7 filer/s 33.7 Warszawa, ensam Warszawa, ensam, peer-to-peer: 38.4 filer/s 38.4 Warszawa, ensam, S3-bucket: 34.2 filer/s 34.2 Amsterdam, båda samtidigt Amsterdam, båda samtidigt, peer-to-peer: 70.3 filer/s 70.3 Amsterdam, båda samtidigt, S3-bucket: 64.7 filer/s 64.7 Warszawa, båda samtidigt Warszawa, båda samtidigt, peer-to-peer: 38.6 filer/s 38.6 Warszawa, båda samtidigt, S3-bucket: 53.5 filer/s 53.5
LäsarePeer-to-peer: tidMB/sfiler/sS3: tidMB/sfiler/sP2P mot S3
Amsterdam, ensam111 s (111 s / 111 s)2.690.2299 s (323 s / 274 s)1.033.72.7× snabbare
Warszawa, ensam260 s (258 s / 263 s)1.138.4294 s (269 s / 320 s)1.034.21.1× snabbare
Amsterdam, båda samtidigt156 s (202 s / 110 s)2.170.3156 s (142 s / 170 s)1.964.71.0× snabbare
Warszawa, båda samtidigt259 s (265 s / 253 s)1.138.6192 s (161 s / 223 s)1.653.51.3× långsammare
VersionLäsareTidMB/sfiler/s
S3 före förhandshämtning över filgränserna (en fil i taget), 9 oktoberAmsterdam, ensam404 s (313 s / 495 s)0.826.1
S3 före förhandshämtning över filgränserna (en fil i taget), 9 oktoberAmsterdam, båda samtidigt381 s (381 s / 380 s)0.826.2
S3 före förhandshämtning över filgränserna (en fil i taget), 9 oktoberWarszawa, båda samtidigt528 s (494 s / 563 s)0.619.1
S3 före förhandshämtning över filgränserna (en fil i taget), 9 oktoberWarszawa, ensam596 s (536 s / 655 s)0.516.9

Till Amsterdam levererade peer-to-peer 90 filer i sekunden, 2.7 gånger bucketens 34. Till Warszawa, tre och en halv gånger längre bort, kom båda upp i samma 34 till 38 filer i sekunden: där dominerar rundresan per begäran, på båda vägarna. Förhandshämtning över filgränserna fördubblade bucketens hastighet till Warszawa (från 17 till 34 filer i sekunden) och hjälpte till Amsterdam (26 till 34). När blocken väl är på plats kostar skrivningen av varje fil (data synkade till disk, ett namnbyte, händelser i liggaren) några millisekunder på dessa nätverksblockvolymer, vilket begränsar varje källa till några hundra filer i sekunden.

Med båda läsarna samtidigt var Warszawa lika snabbt som ensamt, och Amsterdams två körningar skilde sig åt (202 s och 110 s): läsarnas block hämtas från den enhet som svarar först, och den ena körningen väntade mer på den andra läsaren än den andra körningen gjorde. Bucketen, uppmätt med båda läsarna tre timmar senare, levererade 64 filer i sekunden till Amsterdam och 53 till Warszawa: nästan dubbelt så mycket som den gav enskilda läsare i den tidigare sessionen. Dess hastighet beror mer på tiden på dygnet än på antalet läsare.

Komprimerbar text

512 MiB loggrader, lagrade som 138 MiB. Färre byte färdas, så en läsare får mer fil per sekund än med slumpmässiga data.

Peer-to-peer (från skrivaren i Paris) S3-bucket i Paris (MB/s, mer är bättre)

Amsterdam, ensam Amsterdam, ensam, peer-to-peer: 16.7 MB/s 16.7 Amsterdam, ensam, S3-bucket: 18.1 MB/s 18.1 Warszawa, ensam Warszawa, ensam, peer-to-peer: 7.2 MB/s 7.2 Warszawa, ensam, S3-bucket: 16.7 MB/s 16.7 Amsterdam, båda samtidigt Amsterdam, båda samtidigt, peer-to-peer: 16.9 MB/s 16.9 Amsterdam, båda samtidigt, S3-bucket: 18.4 MB/s 18.4 Warszawa, båda samtidigt Warszawa, båda samtidigt, peer-to-peer: 8.1 MB/s 8.1 Warszawa, båda samtidigt, S3-bucket: 12.3 MB/s 12.3
LäsarePeer-to-peer: tidMB/sS3: tidMB/sP2P mot S3
Amsterdam, ensam32 s (33 s / 31 s)16.736 s (21 s / 52 s)18.11.1× snabbare
Warszawa, ensam74 s (70 s / 79 s)7.232 s (32 s / 32 s)16.72.3× långsammare
Amsterdam, båda samtidigt32 s (32 s / 31 s)16.931 s (23 s / 39 s)18.41.0× långsammare
Warszawa, båda samtidigt66 s (63 s / 69 s)8.163 s (28 s / 98 s)12.31.0× långsammare

Här var bucketen lite snabbare till Amsterdam och mer än dubbelt så snabb till Warszawa. Med båda läsarna samtidigt gav peer-to-peer Amsterdam samma 16.9 MB/s som ensamt och Warszawa 8.1 MB/s, något mer än ensamt; i den första av de två körningarna hämtade Warszawa två tredjedelar av sina block från Amsterdam, i den andra alla från Paris. En enhet som levererar ett block behåller inte den komprimerade kopian: den läser den okomprimerade filen och komprimerar blocket på nytt, med zstd nivå 12, för varje begäran; enheten i Paris använde 31 s CPU-tid per levererade 512 MiB, mot 40 s för 4 GiB slumpmässiga data. Bucketen returnerar det lagrade objektet som det är.

Skrivarens sida

Innan något kan laddas ned delar skrivaren upp sina filer i block, komprimerar, krypterar och lagrar dem. Tre destinationer visar var tiden går: en RAM-disk (bara Varstos eget arbete), maskinens disk (en nätverksblockvolym, där varje objekt skrivs med en synkning till disk) och bucketen.

DatamängdDestinationVersionTidMB/sCPU (användare + system)Minnestopp
filer: 10 000 filer, 0.27 GiBRAM-disk (tmpfs)uppmätt version50 s (median av 2)5.912 s (5 + 7)68 MiB
filer: 10 000 filer, 0.27 GiBS3-bucket, samma regionuppmätt version652 s (median av 2)0.521 s (8 + 13)69 MiB
små: 50 000 filer, 1.36 GiBRAM-disk (tmpfs)uppmätt version255 s (median av 2)5.762 s (27 + 35)258 MiB
små: 50 000 filer, 1.36 GiBLokal disk (nätverksblockvolym)uppmätt version468 s3.167 s (27 + 41)258 MiB
små: 50 000 filer, 1.36 GiBLokal disk (nätverksblockvolym)alpha.8 (före zstd-åtgärden)515 s2.8109 s (31 + 78)253 MiB
stora: 2 filer, 4.00 GiBS3-bucket, samma regionuppmätt version932 s (median av 2)4.680 s (37 + 43)108 MiB
mycket stora: 5 filer, 12.00 GiBLokal disk (nätverksblockvolym)uppmätt version418 s30.9197 s (85 + 112)147 MiB
mycket stora: 5 filer, 12.00 GiBLokal disk (nätverksblockvolym)alpha.8 (före zstd-åtgärden)694 s18.6483 s (110 + 373)137 MiB
text: 128 filer, 0.50 GiBRAM-disk (tmpfs)uppmätt version45 s (median av 2)12.044 s (41 + 2)68 MiB
text: 128 filer, 0.50 GiBLokal disk (nätverksblockvolym)uppmätt version56 s9.645 s (42 + 3)68 MiB
text: 128 filer, 0.50 GiBLokal disk (nätverksblockvolym)alpha.8 (före zstd-åtgärden)68 s7.956 s (43 + 13)68 MiB
text: 128 filer, 0.50 GiBS3-bucket, samma regionuppmätt version145 s (median av 2)3.745 s (41 + 4)77 MiB

Åtgärdat på vägen

Mätningen var också en jakt på flaskhalsar. Dessa ändringar finns i de uppmätta versionerna, var och en med ett test:

ProblemÅtgärdFöreEfter
En nedladdning hämtade ett block i taget: varje block väntade en hel rundresa innan nästa begärdes.Upp till åtta block i en fil samtidigt på väg, från andra enheter eller lagringsplatser, i ett glidande fönster; de kontrolleras och skrivs fortfarande i ordning. S3-klienten håller tillräckligt många vilande anslutningar för dem.Text från bucketen till Warszawa: 122 s (4.4 MB/s)27.8 s (19.4 MB/s), 4.4 gånger snabbare (enskilda körningar; steg på vägen: fasta omgångar om åtta 104 s, med vilande anslutningar kvar 61 s)
Små filer gick en i taget: varje fil är ett block, så fönstret ovan gällde aldrig.En hämtning hämtar blocken för upp till 32 kommande filer med ett block var tillsammans (10 okt).10 000 filer från bucketen till Warszawa: 596 s (17 filer/s)294 s (34 filer/s)
Peer-to-peer-servern för HTTP besvarade en begäran i taget, så åtta samtidiga begäranden köade hos servern.Åtta begäranden besvaras samtidigt.Stora filer peer-to-peer till Amsterdam: 363 s (11.8 MB/s), en körning159 s (27.0 MB/s)
En ny zstd-kontext skapades för varje block; dess tabeller allokerades och nollställdes varje gång, vilket var mer arbete än att komprimera blocket.En kontext per tråd som återanvänds (utdata är identiska byte för byte, vilket ett test kontrollerar).12 GiB till lokal disk: 694 s, 483 s CPU418 s, 197 s CPU (enskilda körningar)
S3-klienten vägrade alla svar över 10 MiB. Efter en uppladdning av några tusen filer var liggarens batch 13 MB, och ingen annan enhet kunde ansluta eller synkronisera.Svar på upp till 2 GiB läses.Anslutningen misslyckadesAnslutningen fungerar; test med ett objekt på 12 MiB
Bakgrundstjänsten behandlade varje öppnad fil som en ändring: att leverera block till andra enheter, ett säkerhetskopieringsverktyg eller ett filvisningsprogram startade en fullständig synkronisering med några sekunders mellanrum.Att öppna och läsa är inga ändringar; att stänga en fil som öppnats för skrivning är det fortfarande.90 synkroniseringar på 11 minuter medan filer lästesLäsning av alla 10 000 filer: ingen extra synkronisering
Samtidiga begäranden öppnade var och en sin egen QUIC-anslutning till en enhet som de ännu inte hade någon anslutning till.Ett anslutningsförsök per adress; de andra väntar och delar på det (ett test kontrollerar en enda anslutning för en hel hämtning).Hittat vid test av QUIC (nedan)
En kvarhållen QUIC-anslutning till en enhet som hade startats om fick varje begäran över den att misslyckas, och enheten föll permanent tillbaka till nästa väg.Anslut på nytt en gång och fråga igen.Hittat vid test av QUIC (nedan)
Begäranden som blev klara på en gammal väg kunde ångra ett byte till en bättre väg som en annan begäran just hade gjort.Ett sent svar behåller den aktuella vägen.Hittat vid test av QUIC (nedan)

Provat och återställt: QUIC först

Eftersom TCP-vägen öppnar en anslutning per block såg QUIC ut som botemedlet: Varsto talar redan QUIC med enheter bakom NAT, med en anslutning per enhet och en ström per begäran. Den 10 oktober ändrades vägordningen så att QUIC provas före TCP för adresser utanför det lokala nätverket. Det var långsammare på dessa maskiner och använde mer än dubbelt så mycket CPU-tid:

Stora filer, peer-to-peerTCP först (behållet)QUIC först (återställt)
Amsterdam159 s, 27.0 MB/s; läsaren 38 s CPU, Paris 40 s230 s, 18.7 MB/s (229 s / 230 s); läsaren 98 s CPU, Paris 88 s
Warszawa423 s, 10.2 MB/s466 s, 9.2 MB/s (en körning); läsaren 130 s CPU

Så TCP förblir förstahandsvalet och QUIC är fortsatt vägen genom NAT. Var QUIC-vägen förlorar sin tid hann inte utredas; värden tappade inga UDP-paket. Experimentet avslöjade också en brist som ännu inte är åtgärdad: en enhets peer-tabell byggs innan en synkronisering läser enhetsregistret, så en enhet som just har anslutit nekas över QUIC av de andra enheterna fram till deras nästa synkronisering (över TCP betjänas den direkt).

Fortfarande långsamt, och varför

När peer-to-peer vinner, och när bucketen gör det

Varsto använder båda med avsikt, och mätningarna visar varför.

Kostnad

Scaleways publika prislista (läst den 9 oktober 2026, regionen Paris, exklusive moms): Object Storage Standard Multi-AZ €0.000022 per GB-timme (omkring €0.016 per GB-månad), begäranden ingår, inkommande trafik ingår, utgående trafik gratis för de första 75 GB i månaden och därefter €0.01 per GB. Överföringar mellan regioner (Paris – Amsterdam, Paris – Warszawa) räknas som utgående trafik; inom en region är de gratis.

En läsare i Amsterdam som laddar ned mängden på 4 GiB från bucketen i Paris kostar alltså omkring €0.04 när de fria 75 GB är förbrukade, och ett hushåll som synkroniserar 500 GB i månaden till enheter utanför bucketens region betalar omkring €4 i månaden för utgående trafik. Peer-to-peer flyttar samma byte över enheternas egna anslutningar och lägger inget till lagringsräkningen. Andra leverantörer tar mer betalt för utgående trafik eller per begäran; metoden ovan gäller för dem oförändrad. Maskinerna för den här mätningen (tre instanser à €0.147 i timmen, omkring sju och en halv timme under de två dagarna) kostade omkring €3.50.

Begränsningar i den här mätningen

Upprepa: scripts/bench/p2p-bench.py skapar maskinerna och bucketen med Scaleways kommandoradsverktyg, kör varje steg, skriver results.jsonl och raderar allt igen; report.py och page.py gör om resultaten till sammanfattningen och tabellerna på den här sidan.