Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A rövid élettartamú NVMe-adatlemezek nagy teljesítményű, alacsony késésű tárterületet biztosítanak, amely ideális az Azure Kubernetes Service-ben (AKS) futó igényes számítási feladatokhoz. Számos modern alkalmazás, például az AI/ML-betanítás, az adatelemzés és a nagy átviteli sebességű adatbázisok gyors ideiglenes tárolást igényelnek a nagy mennyiségű köztes adat hatékony feldolgozásához. Rövid élettartamú NVMe-lemezek használatával jelentősen javíthatja az alkalmazások válaszkészségét és átviteli sebességét, miközben optimalizálhatja a költségeket és a méretezhetőséget az AKS-fürtökben.
A távoli lemezekkel ellentétben, amelyek teljesítménye a virtuális gép (VM) méretével skálázható, a rövid élettartamú NVMe lemezek teljes teljesítményt tartanak fenn a vCPU-számtól függetlenül. Ennek az az oka, hogy fizikailag csatlakoznak a virtuális géphez, és távoli lemezvezérlő használata nélkül működnek. A különbség figyelemre méltó:
- Ultralemez: A 400 000 IOPS eléréséhez 112 vCPU virtuális gépre van szükség (például Standard_E112ibds_v5).
- Helyi NVMe: Egy 8 vCPU-s virtuális gép (például Standard_L8s_v3) 400 000 IOPS-t képes biztosítani.
Ez körülbelül 14-szer kevesebb virtuális processzort eredményez az egyenértékű IOPS-teljesítményhez, ami jelentősen csökkenti a számítási erőforrások követelményeit.
Ez a legjobb gyakorlatokat ismertető cikk a klaszter üzemeltetők tárolási szempontjaival foglalkozik. Ebben a cikkben a következőt ismerheti meg:
- Gyakori forgatókönyvek, amikor a rövid élettartamú NVMe-adatlemezek teljesítménybeli előnyöket biztosítanak.
- Annak azonosítása, hogy mely virtuálisgép-méretek támogatják a rövid élettartamú NVMe-adatlemezeket.
- Rövid élettartamú NVMe-adatlemezek használata a Kubernetes-számítási feladatokhoz.
- A rövid élettartamú NVMe-adatlemezek működése, amikor az AKS-csomópontok rövid élettartamú operációsrendszer-lemezeket használnak.
- Számítási feladatok teljesítményének mérése rövid élettartamú NVMe-adatlemezek használatával.
Nagy teljesítményű számítási feladatok gyakori forgatókönyvei
A rövid élettartamú NVMe adatlemezek ideálisak olyan számítási feladatokhoz, amelyek nagy átviteli sebességet, alacsony késést és gyors hozzáférést igényelnek az ideiglenes vagy köztes adatokhoz. Az alábbi forgatókönyvek kiemelik, hogy a helyi NVMe-lemezek hol biztosítják a legfontosabb előnyöket:
Nagy teljesítményű adatbázisok (például PostgreSQL)
Az olyan adatbázisok esetében, mint a PostgreSQL, különösen a magas rendelkezésre állású (HA) vagy az olvasásigényes üzemelő példányok esetében a helyi NVMe-lemezek jelentősen javíthatják a tranzakciók átviteli sebességét, és csökkenthetik a lekérdezések késését. Ha ideiglenes táblaterekhez, előre írt naplókhoz (WAL) vagy gyorsítótárrétegként használják, az NVMe-lemezek segítenek az I/O kiszervezésében az állandó tárolóból, felgyorsítva az elemzéseket és a tranzakciós számítási feladatokat.
Ajánlott eljárások:
- Az IOPS maximalizálása és a késés minimalizálása érdekében használja az NVMe által támogatott köteteket a PostgreSQL temp könyvtáraihoz és WAL-naplóihoz.
- HA-forgatókönyvek esetén győződjön meg arról, hogy az állandó adatkönyvtárak tartós tárolóban maradnak, miközben az NVMe-t nem állandó, nagy adatmennyiségű adatokhoz használja.
- Az architektúrával kapcsolatos útmutatásért tekintse meg a PostgreSQL HA-t az AKS-ben .
AI-modell üzemeltetése és következtetése (például KAITO)
A KAITO-hoz hasonló platformokat kiszolgáló AI-modell az NVMe-lemezek előnyeit kihasználva gyors modellbetöltést, összetevők gyorsítótárazását és nagy átviteli sebességet von maga után. Amikor a modellek Open Container Initiative (OCI) összetevőként vannak tárolva, és igény szerint vannak betöltve, a helyi NVMe-tároló minimális hidegindítási időt és hatékony kötegelt feldolgozást biztosít.
Ajánlott eljárások:
- A modellgyorsítótár-címtárakhoz NVMe-alapú köteteket használva felgyorsíthatja a modell lekéréseit, és csökkentheti a következtetési késést.
- Elosztott következtetés esetén győződjön meg arról, hogy minden csomópont rendelkezik elegendő NVMe-kapacitással a gyakran használt modellek gyorsítótárazásához.
- Integrálható a Kubernetes natív tárolási megoldásaival (például az Azure Container Storage-nal) az automatizált felügyelet és monitorozás érdekében.
- Az architektúra-útmutatásért tekintse meg a KAITO-modellt OCI-összetevőkként .
Adatelemzési és ETL-folyamatok
Azok a számítási feladatok, amelyek nagy mennyiségű köztes adatot dolgoznak fel, például Spark, Dask vagy egyedi ETL feladatok, alkalmazhatnak NVMe lemezeket a "shuffle" tároláshoz, ideiglenes fájlokhoz és átmeneti tárhelyhez. Ez a megközelítés csökkenti az adatátalakítás és -összesítés során előforduló szűk keresztmetszeteket.
Ajánlott eljárások:
- Konfigurálja az shuffle és temp könyvtárakat az NVMe-alapú tároló használatára.
- Az ideiglenes adatok azonnali törlése a rendelkezésre álló terület maximalizálása érdekében.
Gyorsítótárazási rétegek és kulcs-érték tárolók
A memóriában lévő adatbázisok és gyorsítótárazási megoldások (például Redis, Memcached, RocksDB) az NVMe lemezeket gyors adatmegőrzési rétegként vagy túlcsordulásos tároláshoz használhatják, így egyensúlyt teremthetnek a sebesség és a tartósság között.
Ajánlott eljárások:
- Használja az NVMe-t olyan írási célú gyorsítótár-számítási feladatokhoz, ahol a megőrzés nem kritikus fontosságú.
- Figyelje meg a lemezhasználatot, hogy elkerülje a csomópontok újraindítása miatti kizárást vagy adatvesztést.
Nagy teljesítményű számítástechnika (HPC) és szimuláció
A HPC számítási feladatai, beleértve a genomikát, a pénzügyi modellezést és a tudományos szimulációkat, gyakran megkövetelik a nagy adathalmazokhoz való gyors hozzáférést és a köztes eredményekhez szükséges üres területet. Az NVMe-lemezek biztosítják a szükséges sávszélességet és alacsony késést ezekhez a forgatókönyvekhez.
Virtuálisgép-méretek ellenőrzése rövid élettartamú NVMe-adatlemezekkel
A rövid élettartamú NVMe-adatlemezek olyan azure-beli virtuálisgép-méretekben érhetők el, amelyek helyi, nagy teljesítményű tárolót kínálnak, közvetlenül a fizikai gazdagéphez csatlakoztatva. Ezek a lemezek ideálisak ideiglenes adatokhoz, például gyorsítótárakhoz, karcfájlokhoz vagy köztes feldolgozáshoz, és nem maradnak meg a virtuális gépek felszabadítása vagy leállítása után. Az NVMe-lemezek száma és kapacitása a virtuális gép méretétől és családjától függően változik.
Annak megállapításához, hogy mely virtuálisgép-méretek támogatják a rövid élettartamú NVMe-adatlemezeket és azok konfigurációit, tekintse meg az Azure-beli virtuálisgép-dokumentációt és az AKS által támogatott virtuálisgép-méreteket. Keresse meg az olyan virtuálisgép-sorozatokat, mint az Lsv4 és a Ddsv6, amelyek nagy átviteli sebességű, alacsony késésű számítási feladatokhoz vannak kialakítva.
Az alábbi táblázat a virtuális gépek példaméreteit és NVMe-lemezkonfigurációit sorolja fel:
| Virtuális gép mérete | NVMe-lemezek száma | Teljes NVMe-kapacitás (GiB) |
|---|---|---|
| Standard_L4s_v4 | 2 | 894 |
| Standard_L8s_v4 | 4 | 1,788 |
| Standard_L96s_v4 | 12 | 21,456 |
| Standard_D16ds_v6 | 2 | 880 |
| Standard_D32ds_v6 | 4 | 1,760 |
| Standard_D96ds_v6 | 6 | 5,280 |
A GPU-gyorsítást igénylő AI-számítási feladatok esetében vegye figyelembe az NC, az ND és az NV sorozat virtuálisgép-méretét. Néhány GPU-kompatibilis virtuálisgép-méret, például Standard_NC48ads_A100_v4 és Standard_ND96isr_H100_v5, a nagy teljesítményű GPU-k mellett helyi NVMe-tárterületet is kínál. Ezek a virtuális gépek alkalmasak AI-betanításra, következtetésre és más nagy számítási igényű forgatókönyvekre, ahol GPU-ra és gyors helyi tárolóra is szükség van.
Példa GPU virtuálisgép-méretek NVMe-lemezekkel:
| Virtuális gép mérete | GPU-típus | NVMe-lemezek száma | Teljes NVMe-kapacitás (GiB) |
|---|---|---|---|
| Standard_NC48ads_A100_v4 | 2 x A100 | 2 | 1,788 |
| Standard_NC96ads_A100_v4 | 4 x A100 | 4 | 3,576 |
| Standard_ND96isr_H100_v5 | 8 x H100 | 8 | 28,610 |
| Standard_ND96isr_H200_v5 | 8 x H200 | 8 | 28,610 |
Megjegyzés:
A tényleges NVMe-lemezkapacitás és -szám régiónként és virtuálisgép-generációnként eltérő lehet. Nem minden GPU virtuálisgép-méret tartalmazza a helyi NVMe-tárolót. Mindig ellenőrizze a legújabb virtuálisgép-specifikációkat és az NVMe-lemezek rendelkezésre állását az Azure dokumentációjában, mivel a konfigurációk változhatnak.
Rövid élettartamú NVMe-adatlemezek konfigurációjának ellenőrzése
Annak érdekében, hogy az AKS-csomópont rövid élettartamú NVMe-adatlemezekkel legyen kiépítve, az Azure CLI használatával és a csomópont közvetlen vizsgálatával ellenőrizheti a konfigurációt.
1. lehetőség: Az NVMe lemezkonfigurációjának ellenőrzése az Azure CLI használatával
Az Azure CLI használatával megvizsgálhatja a virtuális gép méretét és a csatlakoztatott NVMe-lemezeket az alábbi mintaparancsokkal.
# Modify location and VM size if needed
locationName="eastus"
vmSize="Standard_L8s_v4"
az vm list-skus --resource-type virtualMachines --location $locationName \
--query "[?name=='$vmSize'].{
SkuName: name,
NvmeDiskSizeInMiB: capabilities[?name=='NvmeDiskSizeInMiB'] | [0].value,
NvmeSizePerDiskInMiB: capabilities[?name=='NvmeSizePerDiskInMiB'] | [0].value
}" -o table
SkuName NvmeDiskSizeInMiB NvmeSizePerDiskInMiB
--------------- ------------------- ----------------------
Standard_L8s_v4 1830912 457728
2. lehetőség: A lsblk használata a lemez és a csatlakozási elrendezés ellenőrzésére a csomóponton.
Jelentkezzen be egy AKS-csomópontba:
kubectl get nodes
# Modify the node name from above list as needed
nodeName="aks-myworkload-22647054-vmss000000"
# Use your approach to login into the node.
kubectl debug "node/$nodeName" \
--image=ubuntu \
--profile=sysadmin -it \
-- chroot /host /bin/bash
A csatlakozás után a blokkeszközök listázására és az NVMe-lemezek azonosítására használható lsblk :
lsblk -o NAME,HCTL,SIZE,MOUNTPOINT,MODEL
NAME HCTL SIZE MOUNTPOINT MODEL
sr0 0:0:0:2 750K Virtual DVD-ROM
nvme0n1 110G Microsoft NVMe Direct Disk v2
Az NVMe-lemezek általában nvme*n1 néven jelennek meg, és a Microsoft NVMe Direct Disk* szerint vannak konfigurálva. Ez az eredmény megerősíti a rövid élettartamú NVMe-adatlemezek jelenlétét és konfigurációját az AKS-csomóponton.
Rövid élettartamú NVMe-adatlemezek használata számítási feladatokban
Az AKS-számítási feladatokban többféleképpen is használhat rövid élettartamú NVMe-adatlemezeket. A leggyakoribb megközelítések a következők:
Azure Container Storage (ajánlott)
Az Azure Container Storage egy Kubernetes-natív tárolási megoldás, amely a helyi NVMe-lemezeket állandó kötetekként absztrakciós és kezelési megoldásként kezeli, fejlett vezénylési és adatszolgáltatások használatával.
Az Azure Container Storage telepíthető az AKS-fürtben, és standard Kubernetes PVC-k használatával hozhat létre köteteket.
Az Azure Container Storage a következő előnyöket kínálja:
- Kubernetes-natív élmény a PersistentVolumeClaims szolgáltatással.
- NVMe-lemezek automatikus felderítése és kezelése bármilyen virtuálisgép-mérethez.
- Speciális funkciókat támogat: dinamikus kiépítést, adatbiztonságot és natív integrációt az AKS-sel.
- Jobb megbízhatóság és működési egyszerűség.
- Lehetővé teszi a nagy teljesítményű munkaterheléseket azzal, hogy az alapértelmezett kötetcsíkozás minden rendelkezésre álló lemezen keresztül valósul meg.
Az Azure Container Storage a legjobb megoldás a Kubernetes számítási feladatai számára a rövid élettartamú NVMe-adatlemezek vezénylésére. Egyesíti az NVMe-lemezek nyers teljesítményét a Kubernetes natív felügyeletével, biztonságával és beépített integrálásával az Azure monitorozási funkcióival és a Prometheussal. Ez a megközelítés csökkenti a működési összetettség mértékét, javítja a megbízhatóságot, és lehetővé teszi a nehezen megvalósítható emptyDirhostPathspeciális forgatókönyveket (például a skálázást és a feladatátvételt).
További információkért tekintse meg az Azure Container Storage dokumentációját.
emptyDir Kötetek
emptyDir Kubernetes-kötettípus, amely a csomópont helyi tárolóját használja. Ha NVMe-lemezeket használ, a emptyDir nagy átviteli sebességet és alacsony késleltetést nyújt ideiglenes adatok esetén.
A metódus használatához definiáljon egy kötetet emptyDir a Pod-specifikációban. Alapértelmezés szerint a leggyorsabb rendelkezésre álló tárterületet használja (ha van NVMe).
Advantages
- Egyszerűen használható és konfigurálható.
- Nincsenek külső függőségek.
- Nagy teljesítmény az NVMe által támogatott háttérrendszer esetén.
Disadvantages
- Az adatok elvesznek, ha a podot egy másik csomópontra ütemezik át.
- Nincs adatmegőrzés vagy replikáció.
- Csak egyetlen NVMe-lemezre korlátozva.
hostPath Kötetek
hostPath egy adott könyvtárat vagy lemezt csatlakoztat a csomópont fájlrendszeréből a Podhoz. Az NVMe csatlakoztatási pontjait közvetlenül is megcélzhatja.
A módszer használatához adja meg az NVMe lemez elérési útját (például /mnt/mnt/nvme0n1) a Pod specifikációjában.
Advantages
- Közvetlen hozzáférés az NVMe-lemezhez.
- Speciális forgatókönyvekhez (például egyéni formázáshoz, particionáláshoz) hasznos.
Disadvantages
- Szorosan összekapcsolva a csomópontelrendezéshez; nem hordozható.
- Biztonsági kockázatok, ha nincs megfelelően korlátozva.
- Csak egyetlen NVMe-lemezre korlátozva.
Rövid élettartamú NVMe-adatlemezek rövid élettartamú operációsrendszer-lemezekkel
Ha AKS-csomópontokat telepít helyi NVMe adatlemezekkel, mint például a Standard_D2ads_v6 VM mérettel (egyetlen 100 GiB NVMe lemez) és az ideiglenes operációs rendszer lemezek beállításával, megfigyelheti, hogy az ideiglenes operációs rendszer lemez (például 60 GiB) az NVMe kapacitásból van biztosítva. A nem használt NVMe-terület (ebben a példában az extra 40 GiB) azonban nem használható, és a csomópont létrehozása után nincs támogatott módja annak elérésére vagy helyreállítására.
Ez a viselkedés kialakítás szerint történik, mivel a rövid élettartamú operációsrendszer-lemezkövetelmények határozzák meg az NVMe-eszköz particionálásának módját a kiépítéskor. Ez zavaró lehet, mivel nem fér hozzá az összes tárolójához, különösen sok olyan virtuálisgép-méret esetén, amelyek csak egy NVMe lemezzel érhetők el.
A viselkedés ellenőrzéséhez használja az alábbi példát:
# Create Standard_D2ads_v6 (Single 100 GiB NVMe disk) node pool using ephemeral OS disk with 60 GiB capacity
az aks nodepool add \
--resource-group $resourceGroup \
--cluster-name $clusterName \
--name $nodePoolName \
--node-count 1 \
--node-vm-size Standard_D2ads_v6 \
--node-osdisk-type Ephemeral \
--node-osdisk-size 60
kubectl debug "node/$nodeName" \
--image=ubuntu \
--profile=sysadmin -it \
-- chroot /host /bin/bash
lsblk -o NAME,FSTYPE,LABEL,MOUNTPOINT,SIZE,VENDOR,MODEL
NAME FSTYPE LABEL MOUNTPOINT SIZE VENDOR MODEL
sr0 750K Msft Virtual DVD-ROM
nvme0n1 60G MSFT NVMe Accelerator v1.0
|-nvme0n1p1 ext4 cloudimg-rootfs / 59.9G
|-nvme0n1p14 4M
`-nvme0n1p15 vfat UEFI /boot/efi 106M
Ha virtuálisgép-méreteket használ egyetlen helyi NVMe-adatlemezzel, és engedélyezi a rövid élettartamú operációsrendszer-lemezt, az operációs rendszer a teljes NVMe-lemezt felhasználja, így a Kubernetes számítási feladatai számára nem áll rendelkezésre hely az állandó kötetek kiépítéséhez. Két vagy több helyi NVMe-adatlemezzel rendelkező virtuálisgép-méretek esetén a rendszer egy lemezt használ a rövid élettartamú operációs rendszer számára, a többit pedig állandó kötetek kiépítésére a számítási feladatokhoz.
Jelenlegi korlátozások
- A rövid élettartamú operációsrendszer-lemez egy helyi NVMe-meghajtó egy részét használja fel, a fennmaradó rész elérhetetlen marad.
- A csomópont létrehozása után nem lehet elérni vagy csatlakoztatni a nem használt NVMe-helyet.
- Az NVMe-lemez nem frissíthető vagy újraparticionálásra nem használható az üzembe helyezés után.
Ügyfélre gyakorolt hatás
- Csökkentett használható NVMe-kapacitás a virtuális gép méretéhez képest.
- Nem lehet teljes mértékben nagy teljesítményű helyi tárterületet használni a számítási feladatokhoz.
- Lehetséges zavar és kényelmetlenség a frissítések vagy csomópontok cseréje során.
Recommendation
Az AKS-csomópontok kiépítése előtt döntse el a helyi NVMe-lemezek tervezett használatát az operációsrendszer-lemezhez vagy a Kubernetes számítási feladatok tárterületéhez. A rövid élettartamú operációsrendszer-lemezkonfiguráció nem módosítható a csomópont létrehozása után, így a tervek előre megtervezése esetén nem szükséges újra létrehozni a csomópontokat, ha a követelmények változnak.
Hagyja ki az operációsrendszer-lemez méretének bemenetét, amikor rövid élettartamú operációsrendszer-lemezeket tartalmazó AKS-csomópontokat hoz létre NVMe-alapú virtuális gépeken. Ez megakadályozza a helytelen konfigurációt, és igazodik a termékdokumentációhoz, így csökken a elérhetetlen kapacitással és a frissítéssel kapcsolatos problémák kockázata.
Megjegyzés:
Ezek a fejlesztések fontosak a felhasználói élmény és a működési hatékonyság szempontjából, különösen azért, mert egyre több virtuálisgép-termékváltozat érhető el egyetlen NVMe-lemezzel. Kövesse a legújabb AKS-dokumentációt, és figyelje az Azure-frissítéseket a rövid élettartamú lemezkezelés fejlesztéseihez.
Számítási feladatok teljesítményének mérése rövid élettartamú NVMe-adatlemezekkel
A rövid élettartamú NVMe-adatlemezek nagy átviteli sebességet és alacsony késést biztosítanak az AKS-számítási feladatokhoz, de fontos ellenőrizni a teljesítményt az alkalmazás követelményeinek megfelelően. A számítási feladatok különböző virtuálisgép-méreteken való összehasonlításával azonosíthatja az optimális konfigurációt, és szükség szerint módosíthatja a virtuálisgép-méreteket vagy a lemezkonfigurációkat.
Állítsa be az alkalmazást helyi NVMe-kötetekkel, majd használjon számítási feladatspecifikus teljesítményteszt-eszközöket az IOPS, az átviteli sebesség és a késés méréséhez. A PostgreSQL használatával például kövesse a PostgreSQL-hez készült infrastruktúra létrehozását a környezet üzembe helyezéséhez, és használja a pgbench-et az adatbázis teljesítményének kiértékeléséhez.
Az alábbi lépések általános teljesítménytesztet vezetnek be az Azure Container Storage által felügyelt fio- és helyi NVMe-kötetekkel.
Engedélyezze az Azure Container Storage szolgáltatást az AKS fürtön. Az Azure Container Storage rövid útmutatója
Helyezzen üzembe tárolási osztályt, általános kötetet, fio podot helyi NVMe-kötetekkel. Lásd: Helyi NVMe használata az Azure Container Storage-ban.
Futtassa a következő fio parancsot, és szükség szerint módosítsa azt.
# Run fio benchmark kubectl exec -it fiopod -- fio --directory=/mnt/cns --size=4000MB --filename_format='testfile.$jobnum' --wait_for_previous \ --thread --group_reporting --direct=1 --randrepeat=0 --norandommap=1 \ --ioengine=io_uring --numjobs=8 --disable_clat=1 --disable_slat=1 \ --name=precondition --bs=1M --iodepth=64 --rw=write \ --name=randwritebench --rw=randwrite --bs=4k --iodepth=16 --time_based --runtime=60 \ --name=randreadbench --rw=randread --bs=4k --iodepth=16 --time_based --runtime=60 \ --name=seqwritebench --rw=write --bs=128k --iodepth=16 --time_based --runtime=60 \ --name=seqreadbench --rw=read --bs=128k --iodepth=16 --time_based --runtime=60 > ./fio.log result=$(cat ./fio.log | \ awk ' BEGIN { print "Scenario,Type,IOPS,BW(MiB/s)" } /^[a-z]+bench:/ { split($1, a, ":") scenario = a[1] } /read: IOPS=/ && scenario ~ /(randreadbench|seqreadbench)/ { type = "read" match($0, /IOPS=([0-9.]+)([kM]?)/, iops_arr) match($0, /BW=([0-9.]+)MiB\/s/, bw_arr) iops = iops_arr[1] unit = iops_arr[2] if (unit == "k") iops *= 1000 else if (unit == "M") iops *= 1000000 bw = bw_arr[1] printf "%s,%s,%.0f,%.2f\n", scenario, type, iops, bw } /write: IOPS=/ && scenario ~ /(randwritebench|seqwritebench)/ { type = "write" match($0, /IOPS=([0-9.]+)([kM]?)/, iops_arr) match($0, /BW=([0-9.]+)MiB\/s/, bw_arr) iops = iops_arr[1] unit = iops_arr[2] if (unit == "k") iops *= 1000 else if (unit == "M") iops *= 1000000 bw = bw_arr[1] printf "%s,%s,%.0f,%.2f\n", scenario, type, iops, bw } ' | column -t -s,)Futtassa a fio tesztet a virtuális gépen egyetlen NVMe lemezzel (például Standard_L8s_v3) és a virtuális gépen két NVMe lemezzel (például Standard_L16s_v3). Értékelje ki az NVMe kötet több NVMe-lemezen való csíkozásából származó teljesítménybeli javulást. Példákként tekintse meg a következő diagramokat: