Wie kann ich die maximale E/A-Leistung aus meinen EBS-Datenträgern herausholen, die auf Nitro-basierten EC2-Instances gehostet werden?

Lesedauer: 3 Minute
0

Ich führe meinen Workload auf Nitro-basierten Instances von Amazon Elastic Compute Cloud (Amazon EC2) aus. Ich möchte sicherstellen, dass ich die maximale I/O-Leistung von Amazon Elastic Block Store (Amazon EBS) -Volumes erhalte, die auf meinen Instances gehostet werden.

Behebung

1.Prüfen Sie, ob Ihr EBS-Volume sein IOPS-Kontingent erreicht hat. Die Latenz kann zunehmen, wenn Ihr Volume sein IOPS-Kontingent erreicht, und eine erhöhte Latenz beeinträchtigt die Leistung. Wie optimiere ich die Leistung meiner Amazon-EBS-Provisioned-IOPS-Volumes?
**Hinweis:**Wenn Sie ein GP2-Volume verwenden, vergewissern Sie sich, dass Ihr Volume das Burst-Guthaben nicht ausgeschöpft hat.

2.Um NVMe-Speicher verwenden zu können, müssen Sie eines der folgenden Betriebssysteme (OS) ausführen:

  • Amazon Linux Amazon Machine Image (AMI) oder höher und Kernel 4.12 oder höher
  • CentOS - 7.0 oder höher und Kernel 3.10 oder höher
  • Red Hat - 7.0 oder höher und Kernel 3.10 oder höher
  • Ubuntu 19.10 mit Kernel 5.0 oder Ubuntu 18.04.03 mit Kernel 5.0 und höher
    **Hinweis:**Für diese Ubuntu-Versionen ist Multi-Queue standardmäßig aktiviert.
  • Ubuntu - 16.04 oder 16.10
    **Hinweis:**Für diese Ubuntu-Versionen sind Multi-Queue-Scheduler nicht kernelkompiliert und müssen separat geladen werden
  • SUSE 12 oder SUSE 11 mit SP3 oder höher
  • Windows Server 2008 R2, 2012 R2 und 2016 oder höher

Alternativ dazu können Sie sicherstellen, dass die Kernel-Version einen E/A-Schedulers mit Multi-Queue-Funktion unterstützt. Die am häufigsten verwendeten E/A-Scheduler mit Multi-Queue-Funktion sind kyber, mq-deadline und bfq (budget fair queue).

**Hinweis:**Verwenden Sie für Betriebssysteme wie Oracle, Linux oder Debian eine Kernelversion, die einen I/O-Scheduler mit mehreren Warteschlangen enthält oder unterstützt. CentOS und seine Kernel-Version unterstützen einen I/O-Scheduler mit mehreren Warteschlangen.

Wenn Sie eine frühere Version dieser Betriebssysteme verwenden, kann es zu einem Rückgang der I/O-Leistung kommen, da Nitro-basierte Instances mehrere Warteschlangen auf Host-Ebene verarbeiten. Dies führt zu Inkompatibilität zwischen dem Scheduler auf Betriebssystem- und Host-Ebene.

Bevor das Volume I/O-Lese- oder Schreibanforderungen abfängt, die an das EBS-Volume gesendet werden, durchlaufen die Anfragen mehrere Ebenen. Bei älteren Kernelversionen ohne Multi-Queue-Scheduler auf Nitro-basierten Instances kommt es manchmal zu Verzögerungen in der I/O-Scheduler-Schicht (I2D). Die Verzögerung tritt bei Tests und Benchmark-Ergebnissen auf, die die Tools blktrace, blkparse und btt verwenden. Weitere Informationen zu diesen Tools finden Sie unter blktrace, blkparse und btt auf der die.net-Website.

Um die I/O-Leistung auf Nitro-basierten Instances zu verbessern, verfügt CentOS 7 über den Multi-Queue Block I/O Queueing Mechanism (blk-mq), der es Gerätetreibern ermöglicht, I/O-Anfragen mehreren Hardware- oder Software-Warteschlangen zuzuordnen. Für maximale Leistung auf Nitro-basierten Systemen ist es eine bewährte Methode, ein aktuelles Betriebssystem mit dem neuesten Kernel zu verwenden.

E/A-Scheduler auf CentOS 6

$cat /sys/block/xvdf/queue/scheduler noop anticipatory deadline \[cfq\]$cat config-2.6.32-754.30.2.el6.x86\_64 | grep -i blk\_mq

**Hinweis:**Da die Konfigurationsdatei im CentOS 6-Kernel den Noop-Scheduler verwendet, gibt sie das blk\ _mq nicht zurück.

I/O-Scheduler auf Redhat 9 und Kernel 5.14 und höher

cat /sys/block/<EBS device name>/queue/scheduler \[none\] mq-deadline kyber bfq

Bevor Sie sich für einen Terminplaner entscheiden, überprüfen Sie die Details jedes einzelnen Planers. Weitere Informationen finden Sie unter Verfügbare Disk Scheduler auf der Red Hat Website.

Führen Sie den folgenden Befehl aus, um den Scheduler während der Laufzeit der EC2-Instance auf Betriebssystemebene zu aktualisieren:

#sudo echo 'kyber'> /sys/block/<EBS device name>/queue/scheduler

Um den I/O-Scheduler dauerhaft zu ändern, ändern Sie die Grub-Konfiguration und aktualisieren Sie den Elevator-Parameter. Die folgenden Schritte gelten für CentOS und Red Hat Enterprise Linux (RHEL):

1.Führen Sie den folgenden Befehl aus:

#sudo vim /etc/default/grubGRUB\_CMDLINE\_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet elevator=kyber"

2.Führen Sie den folgenden Befehl aus:

#sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Wenn die Instanz neu gestartet wird, bleibt der I/O-Scheduler gesetzt.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 6 Monaten