Ajánlott eljárások linuxos fájlrendszer-gyorsítótárazáshoz az Azure NetApp Fileshoz
Ez a cikk az Azure NetApp Files fájlrendszer-gyorsítótárának ajánlott eljárásait ismerteti.
Fájlrendszer-gyorsítótárak
A fájlrendszer gyorsítótárazásával kapcsolatos alábbi tényezőket kell megértenie:
- A piszkos puffer kiürítése tiszta állapotban hagyja az adatokat a jövőbeli olvasásokhoz, amíg a memóriaterhelés ki nem ürítéshez nem vezet.
- Az aszinkron kiürítési művelethez három eseményindító van:
- Időalapú: Amikor egy puffer eléri a 2000-ben meghatározott kort, tisztításra (azaz öblítésre vagy tárolóba írásra) kell megjelölni.
- Memóriaterhelés: Lásd
vm.dirty_ratio | vm.dirty_bytes
a részleteket. - Bezárás: Egy fájlfogópont bezárásakor a rendszer az összes piszkos puffert aszinkron módon kiüríti a tárolóba.
Ezeket a tényezőket négy horgászat szabályozza. Minden hangolható hangolható dinamikusan és tartósan használatával tuned
vagy sysctl
a /etc/sysctl.conf
fájlban. Ezeknek a változóknak a finomhangolása javítja az alkalmazások teljesítményét.
Feljegyzés
A cikkben tárgyalt információk a SAS GRID és a SAS Viya ellenőrzési gyakorlatok során derültek ki. Ennek megfelelően a hibák az érvényesítési gyakorlatokból levont tanulságokon alapulnak. Számos alkalmazás hasonlóképpen kihasználja ezeknek a paramétereknek a finomhangolását.
vm.dirty_ratio | vm.dirty_bytes
Ez a két hangolható érték határozza meg, hogy mennyi RAM használható a módosított, de még nem stabil tárterületre írt adatokhoz. Bármelyik is van beállítva, a másikat automatikusan nullára állítja; A RedHat azt tanácsolja, hogy manuálisan állítsa a két tonhalat nullára. A beállítást vm.dirty_ratio
(a kettő alapértelmezett értéke) Redhat az operációs rendszertől függően a fizikai memória 20%-ára vagy 30%-ára állítja be, ami jelentős összeg a modern rendszerek memóriaigényét figyelembe véve. A memória méretétől függetlenül a konzisztensebb élmény helyett vm.dirty_ratio
érdemes megfontolni a beállítástvm.dirty_bytes
. A SAS GRID-szel végzett folyamatos munka például 30 MiB-et határozott meg a legjobb általános vegyes számítási feladatok teljesítményének megfelelő beállításként.
vm.dirty_background_ratio | vm.dirty_background_bytes
Ezek a hibák határozzák meg azt a kiindulópontot, ahol a Linux visszaírási mechanizmus elkezdi kiüríteni a piszkos blokkokat a stabil tárolóba. A redhat alapértelmezés szerint a fizikai memória 10%-a, ami egy nagy memóriarendszerben jelentős mennyiségű adat a kiürítés megkezdéséhez. A SAS GRID mint példa, a javaslat előzménye az volt, hogy vm.dirty_background
1/5 méretre vm.dirty_ratio
vagy vm.dirty_bytes
. Figyelembe véve, hogy milyen agresszíven van beállítva a beállítás a vm.dirty_bytes
SAS GRID-hez, itt nincs konkrét érték beállítva.
vm.dirty_expire_centisecs
Ez a halhatatlanság határozza meg, hogy egy piszkos puffer hány éves lehet, mielőtt aszinkron módon fel kell címkézni. Vegyük például a SAS Viya CAS-számítási feladatát. Egy rövid élettartamú írási-domináns számítási feladat megállapította, hogy ez az érték 300 centiseconds (3 másodperc) értékre való beállítása optimális volt, az alapértelmezett érték 3000 centiseconds (30 másodperc).
A SAS Viya a CAS-adatokat több, egyenként néhány megabájtból álló kis adattömbbe osztja meg. Ahelyett, hogy bezárja ezeket a fájlfogantyúkat, miután adatokat írt az egyes szegmensekre, a fogópontok nyitva maradnak, a benne lévő pufferek pedig az alkalmazás által leképezett memóriát képeznek le. Bezárás nélkül nincs öblítés, amíg a memória nyomása vagy 30 másodperc nem halad át. A memóriaterhelésre való várakozás nem bizonyult optimálisnak, mint a hosszú időzítő lejáratára várva. A SAS GRID-szel ellentétben, amely a legjobb általános átviteli sebességet kereste, a SAS Viya optimalizálni kívánta az írási sávszélességet.
vm.dirty_writeback_centisecs
A kernel öblítőszál felelős a piszkos pufferek aszinkron öblítéséért az egyes öblítési szálak alvó állapotai között. Ez a öblítések között alvással töltött összeget határozza meg. Figyelembe véve a SAS Viya által használt 3 másodperces vm.dirty_expire_centisecs
értéket, az SAS ezt 100 centiseconds (1 másodperc) értékre állítja, nem pedig az 500 centiseconds (5 másodperc) alapértelmezett értékre, hogy megtalálja a legjobb általános teljesítményt.
A nemtuned fájlrendszergyorsítótár hatása
Ha figyelembe veszi az alapértelmezett virtuális memóriát és a ram mennyiségét a modern rendszerekben, a visszaírás potenciálisan lelassítja a tárterülethez kötött műveleteket az adott ügyfél szempontjából, amely ezt a vegyes számítási feladatot hajtja végre. A következő tünetek várhatók egy nemtuned, írási nehéz, gyorsítótárazott Linux-géptől.
- A címtárlisták
ls
elég ideig tarthatnak, amíg nem válaszolnak. - A fájlrendszer olvasási átviteli sebessége jelentősen csökken az írási átviteli sebességhez képest.
nfsiostat
a jelentések másodpercek alatt vagy annál nagyobb késéseket írnak.
Ezt a viselkedést csak a vegyes írási terhelésű számítási feladatot végző Linux-gép tapasztalhatja. Emellett a felhasználói élmény csökken az egyetlen tárolási végponthoz csatlakoztatott összes NFS-kötet esetében. Ha a csatlakoztatások két vagy több végpontról származnak, csak a végpontot megosztó kötetek mutatják ezt a viselkedést.
Az ebben a szakaszban ismertetett fájlrendszer-gyorsítótárparaméterek beállítása a problémák megoldásához jelenik meg.
Virtuális memória figyelése
A virtuális memóriával és a visszaírással kapcsolatos teendők megértéséhez vegye figyelembe a következő kódrészletet és kimenetet. A Dirty a rendszerben lévő piszkos memória mennyiségét jelöli, a visszaírás pedig a tárolóba aktívan írt memória mennyiségét jelöli.
# while true; do echo "###" ;date ; egrep "^Cached:|^Dirty:|^Writeback:|file" /proc/meminfo; sleep 5; done`
A következő kimenet egy kísérletből származik, ahol a vm.dirty_ratio
vm.dirty_background
fizikai memória 2%-ának, illetve 1%-ának megfelelő arányt állítottunk be. Ebben az esetben a kiürítés 3,8 GiB-vel kezdődött, amely a 384-GiB memóriarendszer 1%-a. A visszaírás nagyon hasonlított az NFS írási sebességére.
Cons
Dirty: 1174836 kB
Writeback: 4 kB
###
Dirty: 3319540 kB
Writeback: 4 kB
###
Dirty: 3902916 kB <-- Writes to stable storage begins here
Writeback: 72232 kB
###
Dirty: 3131480 kB
Writeback: 1298772 kB
Következő lépések
- Ajánlott eljárások a Linux közvetlen I/O-hoz az Azure NetApp Fileshoz
- A Linux NFS csatlakoztatási beállításainak ajánlott eljárásai az Azure NetApp Fileshoz
- Linux – párhuzamossági ajánlott eljárások az Azure NetApp Fileshoz
- Ajánlott eljárások a Linux NFS írásvédett használatához
- Azure-beli virtuálisgép-termékváltozatok – ajánlott eljárások
- Teljesítménytesztek Linuxhoz