esemény
márc. 31. 23 - ápr. 2. 23
A legnagyobb Fabric-, Power BI- és SQL-tanulási esemény. Március 31. – Április 2. A FABINSIDER kóddal 400 dollárt takaríthat meg.
Regisztráljon még maEzt a böngészőt már nem támogatjuk.
Frissítsen a Microsoft Edge-re, hogy kihasználhassa a legújabb funkciókat, a biztonsági frissítéseket és a technikai támogatást.
Ez a cikk javaslatokat tartalmaz a nagy számú fájlt tartalmazó könyvtárak használatához. Általában célszerű csökkenteni az egy könyvtárban lévő fájlok számát úgy, hogy a fájlokat több könyvtárra terjeszti. Vannak azonban olyan helyzetek, amikor a nagy könyvtárakat nem lehet elkerülni. Fontolja meg az alábbi javaslatokat, ha linuxos ügyfelekre csatlakoztatott Azure-fájlmegosztásokon használ nagy könyvtárakat.
Fájlmegosztás típusa | SMB | NFS |
---|---|---|
Standard szintű fájlmegosztások (GPv2), LRS/ZRS |
![]() |
![]() |
Standard szintű fájlmegosztások (GPv2), GRS/GZRS |
![]() |
![]() |
Prémium fájlmegosztások (FileStorage), LRS/ZRS |
![]() |
![]() |
A következő csatlakoztatási lehetőségek az enumerálásra vonatkoznak, és csökkenthetik a késést a nagy könyvtárak használatakor.
actimeo
Az összes acregmin
, acregmax
, acdirmin
és acdirmax
ugyanahhoz az értékhez tartozó beállítás megadása. Ha actimeo
nincs megadva, az ügyfél az alapértelmezett értékeket használja az egyes beállításokhoz.
Javasoljuk, hogy nagy könyvtárak használatakor 30 és 60 másodperc közötti beállítást actimeo
állítson be. Ha beállít egy értéket ebben a tartományban, az attribútumok hosszabb ideig érvényesek maradnak az ügyfél attribútum-gyorsítótárában, így a műveletek ahelyett, hogy a vezetéken keresztül kérik le a fájlattribútumokat a gyorsítótárból. Ez csökkentheti a késést olyan helyzetekben, amikor a gyorsítótárazott attribútumok lejárnak, miközben a művelet még fut.
Az alábbi grafikon összehasonlítja a különböző műveletek alapértelmezett csatlakoztatással történő befejezéséhez szükséges teljes időt, szemben a actimeo
30-zal egy olyan számítási feladat értékének beállításával, amely egy könyvtárban 1 millió fájlt tartalmaz. A tesztelés során a teljes befejezési idő néhány művelet esetében akár 77%-kal is csökkent. Minden műveletet nem rendelkező ls-ekkel hajtottak végre.
Nconnect
az NFS-fájlmegosztások ügyféloldali csatlakoztatási lehetősége, amely lehetővé teszi több TCP-kapcsolat használatát az ügyfél és az NFSv4.1-hez készült Azure Premium Files szolgáltatás között. Javasoljuk a késés csökkentésének és a teljesítmény javításának optimális beállítását nconnect=4
.
Nconnect
különösen hasznos lehet olyan számítási feladatokhoz, amelyek több szálból származó aszinkron vagy szinkron I/O-t használnak.
További információ.
Az enumerálást végző rendszeren található RAM teljes mennyisége befolyásolja az olyan fájlrendszer-protokollok belső működését, mint az NFS és az SMB. Még ha a felhasználók nem is tapasztalnak magas memóriahasználatot, a rendelkezésre álló memória mennyisége befolyásolja a rendszer által használt inode kivonatgyűjtők számát, ami befolyásolja/javítja a nagy könyvtárak számbavételi teljesítményét. Módosíthatja azoknak az inode kivonatgyűjtőknek a számát, amelyeknek a rendszernek csökkentenie kell a nagy számbavételi számítási feladatok során esetlegesen előforduló kivonatos ütközéseket.
Ehhez módosítania kell a rendszerindítási konfiguráció beállításait egy további kernelparancs megadásával, amely a rendszerindítás során lép érvénybe, hogy növelje az inode kivonatgyűjtők számát. Kövesse ezeket a lépéseket.
Szövegszerkesztővel szerkessze a /etc/default/grub
fájlt.
sudo vim /etc/default/grub
Adja hozzá a következő szöveget az /etc/default/grub
fájlhoz. Ez a parancs az inode kivonattábla méreteként 128 MB-ot választ el egymástól, és legfeljebb 128 MB-tal növeli a rendszer memóriahasználatát.
GRUB_CMDLINE_LINUX="ihash_entries=16777216"
Ha GRUB_CMDLINE_LINUX
már létezik, adjon hozzá ihash_entries=16777216
szóközzel elválasztva, például:
GRUB_CMDLINE_LINUX="<previous commands> ihash_entries=16777216"
A módosítások alkalmazásához futtassa a következőt:
sudo update-grub2
Indítsa újra a rendszert:
sudo reboot
A módosítások érvénybe lépésének ellenőrzéséhez a rendszer újraindítása után ellenőrizze a kernel parancsmag parancsait:
cat /proc/cmdline
Ha ihash_entries
látható, a rendszer alkalmazta a beállítást, és a számbavételi teljesítmény exponenciálisan javul.
A dmesg-kimenetben azt is ellenőrizheti, hogy alkalmazták-e a kernel-parancsmagot:
dmesg | grep "Inode-cache hash table"
Inode-cache hash table entries: 16777216 (order: 15, 134217728 bytes, linear)
A parancsok és műveletek megadása hatással lehet a teljesítményre is. Egy nagy könyvtárban lévő összes fájl felsorolása a ls
parancs használatával jó példa.
Megjegyzés
Egyes műveleteknek, például a rekurzívnak ls
find
du
és a fájlattribútumoknak egyaránt szükségük van a fájlnevekre és a fájlattribútumokra, ezért a címtár-enumerálásokat (a bejegyzések lekéréséhez) kombinálják az egyes bejegyzések statisztikáival (az attribútumok lekéréséhez). Javasoljuk, hogy nagyobb értéket használjon az actimeo-hoz olyan csatlakoztatási pontokon, ahol valószínűleg ilyen parancsokat fog futtatni.
Egyes Linux-disztribúciókban a rendszerhéj automatikusan beállítja a ls
parancs alapértelmezett beállításait, például ls --color=auto
. Ez megváltoztatja ls
a vezetéken végzett működést, és további műveleteket ad hozzá a ls
végrehajtáshoz. A teljesítménycsökkenés elkerülése érdekében javasolt a nem megadott ls használata. Ezt háromféleképpen teheti meg:
Távolítsa el az aliast a paranccsal unalias ls
. Ez csak ideiglenes megoldás az aktuális munkamenethez.
Végleges módosítás esetén szerkesztheti az ls
aliast a felhasználó fájljában bashrc/bash_aliases
. Az Ubuntu-ban szerkessze ~/.bashrc
az alias eltávolításához a következőhöz ls
: .
ls
Hívás helyett közvetlenül meghívhatja például /usr/bin/ls
a ls
binárist. Ez lehetővé teszi, hogy az aliasban esetlegesen elérhető beállítások nélkül is használható ls
legyen. A bináris hely a parancs which ls
futtatásával kereshető meg.
Ha más parancsokkal használja ls
, javíthatja a teljesítményt, ha megakadályozza ls
a kimenet rendezését olyan helyzetekben, amikor nem érdekli a fájlok visszaadásának ls
sorrendje. A kimenet rendezése jelentős többletterhelést jelent.
Ahelyett, hogy a ls -l | wc -l
fájlok teljes számát szeretné lekérni, a -f
-U
parancsokkal ls
megakadályozhatja a kimenet rendezését. A különbség az, hogy -f
a rejtett fájlokat is megjeleníti, és -U
nem.
Ha például közvetlenül az Ubuntu-ban hívja meg a ls
bináris fájlt, futtathatja vagy /usr/bin/ls -1U | wc -l
./usr/bin/ls -1f | wc -l
Az alábbi diagram összehasonlítja az eredmények kimenetéhez szükséges időt a nem megadott, a rendezetlen ls
és a rendezés ls
nélküli eredményekkel.
Ha adatokat másol egy fájlmegosztásból vagy biztonsági másolatot készít a fájlmegosztásokról egy másik helyre, az optimális teljesítmény érdekében javasoljuk, hogy az aktív I/O-val rendelkező élő fájlmegosztás helyett használjon megosztási pillanatképet forrásként. A biztonsági mentési alkalmazásoknak közvetlenül a pillanatképen kell futtatniuk a parancsokat. További információ: Pillanatképek megosztása az Azure Filesszal.
Nagy könyvtárakat használó alkalmazások fejlesztésekor kövesse ezeket a javaslatokat.
Fájlattribútumok kihagyása. Ha az alkalmazásnak csak a fájlnévre van szüksége, és nem a fájlattribútumokra, például a fájltípusra vagy a legutóbbi módosításra, akkor több hívás is használható a rendszerhívásokhoz, például getdents64
jó puffermérettel. Ezzel a fájltípus nélkül kapja meg a megadott könyvtár bejegyzéseit, így a művelet gyorsabb lesz, mivel elkerüli a felesleges műveleteket.
Interleave stat hívások. Ha az alkalmazásnak attribútumokra és a fájlnévre van szüksége, javasoljuk, hogy a stat-hívásokat ahelyett getdents64
, hogy az összes bejegyzést a fájl getdents64
végéig lekérte volna, majd az összes visszaadott bejegyzésre vonatkozó statisztikát kellene elvégeznie. A stat-hívások összekapcsolása arra utasítja az ügyfelet, hogy egyszerre kérje le a fájlt és az attribútumait is, csökkentve a kiszolgáló felé irányuló hívások számát. Magas actimeo
értékkel kombinálva ez jelentősen javíthatja a teljesítményt. Például ahelyett [ getdents64, getdents64, ... , getdents64, statx (entry1), ... , statx(n) ]
, hogy a statx-hívásokat a következőhöz hasonló módon getdents64
helyeznék el: [ getdents64, (statx, statx, ... , statx), getdents64, (statx, statx, ... , statx), ... ]
.
Az I/O mélységének növelése. Ha lehetséges, javasoljuk, hogy konfiguráljon nconnect
egy nem nulla értékű (1-nél nagyobb) értéket, és ossza el a műveletet több szál között, vagy használjon aszinkron I/O-t. Ez lehetővé teszi az aszinkron műveletek használatát a fájlmegosztás több egyidejű kapcsolatának kihasználásához.
Kényszerítő gyorsítótár. Ha az alkalmazás olyan fájlmegosztás fájlattribútumait kérdezi le, amelyet csak egy ügyfél csatlakoztatott, használja a statx rendszerhívást a AT_STATX_DONT_SYNC
jelzővel. Ez a jelző biztosítja, hogy a gyorsítótárazott attribútumok a kiszolgálóval való szinkronizálás nélkül legyenek lekérve a gyorsítótárból, így elkerülve a hálózati adatátjárásokat a legújabb adatok lekéréséhez.
esemény
márc. 31. 23 - ápr. 2. 23
A legnagyobb Fabric-, Power BI- és SQL-tanulási esemény. Március 31. – Április 2. A FABINSIDER kóddal 400 dollárt takaríthat meg.
Regisztráljon még maOktatás
Modul
Ismerje meg, hogyan javíthatja az Azure NetApp Files teljesítményét az EDA- és HPC-alkalmazások esetében az ajánlott eljárások használatával.