Förstå och optimera prestanda för Azure-filresurser
Azure Files kan uppfylla prestandakraven för de flesta program och användningsfall. Den här artikeln beskriver de olika faktorer som kan påverka filresursprestanda och hur du optimerar prestanda för Azure-filresurser för din arbetsbelastning.
Gäller för
Typ av filresurs | SMB | NFS |
---|---|---|
Standardfilresurser (GPv2), LRS/ZRS | ||
Standardfilresurser (GPv2), GRS/GZRS | ||
Premiumfilresurser (FileStorage), LRS/ZRS |
Ordlista
Innan du läser den här artikeln är det bra att förstå några viktiga termer som rör lagringsprestanda:
I/O-åtgärder per sekund (IOPS)
IOPS- eller indata-/utdataåtgärder per sekund mäter antalet filsystemåtgärder per sekund. Termen "I/O" kan ändras med termerna "operation" och "transaction" i Azure Files-dokumentationen.
I/O-storlek
I/O-storlek, som ibland kallas blockstorlek, är storleken på den begäran som ett program använder för att utföra en enda indata-/utdataåtgärd (I/O) på lagringen. Beroende på programmet kan I/O-storleken variera från mycket små storlekar, till exempel 4 KiB till mycket större storlekar. I/O-storlek spelar en viktig roll för uppnåeligt dataflöde.
Dataflöde
Dataflödet mäter antalet bitar som läses från eller skrivs till lagringen per sekund och mäts i mebibyte per sekund (MiB/s). Om du vill beräkna dataflödet multiplicerar du IOPS med I/O-storlek. Till exempel 10 000 IOPS * 1 MiB I/O-storlek = 10 GiB/s, medan 10 000 IOPS * 4 KiB I/O-storlek = 38 MiB/s.
Svarstider
Svarstid är synonymt med fördröjning och mäts vanligtvis i millisekunder (ms). Det finns två typer av svarstider: svarstid från slutpunkt till slutpunkt och tjänstfördröjning. Mer information finns i Svarstid.
Ködjup
Ködjup är antalet väntande I/O-begäranden som en lagringsresurs kan hantera samtidigt. Mer information finns i Ködjup.
Välja en prestandanivå baserat på användningsmönster
Azure Files tillhandahåller en mängd olika lagringsnivåer som hjälper dig att minska kostnaderna genom att du kan lagra data på lämplig prestanda- och prisnivå. På den högsta nivån erbjuder Azure Files två prestandanivåer: standard och premium. Standardfilresurser finns på ett lagringssystem som backas upp av hårddiskar (HDD), medan premiumfilresurser backas upp av SSD (Solid State Drives) för bättre prestanda. Standardfilresurser har flera lagringsnivåer (transaktionsoptimerad, frekvent och lågfrekvent) som du sömlöst kan flytta mellan för att maximera lagrings- och transaktionspriserna för data i vila. Du kan dock inte flytta mellan standard- och premiumnivåer utan att fysiskt migrera dina data mellan olika lagringskonton.
När du väljer mellan standard- och Premium-filresurser är det viktigt att förstå kraven för det förväntade användningsmönstret som du planerar att köra på Azure Files. Om du behöver stora mängder IOPS, extremt snabba dataöverföringshastigheter eller mycket låg svarstid bör du välja Premium Azure-filresurser.
I följande tabell sammanfattas de förväntade prestandamålen mellan standard och Premium. Mer information finns i Skalbarhets- och prestandamål för Azure Files.
Krav för användningsmönster | Standard | Premium |
---|---|---|
Skrivsvarstid (ensiffriga millisekunder) | Ja | Ja |
Lässvarstid (ensiffriga millisekunder) | Nej | Ja |
Premium-filresurser erbjuder en etableringsmodell som garanterar följande prestandaprofil baserat på resursstorlek. Mer information finns i Etablerad modell. Burst-krediter ackumuleras i en burst-bucket när trafiken för filresursen ligger under baslinje-IOPS. Intjänade krediter används senare för att aktivera bursting när åtgärder skulle överskrida baslinje-IOPS.
Kapacitet (GiB) | Baslinje-IOPS | Burst-IOPS | Burst-krediter | Dataflöde (ingress + utgående) |
---|---|---|---|---|
100 | 3,100 | Upp till 10 000 | 24,840,000 | 110 MiB/s |
500 | 3 500 | Upp till 10 000 | 23,400,000 | 150 MiB/s |
1,024 | 4,024 | Upp till 10 000 | 21,513,600 | 203 MiB/s |
5,120 | 8 120 | Upp till 15 360 | 26,064,000 | 613 MiB/s |
10,240 | 13,240 | Upp till 30 720 | 62,928,000 | 1 125 MiB/s |
33,792 | 36,792 | Upp till 100 000 | 227,548,800 | 3 480 MiB/s |
51,200 | 54,200 | Upp till 100 000 | 164,880,000 | 5 220 MiB/s |
102,400 | 100,000 | Upp till 100 000 | 0 | 10 340 MiB/s |
Checklista för prestanda
Oavsett om du utvärderar prestandakrav för en ny eller befintlig arbetsbelastning kan du få förutsägbara prestanda genom att förstå dina användningsmönster. Kontakta lagringsadministratören eller programutvecklaren för att fastställa följande användningsmönster.
Känslighet för svarstid: Öppnar användare filer eller interagerar med virtuella skrivbord som körs på Azure Files? Det här är exempel på arbetsbelastningar som är känsliga för läsfördröjning och som även har hög synlighet för slutanvändare. De här typerna av arbetsbelastningar är mer lämpliga för Premium Azure-filresurser, vilket kan ge svarstid på en millisekunder för både läs- och skrivåtgärder (< 2 ms för liten I/O-storlek).
Krav för IOPS och dataflöde: Premium-filresurser stöder större IOPS- och dataflödesgränser än standardfilresurser. Mer information finns i skalningsmål för filresurser.
Varaktighet och frekvens för arbetsbelastning: Korta (minuter) och sällan förekommande (timvisa) arbetsbelastningar är mindre benägna att uppnå de övre prestandagränserna för standardfilresurser jämfört med långvariga, ofta förekommande arbetsbelastningar. På premiumfilresurser är arbetsbelastningens varaktighet användbar när du fastställer rätt prestandaprofil som ska användas baserat på etableringsstorleken. Beroende på hur länge arbetsbelastningen behöver brista och hur lång tid den spenderar under baslinje-IOPS kan du avgöra om du ackumulerar tillräckligt med burst-krediter för att konsekvent uppfylla din arbetsbelastning vid hög belastning. Att hitta rätt saldo minskar kostnaderna jämfört med överetablering av filresursen. Ett vanligt misstag är att köra prestandatester i bara några minuter, vilket ofta är missvisande. För att få en realistisk bild av prestanda bör du testa med tillräckligt hög frekvens och varaktighet.
Parallellisering av arbetsbelastningar: För arbetsbelastningar som utför parallella åtgärder, till exempel genom flera trådar, processer eller programinstanser på samma klient, ger Premium-filresurser en tydlig fördel jämfört med standardfilresurser: SMB Multichannel. Mer information finns i Förbättra prestanda för SMB Azure-filresurser.
API-åtgärdsdistribution: Är arbetsbelastningsmetadata tung med åtgärder för att öppna/stänga filer? Detta är vanligt för arbetsbelastningar som utför läsåtgärder mot ett stort antal filer. Se Hög arbetsbelastning för metadata eller namnområde.
Svarstid
När du tänker på svarstid är det viktigt att först förstå hur svarstiden bestäms med Azure Files. De vanligaste måtten är svarstiden som är associerad med svarstid från slutpunkt till slutpunkt och mått för tjänstfördröjning . Med hjälp av dessa transaktionsmått kan du identifiera svarstid och/eller nätverksproblem på klientsidan genom att fastställa hur lång tid programtrafiken lägger på överföring till och från klienten.
Svarstid från slutpunkt till slutpunkt (SuccessE2ELatency) är den totala tid det tar för en transaktion att utföra en fullständig tur och retur-resa från klienten, över nätverket, till Azure Files-tjänsten och tillbaka till klienten.
Tjänstsvarstid (SuccessServerLatency) är den tid det tar för en transaktion att endast resa tur och retur inom Azure Files-tjänsten. Detta inkluderar inte någon klient- eller nätverksfördröjning.
Skillnaden mellan värdena SuccessE2ELatency och SuccessServerLatency är den svarstid som sannolikt orsakas av nätverket och/eller klienten.
Det är vanligt att förväxla klientfördröjning med tjänstfördröjning (i det här fallet Azure Files-prestanda). Om tjänstsvarstiden till exempel rapporterar låg svarstid och från slutpunkt till slutpunkt rapporterar mycket hög svarstid för begäranden, tyder det på att all tid som spenderas under överföring till och från klienten och inte i Azure Files-tjänsten.
Dessutom, som diagrammet visar, ju längre du är borta från tjänsten, desto långsammare blir svarstiden och desto svårare blir det att uppnå prestandaskalningsgränser med alla molntjänster. Detta gäller särskilt när du kommer åt Azure Files lokalt. Även om alternativ som ExpressRoute är idealiska för lokalt, matchar de fortfarande inte prestanda för ett program (beräkning + lagring) som körs uteslutande i samma Azure-region.
Dricks
Att använda en virtuell dator i Azure för att testa prestanda mellan lokalt och Azure är ett effektivt och praktiskt sätt att baslinjeansluta nätverksfunktionerna för anslutningen till Azure. Ofta kan en arbetsbelastning saktas ned av en undersized eller felaktigt dirigerad ExpressRoute-krets eller VPN-gateway.
Ködjup
Ködjup är antalet utestående I/O-begäranden som en lagringsresurs kan betjäna. Eftersom de diskar som används av lagringssystem har utvecklats från HDD-spindlar (IDE, SATA, SAS) till SSD-enheter (SSD, NVMe) har de också utvecklats för att stödja högre ködjup. En arbetsbelastning som består av en enda klient som seriellt interagerar med en enda fil i en stor datamängd är ett exempel på lågt ködjup. Däremot kan en arbetsbelastning som stöder parallellitet med flera trådar och flera filer enkelt uppnå högt ködjup. Eftersom Azure Files är en distribuerad filtjänst som omfattar tusentals Azure-klusternoder och är utformad för att köra arbetsbelastningar i stor skala rekommenderar vi att du skapar och testar arbetsbelastningar med högt ködjup.
Hög ködjup kan uppnås på flera olika sätt i kombination med klienter, filer och trådar. För att fastställa ködjupet för din arbetsbelastning multiplicerar du antalet klienter med antalet filer med antalet trådar (klienter * filer * trådar = ködjup).
Tabellen nedan illustrerar de olika kombinationer som du kan använda för att uppnå ett högre ködjup. Även om du kan överskrida det optimala ködjupet på 64 rekommenderar vi det inte. Du ser inga fler prestandavinster om du gör det, och du riskerar att öka svarstiden på grund av TCP-mättnad.
Klienter | Filer | Trådar | Ködjup |
---|---|---|---|
1 | 1 | 1 | 1 |
1 | 1 | 2 | 2 |
1 | 2 | 2 | 4 |
2 | 2 | 2 | 8 |
2 | 2 | 4 | 16 |
2 | 4 | 4 | 32 |
1 | 8 | 8 | 64 |
4 | 4 | 2 | 64 |
Dricks
För att uppnå övre prestandagränser kontrollerar du att arbetsbelastnings- eller benchmarkingtestet har flera trådar med flera filer.
Program med en eller flera trådar
Azure Files passar bäst för program med flera trådar. Det enklaste sättet att förstå prestandapåverkan som multitrådning har på en arbetsbelastning är att gå igenom scenariot med I/O. I följande exempel har vi en arbetsbelastning som behöver kopiera 10 000 små filer så snabbt som möjligt till eller från en Azure-filresurs.
Den här tabellen delar upp den tid som krävs (i millisekunder) för att skapa en enda 16 KiB-fil på en Azure-filresurs, baserat på ett entrådsprogram som skrivs i 4 KiB-blockstorlekar.
I/O-åtgärd | Skapa | 4 KiB-skrivning | 4 KiB-skrivning | 4 KiB-skrivning | 4 KiB-skrivning | Stäng | Totalt |
---|---|---|---|---|---|---|---|
Tråd 1 | 3 ms | 2 ms | 2 ms | 2 ms | 2 ms | 3 ms | 14 ms |
I det här exemplet skulle det ta cirka 14 ms att skapa en enda 16 KiB-fil från de sex åtgärderna. Om ett entrådat program vill flytta 10 000 filer till en Azure-filresurs översätts det till 140 000 ms (14 ms * 10 000) eller 140 sekunder eftersom varje fil flyttas sekventiellt en i taget. Tänk på att tiden för att betjäna varje begäran främst bestäms av hur nära beräkningen och lagringen finns till varandra, enligt beskrivningen i föregående avsnitt.
Genom att använda åtta trådar i stället för en kan ovanstående arbetsbelastning minskas från 140 000 ms (140 sekunder) ned till 17 500 ms (17,5 sekunder). Som tabellen nedan visar kan du flytta samma mängd data på 87,5 % mindre tid när du flyttar åtta filer parallellt i stället för en fil i taget.
I/O-åtgärd | Skapa | 4 KiB-skrivning | 4 KiB-skrivning | 4 KiB-skrivning | 4 KiB-skrivning | Stäng | Totalt |
---|---|---|---|---|---|---|---|
Tråd 1 | 3 ms | 2 ms | 2 ms | 2 ms | 2 ms | 3 ms | 14 ms |
Tråd 2 | 3 ms | 2 ms | 2 ms | 2 ms | 2 ms | 3 ms | 14 ms |
Tråd 3 | 3 ms | 2 ms | 2 ms | 2 ms | 2 ms | 3 ms | 14 ms |
Tråd 4 | 3 ms | 2 ms | 2 ms | 2 ms | 2 ms | 3 ms | 14 ms |
Tråd 5 | 3 ms | 2 ms | 2 ms | 2 ms | 2 ms | 3 ms | 14 ms |
Tråd 6 | 3 ms | 2 ms | 2 ms | 2 ms | 2 ms | 3 ms | 14 ms |
Tråd 7 | 3 ms | 2 ms | 2 ms | 2 ms | 2 ms | 3 ms | 14 ms |
Tråd 8 | 3 ms | 2 ms | 2 ms | 2 ms | 2 ms | 3 ms | 14 ms |