Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln hjälper dig att förstå bästa praxis för samtidighetsprinciper för sessionsplatser och platsposter i tabeller i Azure NetApp Files NFS-protokoll.
NFSv3
NFSv3 har ingen mekanism för att förhandla om samtidighet mellan klienten och servern. Klienten och servern definierar var och en sin gräns utan att rådfråga den andra. För bästa prestanda bör du rada upp det maximala antalet tabellposter på klientsidan sunrpc med det som stöds utan motstånd på servern. När en klient överbelastar serverns nätverksstacks förmåga att bearbeta en arbetsbelastning svarar servern genom att minska fönsterstorleken för anslutningen, vilket inte är ett idealiskt prestandascenario.
Som standard definierar moderna Linux-kernels poststorleken sunrpc per anslutningsplatstabell sunrpc.tcp_max_slot_table_entries som stöd för 65 536 utestående åtgärder, vilket visas i följande tabell.
| Azure NetApp Files NFSv3-server Maximalt antal körningskontexter per anslutning |
Linux-klient Standard maximalt antal sunrpc slot tabellposter per anslutning |
|---|---|
| 128 | 65,536 |
Dessa facktabellsposter definierar gränserna för samstämmighet. Värden som är så här höga är onödiga. Om du till exempel använder en köteori som kallas Littles Law ser du att I/O-frekvensen bestäms av samtidighet (det vill säga utestående I/O) och svarstid. Därför visar algoritmen att 65 536 platser är större än vad som behövs för att driva även extremt krävande arbetsbelastningar.
Littles Law: (concurrency = operation rate × latency in seconds)
En samtidighetsnivå så låg som 155 räcker för att uppnå 155 000 Oracle DB NFS-åtgärder per sekund med Oracle Direct NFS, vilket är en teknik som liknar monteringsalternativet nconnect :
- Med en svarstid på 0,5 ms krävs en samtidighet på 55 för att uppnå 110 000 I/OPS.
- Med en svarstid på 1 ms krävs en samtidighet på 155 för att uppnå 155 000 I/OPS.
Mer information finns i Oracle-databasprestanda på enskilda Azure NetApp Files-volymer .
Tunable sunrpc.tcp_max_slot_table_entries är en justeringsparameter på anslutningsnivå.
Vi rekommenderar att du anger det här värdet till 128 eller mindre per anslutning, vilket inte överstiger 10 000 platser i hela miljön.
Exempel på antal fack baserat på samtidighetsrekommendering
Exempel i det här avsnittet visar antalet fack baserat på rekommendationen samtidighet.
Exempel 1 – En NFS-klient, 65 536 sunrpc.tcp_max_slot_table_entriesoch nej nconnect för maximal samtidighet på 128 baserat på gränsen på 128 på serversidan
Exempel 1 baseras på en enskild klientarbetsbelastning med standardvärdet sunrpc.tcp_max_slot_table_entry 65 536 och en enda nätverksanslutning, det vill säga nej nconnect. I det här fallet kan en samtidighet på 128 uppnås.
NFS_Server=10.10.10.10, NFS_Client=10.10.10.11-
Connection (10.10.10.10:2049, 10.10.10.11:6543,TCP)- Klienten kan i teorin inte utfärda fler än 65 536 begäranden under flygning till servern per anslutning.
- Servern accepterar inte fler än 128 begäranden under flygning från den här enda anslutningen.
-
Exempel 2 – En NFS-klient, 128 sunrpc.tcp_max_slot_table_entries, och nej nconnect för en maximal samtidighet på 128
Exempel 2 baseras på en enskild klientarbetsbelastning med värdet sunrpc.tcp_max_slot_table_entry 128, men utan monteringsalternativet nconnect . Med den här inställningen kan en samtidighet på 128 uppnås från en enda nätverksanslutning.
NFS_Server=10.10.10.10, NFS_Client=10.10.10.11Connection (10.10.10.10:2049, 10.10.10.11:6543,TCP)- Klienten utfärdar högst 128 begäranden under flygning till servern per anslutning.
- Servern accepterar inte fler än 128 begäranden under flygning från den här enda anslutningen.
Exempel 3 – En NFS-klient, 100 sunrpc.tcp_max_slot_table_entries, och nconnect=8 för en maximal samtidighet på 800
Exempel 3 baseras på en enskild klientarbetsbelastning, men med ett lägre sunrpc.tcp_max_slot_table_entry värde på 100. Den här gången användes monteringsalternativet nconnect=8 för att sprida arbetsbelastningen över 8 anslutningar. Med den här inställningen är en samtidighet på 800 uppnåelig spridning över de 8 anslutningarna. Det här beloppet är den samtidighet som krävs för att uppnå 400 000 I/OPS.
NFS_Server=10.10.10.10, NFS_Client=10.10.10.11Connection 1 (10.10.10.10:2049, 10.10.10.11:6543,TCP), Connection 2 (10.10.10.10:2049, 10.10.10.11:6454,TCP)… Connection 8 (10.10.10.10:2049, 10.10.10.11:7321,TCP)- Anslutning 1
- Klienten utfärdar högst 100 begäranden under flygning till servern från den här anslutningen.
- Servern förväntas inte acceptera fler än 128 begäranden under flygning från klienten för den här anslutningen.
- Anslutning 2
- Klienten utfärdar högst 100 begäranden under flygning till servern från den här anslutningen.
- Servern förväntas inte acceptera fler än 128 begäranden under flygning från klienten för den här anslutningen.
……- Anslutning 8
- Klienten utfärdar högst 100 begäranden under flygning till servern från den här anslutningen.
- Servern förväntas inte acceptera fler än 128 begäranden under flygning från klienten för den här anslutningen.
Exempel 4 – 250 NFS-klienter, 8 sunrpc.tcp_max_slot_table_entriesoch nej nconnect för en maximal samtidighet på 2 000
Exempel 4 använder det reducerade per klientvärdet sunrpc.tcp_max_slot_table_entry på 8 i en EDA-miljö med 250 datorer. I det här scenariot uppnås en samtidighet på 2000 i hela miljön, ett värde som är mer än tillräckligt för att köra 4 000 MiB/s för en EDA-arbetsbelastning på serverdelen.
NFS_Server=10.10.10.10, NFS_Client1=10.10.10.11Connection (10.10.10.10:2049, 10.10.10.11:6543,TCP)- Klienten utfärdar högst åtta begäranden under flygning till servern per anslutning.
- Servern accepterar inte fler än 128 begäranden under flygning från den här enda anslutningen.
NFS_Server=10.10.10.10, NFS_Client2=10.10.10.12Connection (10.10.10.10:2049, 10.10.10.12:7820,TCP)- Klienten utfärdar högst åtta begäranden under flygning till servern per anslutning.
- Servern accepterar inte fler än 128 begäranden under flygning från den här enda anslutningen.
……NFS_Server=10.10.10.10, NFS_Client250=10.10.11.13Connection (10.10.10.10:2049, 10.10.11.13:4320,TCP)- Klienten utfärdar högst åtta begäranden under flygning till servern per anslutning.
- Servern accepterar inte fler än 128 begäranden under flygning från den här enda anslutningen.
När du använder NFSv3 bör du tillsammans behålla antalet lagringsslutpunkter till 10 000 eller mindre. Det är bäst att ange värdet per anslutning för sunrpc.tcp_max_slot_table_entries till mindre än 128 när ett program skalar ut över många nätverksanslutningar (nconnect och HPC i allmänhet och EDA i synnerhet).
Så här beräknar du det bästa sunrpc.tcp_max_slot_table_entries
Genom att använda Littles Law kan du beräkna det totala antalet posterna i facktabellen som krävs. Överväg i allmänhet följande faktorer:
- Utskalningsarbetsbelastningar är ofta dominerande stora och sekventiella till sin natur.
- Databasarbetsbelastningar, särskilt bearbetning av onlinetransaktioner, är ofta slumpmässiga.
I följande tabell visas en exempelstudie av samtidighet med godtyckliga svarstider:
| I/O-storlek | Fördröjning | I/O eller dataflöde | Konkurens |
|---|---|---|---|
| 8 KiB | 0,5 ms | 110 000 I/OPS | 859 MiB/s | 55 |
| 8 KiB | 2 ms | 400 000 I/OPS | 3 125 MiB/s | 800 |
| 256 KiB | 2 ms | 16 000 I/OPS | 4 000 MiB/s | 32 |
| 256 KiB | 4 ms | 32 000 I/OPS | 8 000 MiB/s | 128 |
Så här beräknar du samtidighetsinställningar efter antal anslutningar
Om arbetsbelastningen till exempel är en EDA-servergrupp och 1 250 klienter kör alla arbetsbelastningar till samma lagringsslutpunkt (en lagringsslutpunkt är en lagrings-IP-adress), beräknar du den obligatoriska I/O-hastigheten och delar samtidigheten mellan servergruppen.
Anta att arbetsbelastningen är 4 000 MiB/s med en genomsnittlig åtgärdsstorlek på 256 KiB och en genomsnittlig svarstid på 10 ms. Använd följande formel för att beräkna samtidighet:
(concurrency = operation rate × latency in seconds)
Beräkningen översätts till en samtidighet på 160:
(160 = 16,000 × 0.010)
Med tanke på behovet av 1 250 klienter kan du säkert ange sunrpc.tcp_max_slot_table_entries 2 per klient för att nå 4 000 MiB/s. Du kan dock välja att bygga in extra utrymme genom att ange antalet per klient till 4 eller till och med 8, och hålla dig väl under det rekommenderade slottaket på 10 000.
Så här ställer du in sunrpc.tcp_max_slot_table_entries på klienten
- Lägg till
sunrpc.tcp_max_slot_table_entries=<n>i konfigurationsfilen/etc/sysctl.conf.
Om ett värde som är lägre än 128 är optimalt under justeringen ersätter du 128 med lämpligt tal. - Kör följande kommando:
$ sysctl -p - Montera (eller montera om) alla NFS-filsystem, eftersom den justerbara inställningen endast gäller monteringar som görs efter att den har ställts in.
NFSv4.1
I NFSv4.1 definierar sessioner relationen mellan klienten och servern. Oavsett om de monterade NFS-filsystemen sitter ovanpå en eller flera anslutningar (vilket är fallet med nconnect) gäller reglerna för sessionen. Vid sessionskonfigurationen förhandlar klienten och servern om maximalt antal begäranden för sessionen, vilket avgör det nedre av de två värden som stöds. Azure NetApp Files stöder 180 utestående begäranden och Linux-klienter har som standard 64 begäranden. I följande tabell visas sessionsgränserna:
| Azure NetApp Files NFSv4.1-server Maximalt antal kommandon per session |
Linux-klient Standard antal maximala kommandon per session |
Förhandlade maxkommandon för sessionen |
|---|---|---|
| 180 | 64 | 64 |
Även om Linux-klienter som standard har maximalt 64 begäranden per session, är värdet max_session_slots justerbart. En omstart krävs för att ändringarna ska börja gälla.
systool -v -m nfs Använd kommandot för att se det aktuella maxvärdet som används av klienten. För att kommandot ska fungera måste minst en NFSv4.1-montering vara på plats:
$ systool -v -m nfs
{
Module = "nfs"
...
Parameters:
...
max_session_slots = "64"
...
}
Om du vill finjustera max_session_slotsskapar du en konfigurationsfil under /etc/modprobe.d som sådan. Kontrollera att inga "citattecken" finns för raden i filen. Annars börjar inte alternativet gälla.
$ sudo echo “options nfs max_session_slots=180” > /etc/modprobe.d/nfsclient.conf
$ sudo reboot
Azure NetApp Files begränsar varje session till högst 180 kommandon. Därför bör du överväga 180 det maximala värdet som för närvarande kan konfigureras. Klienten kan inte uppnå en samtidighet som är större än 128 om inte sessionen delas över mer än en anslutning eftersom Azure NetApp Files begränsar varje anslutning till högst 128 NFS-kommandon. För att få mer än en anslutning rekommenderas monteringsalternativet nconnect och ett värde på två eller fler krävs.
Exempel på förväntade maximala samtidigheter
Exempel i det här avsnittet visar de förväntade samtidighets maximumen.
Exempel 1 – 64 max_session_slots och nej nconnect
Exempel 1 baseras på standardinställningen 64 max_session_slots och nej nconnect. Med den här inställningen kan en samtidighet på 64 uppnås, allt från en enda nätverksanslutning.
NFS_Server=10.10.10.10, NFS_Client=10.10.10.11Connection (10.10.10.10:2049, 10.10.10.11:6543,TCP)- Klienten utfärdar högst 64 begäranden under flygning till servern för sessionen.
- Servern accepterar högst 64 begäranden under flygning från klienten för sessionen. (64 är det förhandlade värdet.)
Exempel 2 – 64 max_session_slots och nconnect=2
Exempel 2 baseras på max 64 session_slots men med det tillagda monteringsalternativet nconnect=2. En samtidighet på 64 kan uppnås men delas över två anslutningar. Även om flera anslutningar inte medför större samtidighet i det här scenariot, har det minskade ködjupet per anslutning en positiv inverkan på svarstiden.
Med max_session_slots fortfarande på 64 men med nconnect=2, observera att det maximala antalet begäranden delas mellan anslutningarna.
NFS_Server=10.10.10.10, NFS_Client=10.10.10.11Connection 1 (10.10.10.10:2049, 10.10.10.11:6543,TCP) && Connection 2 (10.10.10.10:2049, 10.10.10.11:6454,TCP)- Anslutning 1
- Klienten utfärdar högst 32 begäranden under flygning till servern från den här anslutningen.
- Servern förväntas acceptera högst 32 begäranden under flygning från klienten för den här anslutningen.
- Anslutning 2
- Klienten utfärdar högst 32 begäranden under flygning till servern från den här anslutningen.
- Servern förväntas acceptera högst 32 begäranden under flygning från klienten för den här anslutningen.
Exempel 3 – 180 max_session_slots och nej nconnect
Exempel 3 släpper monteringsalternativet nconnect och anger max_session_slots värdet till 180, vilket matchar serverns maximala samtidighet för NFSv4.1-session. I det här scenariot är sessionen begränsad till 128 åtgärder pågående med endast en anslutning och givet det maximala antalet ouppklarade åtgärder för Azure NetApp Files 128 per NFS-anslutning.
Även om max_session_slots har angetts till 180 är den enskilda nätverksanslutningen begränsad till 128 maximala begäranden som sådana:
NFS_Server=10.10.10.10, NFS_Client=10.10.10.11Connection (10.10.10.10:2049, 10.10.10.11:6543,TCP)- Klienten utfärdar högst 180 begäranden under flygning till servern för sessionen.
- Servern accepterar högst 180 samtidiga begäranden från klienten för sessionen.
- Servern accepterar högst 128 begäranden under flygning för den enskilda anslutningen.
Exempel 4 – 180 max_session_slots och nconnect=2
Exempel 4 lägger till monteringsalternativet nconnect=2 och återanvänder värdet 180 max_session_slots . Eftersom den övergripande arbetsbelastningen är uppdelad mellan två anslutningar är det möjligt att ha 180 utestående åtgärder.
Med två anslutningar i bruk stöder sessionen den fullständiga tilldelningen av 180 pågående förfrågningar.
NFS_Server=10.10.10.10, NFS_Client=10.10.10.11Connection 1 (10.10.10.10:2049, 10.10.10.11:6543,TCP) && Connection 2 (10.10.10.10:2049, 10.10.10.11:6454,TCP)- Anslutning 1
- Klienten förväntas inte hantera fler än 90 begäranden i omlopp till servern från anslutning ett.
- Servern förväntas hantera högst 90 begäranden under behandling från klienten för den här anslutningen under sessionen.
- Anslutning 2
- Klienten förväntas inte hantera fler än 90 begäranden i omlopp till servern från anslutning ett.
- Servern förväntas hantera högst 90 begäranden under behandling från klienten för den här anslutningen under sessionen.
Anmärkning
För maximal samtidighet anger du max_session_slots 180, vilket är den maximala samtidighet på sessionsnivå som stöds av Azure NetApp Files för närvarande.
Så här söker du efter maximalt antal utestående begäranden för sessionen
Om du vill se de session_slot storlekar som stöds av klienten och servern samlar du in monteringskommandot i en paketspårning. Leta efter CREATE_SESSION samtalet och CREATE_SESSION svaret enligt exemplet nedan. Anropet kommer från klienten och svaret kommer från servern.
Använd följande tcpdump kommando för att fånga monteringskommandot.
$ tcpdump -i eth0 -s 900 -w /tmp/write.trc port 2049
Med Wireshark är paketen av intresse följande:
I dessa två paket tittar du på fältet max_reqs i den mellersta delen av spårningsfilen.
- Nätverksfilsystem
- Verksamhet
Opcodecsa_fore_channel_attrsmax reqs
- Verksamhet
Paket 12 (högsta klientbegäranden) visar att klienten hade värdet max_session_slots 64. I nästa avsnitt ser du att servern har stöd för en samtidighet på 180 för sessionen. Sessionen förhandlar om det nedre av de två angivna värdena.
I följande exempel visas paket 14 (maximala serverbegäranden):
Nästa steg
- Bästa praxis för Linux Direct I/O för Azure NetApp Files
- Metodtips för Linux-filsystemcache för Azure NetApp Files
- Metodtips för Linux NFS-monteringsalternativ för Azure NetApp Files
- Metodtips för läsning av Linux NFS
- Bästa praxis för SKU (Stock Keeping Unit) för virtuella Azure-datorer
- Prestandamått för Linux