Aanbevolen procedures voor lezen in Linux NFS voor Azure NetApp Files
Dit artikel helpt u inzicht te hebben in aanbevolen procedures voor de cache van het bestandssysteem voor Azure NetApp Files.
NFS-aanvragen die voorspellend worden gelezen, worden geblokkeerd vanuit een bestand vóór I/O-aanvragen door de toepassing. Het is ontworpen om de doorvoer van de client sequentiële leesbewerking te verbeteren. Tot voor kort stellen alle moderne Linux-distributies de waarde voor lezen in op een equivalent van 15 keer de gekoppelde bestandssysteem.rsize
In de volgende tabel ziet u de standaardwaarden voor voorlezen voor elke opgegeven rsize
koppelingsoptie.
Gekoppeld bestandssysteem rsize |
Leesbewerkingen blokkeren |
---|---|
64 KiB | 960 KiB |
256 KiB | 3.840 KiB |
1.024 KiB | 15.360 KiB |
RHEL 8.3 en Ubuntu 18.04 hebben wijzigingen geïntroduceerd die de sequentiële leesprestaties van de client negatief kunnen beïnvloeden. In tegenstelling tot eerdere releases stellen deze distributies de standaardwaarde van 128 KiB in op een standaardwaarde van 128 KiB, ongeacht de rsize
gebruikte koppelingsoptie. Als u een upgrade uitvoert van releases met de grotere leeswaarde naar releases met de standaardwaarde 128-KiB, neemt de sequentiële leesprestaties af. Leeswaarden kunnen echter dynamisch en permanent omhoog worden afgestemd. Testen met SAS GRID heeft bijvoorbeeld de 15.360 KiB-leeswaarde optimaal gevonden in vergelijking met 3.840 KiB, 960 KiB en 128 KiB. Er zijn onvoldoende tests uitgevoerd boven 15.360 KiB om positieve of negatieve impact te bepalen.
In de volgende tabel ziet u de standaardwaarden voor lezen voor elke momenteel beschikbare distributie.
Distributie | Vrijgeven | Leesbewerkingen blokkeren |
---|---|---|
RHEL | 8.3 | 128 KiB |
RHEL | 7.X, 8.0, 8.1, 8.2 | 15 X rsize |
SLES | 12.X – ten minste 15SP2 | 15 X rsize |
Ubuntu | 18.04 – ten minste 20.04 | 128 KiB |
Ubuntu | 16.04 | 15 X rsize |
Debian | Maximaal 10 | 15 x rsize |
Werken met het bestandssysteem per NFS
NFS-leesbewerking wordt gedefinieerd op het koppelpunt voor een NFS-bestandssysteem. De standaardinstelling kan zowel dynamisch als permanent worden weergegeven en ingesteld. Voor het gemak is het volgende bash-script dat is geschreven door Red Hat, beschikbaar voor het weergeven of dynamisch instellen van leesbewerkingen voor het gehoeveelheid NFS-bestandssysteem.
Lezen kan dynamisch worden gedefinieerd per NFS-koppeling met behulp van het volgende script of permanent met behulp van udev
regels, zoals wordt weergegeven in deze sectie. Als u de leesbewerking voor een gekoppeld NFS-bestandssysteem wilt weergeven of instellen, kunt u het volgende script opslaan als een bash-bestand, de machtigingen van het bestand wijzigen om het bestand een uitvoerbaar bestand (chmod 544 readahead.sh
) te maken en zoals weergegeven uit te voeren.
Leeswaarden weergeven of instellen
Voer de volgende opdracht uit om de huidige waarde voor lezen weer te geven (de geretourneerde waarde bevindt zich in KiB):
./readahead.sh show <mount-point>
Voer de volgende opdracht uit om een nieuwe waarde in te stellen voor lezen:
./readahead.sh set <mount-point> [read-ahead-kb]
Opmerking
#!/bin/bash
# set | show readahead for a specific mount point
# Useful for things like NFS and if you do not know / care about the backing device
#
# To the extent possible under law, Red Hat, Inc. has dedicated all copyright
# to this software to the public domain worldwide, pursuant to the
# CC0 Public Domain Dedication. This software is distributed without any warranty.
# For more information, see the [CC0 1.0 Public Domain Dedication](http://creativecommons.org/publicdomain/zero/1.0/).
E_BADARGS=22
function myusage() {
echo "Usage: `basename $0` set|show <mount-point> [read-ahead-kb]"
}
if [ $# -gt 3 -o $# -lt 2 ]; then
myusage
exit $E_BADARGS
fi
MNT=${2%/}
BDEV=$(grep $MNT /proc/self/mountinfo | awk '{ print $3 }')
if [ $# -eq 3 -a $1 == "set" ]; then
echo $3 > /sys/class/bdi/$BDEV/read_ahead_kb
elif [ $# -eq 2 -a $1 == "show" ]; then
echo "$MNT $BDEV /sys/class/bdi/$BDEV/read_ahead_kb = "$(cat /sys/class/bdi/$BDEV/read_ahead_kb)
else
myusage
exit $E_BADARGS
fi
Permanente leesbewerking instellen voor NFS-koppeling
Regels kunnen als volgt worden geschreven om permanent lees-voor-lezen in te stellen voor NFS-koppeling udev
:
Maken en testen
/etc/udev/rules.d/99-nfs.rules
:SUBSYSTEM=="bdi", ACTION=="add", PROGRAM="<absolute_path>/awk -v bdi=$kernel 'BEGIN{ret=1} {if ($4 == bdi) {ret=0}} END{exit ret}' /proc/fs/nfsfs/volumes", ATTR{read_ahead_kb}="15380"
Pas de
udev
regel toe:sudo udevadm control --reload
Volgende stappen
- Aanbevolen procedures voor directe I/O voor Linux voor Azure NetApp Files
- Aanbevolen procedures voor cache van Linux-bestandssysteem voor Azure NetApp Files
- Aanbevolen procedures voor koppelen in Linux NFS voor Azure NetApp Files
- Best practices voor gelijktijdigheid van Linux
- Best practices voor virtuele Azure-machine-SKU's
- Prestatiebenchmarks voor Linux