

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Instanzen konfigurieren AL2
<a name="configure-ec2-instance"></a>

Nachdem Sie Ihre AL2 Instance erfolgreich gestartet und sich bei ihr angemeldet haben, können Sie Änderungen daran vornehmen. Ihnen stehen viele Wege zur Konfiguration einer Instance offen, um die Anforderungen einer bestimmten Anwendung zu erfüllen. Die folgenden Aufgaben sollen Ihnen bei den ersten Schritten helfen.

**Topics**
+ [Gängige Konfigurationsszenarien](#instance-configuration-scenarios)
+ [Software auf Ihrer AL2 Instance verwalten](managing-software.md)
+ [Kontrolle des Prozessorstatus für Ihre Amazon EC2 EC2-Instance AL2](processor_state_control.md)
+ [I/O-Scheduler für AL2](io-scheduler.md)
+ [Ändern Sie den Hostnamen Ihrer Instanz AL2](set-hostname.md)
+ [Richten Sie dynamisches DNS auf Ihrer Instanz ein AL2](dynamic-dns.md)
+ [Konfigurieren Sie Ihre Netzwerkschnittstelle mit ec2-net-utils für AL2](ec2-net-utils.md)

## Gängige Konfigurationsszenarien
<a name="instance-configuration-scenarios"></a>

Die Basisversion von Amazon Linux umfasst viele Softwarepakete and Serviceprogramme, die für grundlegende Servervorgänge benötigt werden. Allerdings stehen noch viele weitere Softwarepakete in verschiedenen Software-Repositorys zur Verfügung und Sie können sogar noch mehr Pakete aus Quellcode selbst erstellen. Weitere Informationen zum Installieren und Erstellen von Software von diesen Standorten finden Sie unter [Software auf Ihrer AL2 Instance verwalten](managing-software.md).

Amazon-Linux-Instances sind mit einem `ec2-user` vorkonfiguriert, aber Sie möchten möglicherweise andere Benutzer hinzufügen, die nicht über Super-User-Privilegien verfügen. Weitere Informationen zum Hinzufügen und Entfernen von Benutzern finden Sie unter [Benutzer auf Ihrer Linux Instance verwalten](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/managing-users.html) im *Amazon EC2 EC2-Benutzerhandbuch*.

Falls Sie über ein Netzwerk mit einem Domain-Namen verfügen, können Sie den Hostnamen einer Instance so verändern, dass sie sich als Teil dieser Domain identifiziert. Außerdem können Sie die Systemanzeige einen aussagekräftigeren Namen anzeigen lassen, ohne die Einstellungen des Hostnamens zu verändern. Weitere Informationen finden Sie unter [Ändern Sie den Hostnamen Ihrer Instanz AL2](set-hostname.md). Sie können eine Instance für die Verwendung eines Serviceanbieters für ein dynamisches DNS konfigurieren. Weitere Informationen finden Sie unter [Richten Sie dynamisches DNS auf Ihrer Instanz ein AL2](dynamic-dns.md).

Wenn Sie eine Instance in Amazon EC2 starten, haben Sie die Möglichkeit, Benutzerdaten an die Instance zu übergeben, die verwendet werden können, um allgemeine Konfigurationsaufgaben durchzuführen und nach dem Start der Instance Skripts auszuführen. Sie können zwei Arten von Benutzerdaten an Amazon EC2 übergeben: Cloud-Init-Anweisungen und Shell-Skripts. Weitere Informationen finden Sie unter [Befehle auf Ihrer Linux Instance beim Start ausführen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) im *Amazon EC2 EC2-Benutzerhandbuch*.

# Software auf Ihrer AL2 Instance verwalten
<a name="managing-software"></a>

Die Basisversion von Amazon Linux umfasst viele Softwarepakete and Serviceprogramme, die für grundlegende Servervorgänge benötigt werden.

Diese Information bezieht sich auf AL2. Weitere Informationen dazu AL2023 finden Sie unter [Pakete und Betriebssystemupdates verwalten AL2023 im](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) *Amazon Linux 2023-Benutzerhandbuch*.

Software sollte nach Möglichkeit auf dem neuesten Stand gehalten werden. Viele Pakete einer Linux-Bereitstellung werden häufig aktualisiert, um Fehler zu beheben, Features hinzuzufügen und Sicherheitslücken zu schließen. Weitere Informationen finden Sie unter [Aktualisieren Sie die Instanzsoftware auf Ihrer AL2 Instanz](install-updates.md).

Standardmäßig werden AL2 Instances mit den folgenden aktivierten Repositorys gestartet:
+ `amzn2-core`
+ `amzn2extra-docker`

In diesen Repositorys sind zwar viele Pakete verfügbar, von denen sie aktualisiert werden AWS, aber vielleicht gibt es ein Paket, das Sie installieren möchten und das in einem anderen Repository enthalten ist. Weitere Informationen finden Sie unter [Fügen Sie Repositorys auf einer Instance AL2 hinzu](add-repositories.md). Weitere Informationen dazu, wie Sie Pakete in aktivierten Repositorys finden und installieren finden Sie unter [Suchen und installieren Sie Softwarepakete auf einer AL2 Instanz](find-install-software.md).

Nicht alle Software steht als Paket in einem Repository zur Verfügung: Einige Software muss auf einer Instance aus ihrem Quellcode kompiliert werden. Weitere Informationen finden Sie unter [Bereiten Sie die Kompilierung der Software auf einer AL2 Instanz vor](compile-software.md).

AL2 Instanzen verwalten ihre Software mithilfe des Yum-Paketmanagers. Der Paketmanager „yum“ kann Software installieren, entfernen und aktualisieren sowie alle Abhängigkeiten eines Pakets verwalten.

**Topics**
+ [Aktualisieren Sie die Instanzsoftware auf Ihrer AL2 Instanz](install-updates.md)
+ [Fügen Sie Repositorys auf einer Instance AL2 hinzu](add-repositories.md)
+ [Suchen und installieren Sie Softwarepakete auf einer AL2 Instanz](find-install-software.md)
+ [Bereiten Sie die Kompilierung der Software auf einer AL2 Instanz vor](compile-software.md)

# Aktualisieren Sie die Instanzsoftware auf Ihrer AL2 Instanz
<a name="install-updates"></a>

Software sollte nach Möglichkeit auf dem neuesten Stand gehalten werden. Pakete einer Linux-Bereitstellung werden häufig aktualisiert, um Fehler zu beheben, Features hinzuzufügen und Sicherheitslücken zu schließen. Wenn Sie eine Amazon Linux-Instance zum ersten Mal starten und eine Verbindung zu ihr herstellen, wird u. U. eine Meldung angezeigt, die Sie dazu auffordert, aus Sicherheitsgründen Softwarepakete zu aktualisieren. In diesem Abschnitt wird beschrieben, wie Sie das gesamte System oder nur ein einzelnes Paket aktualisieren.

Diese Information bezieht sich auf AL2. Weitere Informationen dazu AL2023 finden Sie unter [Pakete und Betriebssystemupdates verwalten AL2023 im](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) *Amazon Linux 2023-Benutzerhandbuch*.

Informationen zu Änderungen und Aktualisierungen von finden Sie in AL2 den [AL2 Versionshinweisen](https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html).

Informationen zu Änderungen und Aktualisierungen von finden Sie in AL2023 den [AL2023 Versionshinweisen](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes.html).

**Wichtig**  
Wenn Sie eine EC2-Instance gestartet haben, die ein Amazon Linux 2-AMI in einem IPv6 Nur-Only-Subnetz verwendet, müssen Sie eine Verbindung mit der Instance herstellen und sie ausführen. `sudo amazon-linux-https disable` Dadurch kann Ihre AL2 Instance über den HTTP-Patch-Service eine Verbindung zum yum Repository in S3 IPv6 herstellen.

**Um alle Pakete auf einer AL2 Instanz zu aktualisieren**

1. (Optional) Starten Sie eine **screen**-Sitzung im Shell-Fenster. Manchmal treten u. U. Netzwerkunterbrechungen auf, die die SSH-Verbindung zur Instance unterbrechen. Wenn dies während einer lang andauernden Softwareaktualisierung geschieht, verwirrt dies die Instance, sie kann aber wiederhergestellt werden. Eine **screen**-Sitzung ermöglicht Ihnen, die Aktualisierung auch im Falle einer Verbindungsunterbrechung fortzusetzen, und später können Sie problemlos eine neue Verbindung zur Sitzung herstellen.

   1. Führen Sie den Befehl **screen** aus, um die Sitzung zu beginnen.

      ```
      [ec2-user ~]$ screen
      ```

   1. Wird die Verbindung der Sitzung getrennt, melden Sie sich erneut auf der Instance an und rufen Sie die Liste der verfügbaren Bildschirme auf.

      ```
      [ec2-user ~]$ screen -ls
      There is a screen on:
      	17793.pts-0.ip-12-34-56-78	(Detached)
      1 Socket in /var/run/screen/S-ec2-user.
      ```

   1. Stellen Sie mithilfe des Befehls **screen -r** und der Prozess-ID des vorherigen Befehls erneut eine Verbindung zu dem Bildschirm her.

      ```
      [ec2-user ~]$ screen -r 17793
      ```

   1. Wenn Sie **screen** nicht weiter benötigen, verwenden Sie den Befehl **exit**, um die Sitzung zu schließen.

      ```
      [ec2-user ~]$ exit
      [screen is terminating]
      ```

1. Führen Sie den Befehl **yum update** aus. Fügen Sie optional das Flag `--security` hinzu, um nur Sicherheitsaktualisierungen zu installieren.

   ```
   [ec2-user ~]$ sudo yum update
   ```

1. Überprüfen Sie die aufgeführten Pakete, geben Sie **y** ein und drücken Sie die Eingabetaste, um die Aktualisierungen anzunehmen. Die Aktualisierung aller Pakete eines Systems nimmt u. U. mehrere Minuten in Anspruch. Die Ausgabe von **yum** zeigt den Status der Aktualisierung an, während diese durchgeführt wird.

1. (Optional) [Starten Sie Ihre Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-reboot.html) neu, um sicherzustellen, dass Sie die neuesten Pakete und Bibliotheken aus Ihrem Update verwenden. Kernel-Updates werden erst geladen, wenn ein Neustart erfolgt. Auf Aktualisierungen der `glibc`-Bibliotheken sollte ebenso ein Neustart folgen. Für Aktualisierungen der Pakete, die Services steuern, reicht u. U. der Neustart des Service aus, um Aktualisierungen zu aktivieren, aber ein Systemneustart stellt sicher, dass alle durchgeführten Paket- und Bibliothekaktualisierungen vollständig geladen werden.

**Um ein einzelnes Paket auf einer AL2 Instance zu aktualisieren**

Wenden Sie die folgende Vorgehensweise an, um anstatt des ganzen Systems nur ein einzelnes Paket (und seine Abhängigkeiten) zu aktualisieren.

1. Führen Sie den Befehl **yum update** mit dem Namen des Pakets aus, das Sie aktualisieren möchten.

   ```
   [ec2-user ~]$ sudo yum update openssl
   ```

1. Überprüfen Sie die aufgeführten Paketinformationen, geben Sie **y** ein und drücken Sie die Eingabetaste, um die Aktualisierung(en) anzunehmen. Manchmal wird mehr als ein Paket aufgeführt, falls Probleme mit Paketabhängigkeiten bestehen. Die Ausgabe von **yum** zeigt den Status der Aktualisierung an, während diese durchgeführt wird.

1. (Optional) [Starten Sie Ihre Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-reboot.html) neu, um sicherzustellen, dass Sie die neuesten Pakete und Bibliotheken aus Ihrem Update verwenden. Kernel-Updates werden erst geladen, wenn ein Neustart erfolgt. Auf Aktualisierungen der `glibc`-Bibliotheken sollte ebenso ein Neustart folgen. Für Aktualisierungen der Pakete, die Services steuern, reicht u. U. der Neustart des Service aus, um Aktualisierungen zu aktivieren, aber ein Systemneustart stellt sicher, dass alle durchgeführten Paket- und Bibliothekaktualisierungen vollständig geladen werden.

# Fügen Sie Repositorys auf einer Instance AL2 hinzu
<a name="add-repositories"></a>

Diese Information bezieht sich auf. AL2 Weitere Informationen dazu AL2023 finden Sie unter [Deterministische Upgrades durch versionierte Repositorys AL2023 im Amazon](https://docs.aws.amazon.com/linux/al2023/ug/deterministic-upgrades.html) *Linux 2023* User Guide.

Standardmäßig werden AL2 Instances mit den folgenden aktivierten Repositorys gestartet:
+ `amzn2-core`
+ `amzn2extra-docker`

In diesen Repositorys befinden sich viele Pakete, die von Amazon Web Services aktualisiert werden, aber möglicherweise möchten Sie ein Paket installieren, das in einem anderen Repository enthalten ist.

Zum Installieren eines Pakets aus einem anderen Repository mithilfe von **yum** müssen Sie die Daten des Repository der Datei `/etc/yum.conf` oder seiner eigenen `repository.repo`-Datei im Verzeichnis `/etc/yum.repos.d` hinzufügen. Dies kann manuell erfolgen, aber die meisten yum-Repositorys verfügen über eigene `repository.repo`-Dateien an ihrer Repository-URL.

**Stellen Sie wie folgt fest, welche yum-Repositorys bereits installiert sind:**  
Mit dem folgenden Befehl führen Sie die installierten yum-Repositorys auf:

```
[ec2-user ~]$ yum repolist all
```

Die resultierende Ausgabe führt alle installierten Repositorys und ihre jeweiligen Status auf. Aktivierte Repositorys zeigen die Anzahl der Pakete an, die sie enthalten.

**Fügen Sie ein yum-Repository wie folgt zur Datei hinzu /etc/yum.repos.d**

1. Suchen Sie den Speicherort der Datei `.repo`. Dieser hängt von dem Repository ab, das Sie hinzufügen. In diesem Beispiel befindet sich die Datei `.repo` unter `https://www.example.com/repository.repo`.

1. Erstellen Sie ein Repository mit dem Befehl **yum-config-manager**.

   ```
   [ec2-user ~]$ sudo yum-config-manager --add-repo https://www.example.com/repository.repo
   Loaded plugins: priorities, update-motd, upgrade-helper
   adding repo from: https://www.example.com/repository.repo
   grabbing file https://www.example.com/repository.repo to /etc/yum.repos.d/repository.repo
   repository.repo                                      | 4.0 kB     00:00
   repo saved to /etc/yum.repos.d/repository.repo
   ```

Nach der Installation von Repositorys müssen diese wie folgt aktiviert werden.

**Aktivieren Sie ein yum-Repository in wie folgt /etc/yum.repos.d**  
Verwenden Sie den Befehl **yum-config-manager** mit dem `--enable repository`-Namespace. Der folgende Befehl aktiviert das Repository „Extra Packages for Enterprise Linux (EPEL)“ des Projekts „Fedora“. Standardmäßig steht dieses Repository auf `/etc/yum.repos.d`-Instances unter Amazon Linux AMI zur Verfügung, ist aber nicht aktiviert.

```
[ec2-user ~]$ sudo yum-config-manager --enable epel
```

Weitere Informationen und den Download der neuesten Version dieses Pakets finden Sie unter [https://fedoraproject. org/wiki/EPEL](https://fedoraproject.org/wiki/EPEL).

# Suchen und installieren Sie Softwarepakete auf einer AL2 Instanz
<a name="find-install-software"></a>

Sie können ein Paketverwaltungstool verwenden, um Softwarepakete zu suchen und zu installieren. In Amazon Linux 2 ist das Standard-Tool zur Verwaltung von SoftwarepaketenYUM. In ist AL2023 das Standard-Tool zur Verwaltung von SoftwarepaketenDNF. Weitere Informationen finden Sie unter [Package Management Tool](https://docs.aws.amazon.com/linux/al2023/ug/package-management.html) im *Amazon Linux 2023 User Guide*.

## Suchen Sie nach Softwarepaketen auf einer AL2 Instance
<a name="find-software"></a>

Verwenden Sie den Befehl **yum search**, um nach den Beschreibungen der Pakete zu suchen, die in den konfigurierten Repositorys zur Verfügung stehen. Diese Funktion ist besonders hilfreich, wenn Sie den genauen Namen des zu installierenden Pakets nicht kennen. Hängen Sie die Stichwortsuche einfach an den Befehl an. Grenzen Sie die Suchanfragen mit Anführungszeichen ab, wenn Sie mehrere Stichwortsuchen anhängen.

```
[ec2-user ~]$ yum search "find"
```

Es folgt eine Beispielausgabe.

```
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
============================== N/S matched: find ===============================
findutils.x86_64 : The GNU versions of find utilities (find and xargs)
gedit-plugin-findinfiles.x86_64 : gedit findinfiles plugin
ocaml-findlib-devel.x86_64 : Development files for ocaml-findlib
perl-File-Find-Rule.noarch : Perl module implementing an alternative interface to File::Find
robotfindskitten.x86_64 : A game/zen simulation. You are robot. Your job is to find kitten.
mlocate.x86_64 : An utility for finding files by name
ocaml-findlib.x86_64 : Objective CAML package manager and build helper
perl-Devel-Cycle.noarch : Find memory cycles in objects
perl-Devel-EnforceEncapsulation.noarch : Find access violations to blessed objects
perl-File-Find-Rule-Perl.noarch : Common rules for searching for Perl things
perl-File-HomeDir.noarch : Find your home and other directories on any platform
perl-IPC-Cmd.noarch : Finding and running system commands made easy
perl-Perl-MinimumVersion.noarch : Find a minimum required version of perl for Perl code
texlive-xesearch.noarch : A string finder for XeTeX
valgrind.x86_64 : Tool for finding memory management bugs in programs
valgrind.i686 : Tool for finding memory management bugs in programs
```

Mehrere Schlüsselwortsuchanfragen in Anführungszeichen geben nur Ergebnisse zurück, die exakt zu der Anfrage passen. Falls Sie das gesuchte Paket nicht finden, suchen Sie nur nach einem Stichwort und überfliegen Sie die Ergebnisse. Sie können auch Synonyme der Stichwörter verwenden, um die Suche zu verallgemeinern.

Weitere Informationen zu Paketen für AL2 finden Sie unter:
+ [AL2 Extras-Bibliothek](al2-extras.md)
+ [Paket-Repository](ec2.md#package-repository)

## Installieren Sie Softwarepakete auf einer AL2 Instanz
<a name="install-software"></a>

In AL2 durchsucht das Yum-Paketverwaltungstool alle Ihre aktivierten Repositorys nach verschiedenen Softwarepaketen und behandelt alle Abhängigkeiten im Softwareinstallationsprozess. Informationen zur Installation von Softwarepaketen in AL2023 finden Sie unter [Pakete und Betriebssystemupdates verwalten](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) im *Amazon Linux 2023-Benutzerhandbuch*.

**So installieren Sie ein Paket aus einem Repository:**  
Verwenden Sie den **yum install *package*** Befehl und *package* ersetzen Sie ihn durch den Namen der zu installierenden Software. Geben Sie beispielsweise den folgenden Befehl ein, um den **links** textbasierten Webbrowser Links zu installieren:

```
[ec2-user ~]$ sudo yum install links
```

**So installieren Sie RPM-Paketdateien, die Sie heruntergeladen haben:**  
Sie können auch den Befehl **yum install** verwenden, um RPM-Paketdateien zu installieren, die Sie aus dem Internet heruntergeladen haben. Hängen Sie dazu anstatt des Namens eines Repository-Pakets den Pfad der RPM-Datei an den Installationsbefehl an.

```
[ec2-user ~]$ sudo yum install my-package.rpm
```

**So erstellen Sie eine Liste der installierten Pakete:**  
Verwenden Sie den folgenden Befehl, um eine Liste der installierten Pakete auf Ihrer Instance anzuzeigen.

```
[ec2-user ~]$ yum list installed
```

# Bereiten Sie die Kompilierung der Software auf einer AL2 Instanz vor
<a name="compile-software"></a>

Open-Source-Software ist im Internet verfügbar, ohne dass sie vorkompiliert und in einem Paketarchiv zum Download bereitgestellt wurde. Irgendwann stoßen Sie wahrscheinlich auf ein Softwarepaket, dass Sie selbst aus seinem Quellcode kompilieren möchten. Damit Ihr System Software in AL2 und Amazon Linux kompilieren kann, müssen Sie mehrere Entwicklungstools installieren, z. B. **make****gcc**, und**autoconf**.

Da nicht jede Amazon EC2-Instance Software kompilieren muss, sind diese Tools nicht standardmäßig installiert. Stattdessen stehen sie in Form einer Paketgruppe namens „Development Tools“ zur Verfügung, die sich einer Instance einfach mithilfe des Befehls **yum groupinstall** hinzufügen lässt.

```
[ec2-user ~]$ sudo yum groupinstall "Development Tools"
```

Software-Quellcodepakete stehen häufig (von Websites wie [https://github.com/](https://github.com/)und [http://sourceforge.net/](https://sourceforge.net/)) als komprimierte Archivdatei, die als Tarball bezeichnet wird, zum Herunterladen zur Verfügung. Sie verfügen üblicherweise über die Dateierweiterung `.tar.gz`. Diese Archive lassen sich mithilfe des Befehls **tar** dekomprimieren.

```
[ec2-user ~]$ tar -xzf software.tar.gz
```

Wenn Sie das Quellcodepaket dekomprimiert und extrahiert haben, suchen Sie die Datei `README` oder `INSTALL` im Quellcodeverzeichnis. Diese Dateien enthalten weitere Anleitungen zum Kompilieren und Installieren des Quellcodes. 

**So rufen Sie den Quellcode für Amazon Linux-Pakete ab**  
Amazon Web Services stellt den Quellcode von installierten Paketen zur Verfügung. Nutzen Sie zum Herunterladen des Quellcodes von installierten Paketen den Befehl **yumdownloader --source**.

Führen Sie den **yumdownloader --source *package*** Befehl aus, um den Quellcode für *package* herunterzuladen. Geben Sie beispielsweise den folgenden Befehl ein, um den Quellcode des Pakets `htop` zu installieren:

```
[ec2-user ~]$ yumdownloader --source htop

Loaded plugins: priorities, update-motd, upgrade-helper
Enabling amzn-updates-source repository
Enabling amzn-main-source repository
amzn-main-source                                                                                              | 1.9 kB  00:00:00     
amzn-updates-source                                                                                           | 1.9 kB  00:00:00     
(1/2): amzn-updates-source/latest/primary_db                                                                  |  52 kB  00:00:00     
(2/2): amzn-main-source/latest/primary_db                                                                     | 734 kB  00:00:00     
htop-1.0.1-2.3.amzn1.src.rpm
```

Der Speicherort des Quell-RPM befindet sich in dem Verzeichnis, aus dem Sie den Befehl ausgeführt haben.

# Kontrolle des Prozessorstatus für Ihre Amazon EC2 EC2-Instance AL2
<a name="processor_state_control"></a>

Über den C-Zustand werden die Ruhezustandsebenen gesteuert, in denen sich ein Core im Leerlauf befinden kann. C-Zustände sind von C0 (Arbeitszustand, in dem der Core „wach“ ist und Anweisungen ausführt) bis C6 („tiefster“ Leerlaufzustand, in dem ein Core ausgeschaltet ist) nummeriert.

P-Status steuern die gewünschte Leistung (in CPU-Frequenz) eines Kerns. P-Zustände sind ab P0 (höchste Performancestufe, in der Intel Turbo Boost-Technologie für den Core eingesetzt werden kann, um ggf. die Frequenz zu erhöhen) über P1 (in diesem P-Zustand wird die maximale Basisfrequenz angefordert) bis P15 (geringstmögliche Frequenz) nummeriert.

Es kann ratsam sein, die Einstellungen für den C- bzw. P-Zustand zu ändern, um die Konsistenz der Prozessorleistung zu erhöhen, die Latenz zu reduzieren oder Ihre Instance für einen bestimmten Workload zu optimieren. Die Standardeinstellungen für den C- und P-Zustand sind auf maximale Performance ausgelegt. Dies ist für die meisten Workloads optimal. Erwägen Sie jedoch, mit den für diese Instances verfügbaren Einstellungen für den C- oder P-Zustand zu experimentieren, wenn Ihre Anwendung von einer verringerten Latenz auf Kosten von höheren Single- oder Dual-Core-Frequenzen oder von einer konsistenten Performance bei niedrigeren Frequenzen (im Gegensatz zu diskontinuierlichen Turbo Boost-Frequenzen) profitieren würde.

Informationen zu Amazon EC2 EC2-Instance-Typen, die es dem Betriebssystem ermöglichen, C-Status und P-Status von Prozessoren zu steuern, finden Sie unter [Prozessor-State-Steuerung für Ihre Amazon EC2 EC2-Instance im *Amazon* EC2 EC2-Benutzerhandbuch](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/processor_state_control.html).

In den folgenden Abschnitten werden die unterschiedlichen Prozessorstatuskonfigurationen und die Überwachung der Auswirkungen Ihrer Konfiguration beschrieben. Diese Verfahren wurden für Amazon Linux geschrieben und gelten für Amazon Linux. Sie könnten jedoch auch für andere Linux-Distributionen mit einer Linux-Kernel-Version 3.9 oder neuer funktionieren.

**Anmerkung**  
Bei den Beispielen auf dieser Seite wurde Folgendes verwendet:  
Das **turbostat**-Dienstprogramm zeigt Informationen zur Prozessorfrequenz und zum C-Zustand an. Das **turbostat**-Dienstprogramm ist standardmäßig unter Amazon Linux verfügbar.
Der **stress**-Befehl simuliert eine Workload. Um **stress** zu installieren, aktivieren Sie zuerst das EPEL-Repository, indem Sie**sudo amazon-linux-extras install epel** und dann **sudo yum install -y stress** ausführen.
Wenn die Ausgabe die Informationen zum C-Zustand nicht anzeigt, schließen Sie die Option **--debug** im Befehl (**sudo turbostat --debug stress *<options>***) ein.

**Topics**
+ [Höchste Performance mit maximaler Turbo Boost-Frequenz](#turbo-perf)
+ [Hohe Performance und geringe Latenz durch die Beschränkung von tieferen C-Zuständen](#c-states)
+ [Basis-Performance mit geringster Variabilität](#baseline-perf)

## Höchste Performance mit maximaler Turbo Boost-Frequenz
<a name="turbo-perf"></a>

Dies ist die Standardkonfiguration zum Steuern des Prozessorzustands für das Amazon Linux AMI und wird für die meisten Workloads empfohlen. Diese Konfiguration bietet die höchste Performance mit geringerer Variabilität. Wenn für inaktive Cores „tiefere“ Ruhezustände zugelassen werden, ist der thermische Spielraum vorhanden, der erforderlich ist, damit Single- oder Dual-Core-Prozesse ihr maximales Turbo Boost-Potenzial erreichen können.

Das folgende Beispiel enthält eine Instance vom Typ `c4.8xlarge` mit zwei aktiven Cores, die ihre maximale Turbo Boost-Prozessorfrequenz erreichen.

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [30680] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [30680] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.54 3.44 2.90   0   9.18   0.00  85.28   0.00   0.00   0.00   0.00   0.00  94.04 32.70 54.18  0.00
 0   0   0   0.12 3.26 2.90   0   3.61   0.00  96.27   0.00   0.00   0.00   0.00   0.00  48.12 18.88 26.02  0.00
 0   0  18   0.12 3.26 2.90   0   3.61
 0   1   1   0.12 3.26 2.90   0   4.11   0.00  95.77   0.00
 0   1  19   0.13 3.27 2.90   0   4.11
 0   2   2   0.13 3.28 2.90   0   4.45   0.00  95.42   0.00
 0   2  20   0.11 3.27 2.90   0   4.47
 0   3   3   0.05 3.42 2.90   0  99.91   0.00   0.05   0.00
 0   3  21  97.84 3.45 2.90   0   2.11
...
 1   1  10   0.06 3.33 2.90   0  99.88   0.01   0.06   0.00
 1   1  28  97.61 3.44 2.90   0   2.32
...
10.002556 sec
```

In diesem Beispiel laufen v CPUs 21 und 28 mit ihrer maximalen Turbo-Boost-Frequenz, weil die anderen Kerne in den `C6` Ruhezustand übergegangen sind, um Strom zu sparen und sowohl Strom als auch thermischen Spielraum für die arbeitenden Kerne bereitzustellen. v CPUs 3 und 10 (jeweils teilen sich einen Prozessorkern mit v CPUs 21 und 28) befinden sich in dem `C1` Zustand und warten auf Anweisungen.

Im folgenden Beispiel verrichten alle 18 Kerne aktiv Arbeit, sodass kein Spielraum für maximalen Turbo-Boost besteht, aber sie laufen alle mit der „All-Core-Turbo-Boost-Geschwindigkeit“ von 3,2 GHz.

```
[ec2-user ~]$ sudo turbostat stress -c 36 -t 10
stress: info: [30685] dispatching hogs: 36 cpu, 0 io, 0 vm, 0 hdd
stress: info: [30685] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
            99.27 3.20 2.90   0   0.26   0.00   0.47   0.00   0.00   0.00   0.00   0.00 228.59 31.33 199.26  0.00
 0   0   0  99.08 3.20 2.90   0   0.27   0.01   0.64   0.00   0.00   0.00   0.00   0.00 114.69 18.55 99.32  0.00
 0   0  18  98.74 3.20 2.90   0   0.62
 0   1   1  99.14 3.20 2.90   0   0.09   0.00   0.76   0.00
 0   1  19  98.75 3.20 2.90   0   0.49
 0   2   2  99.07 3.20 2.90   0   0.10   0.02   0.81   0.00
 0   2  20  98.73 3.20 2.90   0   0.44
 0   3   3  99.02 3.20 2.90   0   0.24   0.00   0.74   0.00
 0   3  21  99.13 3.20 2.90   0   0.13
 0   4   4  99.26 3.20 2.90   0   0.09   0.00   0.65   0.00
 0   4  22  98.68 3.20 2.90   0   0.67
 0   5   5  99.19 3.20 2.90   0   0.08   0.00   0.73   0.00
 0   5  23  98.58 3.20 2.90   0   0.69
 0   6   6  99.01 3.20 2.90   0   0.11   0.00   0.89   0.00
 0   6  24  98.72 3.20 2.90   0   0.39
...
```

## Hohe Performance und geringe Latenz durch die Beschränkung von tieferen C-Zuständen
<a name="c-states"></a>

Mit dem C-Zustand werden die Ruhezustandsebenen gesteuert, in denen sich ein Core im inaktiven Zustand befinden kann. Es kann ratsam sein, die C-Zustände zu steuern, um Ihr System im Hinblick auf Latenz und Performance zu optimieren. Das Versetzen von Cores in den Ruhezustand benötigt Zeit. Und auch wenn ein Core im Ruhezustand mehr Spielraum zur Nutzung einer höheren Frequenz durch einen anderen Core zulässt, dauert es auch wieder eine gewisse Zeit, bis der Core aus dem Ruhezustand erwacht und Arbeitsschritte ausführen kann. Falls sich beispielsweise ein Core, der für die Verarbeitung von Netzwerkpaketunterbrechungen zugewiesen ist, im Ruhezustand befindet, kann es bei der Verarbeitung der Unterbrechung zu einer Verzögerung kommen. Sie können das System so konfigurieren, dass keine tieferen C-Zustände verwendet werden. Hierdurch wird die Latenz in Bezug auf die Prozessorreaktion reduziert, aber gleichzeitig wird auch der Turbo Boost-Spielraum für andere Cores verringert.

Ein häufiges Szenario zum Deaktivieren von tieferen Ruhezuständen ist die Nutzung einer Redis-Datenbankanwendung, bei der die Datenbank im Systemspeicher gespeichert wird, um für Abfragen eine möglichst geringe Reaktionszeit zu erzielen.

**Um tiefere Schlafzustände zu begrenzen, aktivieren Sie AL2**

1. Öffnen Sie die Datei `/etc/default/grub` mit einem Editor Ihrer Wahl.

   ```
   [ec2-user ~]$ sudo vim /etc/default/grub
   ```

1. Bearbeiten Sie die Zeile `GRUB_CMDLINE_LINUX_DEFAULT` und fügen Sie die Optionen `intel_idle.max_cstate=1` und `processor.max_cstate=1` hinzu, um `C1` als tiefstmöglichen C-Zustand für Cores im Leerlauf festzulegen.

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1"
   GRUB_TIMEOUT=0
   ```

   Die`intel_idle.max_cstate=1`-Option konfiguriert das C-Zustandslimit für Intel-basierte Instances, die `processor.max_cstate=1`-Option konfiguriert das C-Zustandslimit für AMD-basierte Instances. Sie können beide Optionen zu Ihrer Konfiguration hinzufügen. So können Sie mit einer einzigen Konfiguration das gewünschte Verhalten sowohl für Intel als auch AMD festlegen.

1. Speichern Sie die Datei und beenden Sie den Editor.

1.  Führen Sie den folgenden Befehl aus, um die Bootkonfiguration erneut zu erstellen:

   ```
   [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

1. Starten Sie Ihre Instance neu, um die neue Kerneloption zu aktivieren.

   ```
   [ec2-user ~]$ sudo reboot
   ```

**So begrenzen Sie tiefere Ruhezustände für Amazon Linux AMI**

1. Öffnen Sie die Datei `/boot/grub/grub.conf` mit einem Editor Ihrer Wahl.

   ```
   [ec2-user ~]$ sudo vim /boot/grub/grub.conf
   ```

1. Bearbeiten Sie die Zeile `kernel` des ersten Eintrags und fügen Sie die Optionen `intel_idle.max_cstate=1` und `processor.max_cstate=1` hinzu, um `C1` als tiefstmöglichen C-Zustand für Cores im Leerlauf festzulegen.

   ```
   # created by imagebuilder
   default=0
   timeout=1
   hiddenmenu
   
   title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64)
   root (hd0,0)
   kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0 intel_idle.max_cstate=1  processor.max_cstate=1
   initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img
   ```

   Die`intel_idle.max_cstate=1`-Option konfiguriert das C-Zustandslimit für Intel-basierte Instances, die `processor.max_cstate=1`-Option konfiguriert das C-Zustandslimit für AMD-basierte Instances. Sie können beide Optionen zu Ihrer Konfiguration hinzufügen. So können Sie mit einer einzigen Konfiguration das gewünschte Verhalten sowohl für Intel als auch AMD festlegen.

1. Speichern Sie die Datei und beenden Sie den Editor.

1. Starten Sie Ihre Instance neu, um die neue Kerneloption zu aktivieren.

   ```
   [ec2-user ~]$ sudo reboot
   ```

Das folgende Beispiel enthält eine Instance vom Typ `c4.8xlarge` mit zwei aktiven Cores, für die die Core-Frequenz vom Typ „Turbo Boost für alle Cores“ genutzt wird.

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [5322] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [5322] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.56 3.20 2.90   0  94.44   0.00   0.00   0.00   0.00   0.00   0.00   0.00 131.90 31.11 199.47  0.00
 0   0   0   0.03 2.08 2.90   0  99.97   0.00   0.00   0.00   0.00   0.00   0.00   0.00  67.23 17.11 99.76  0.00
 0   0  18   0.01 1.93 2.90   0  99.99
 0   1   1   0.02 1.96 2.90   0  99.98   0.00   0.00   0.00
 0   1  19  99.70 3.20 2.90   0   0.30
...
 1   1  10   0.02 1.97 2.90   0  99.98   0.00   0.00   0.00
 1   1  28  99.67 3.20 2.90   0   0.33
 1   2  11   0.04 2.63 2.90   0  99.96   0.00   0.00   0.00
 1   2  29   0.02 2.11 2.90   0  99.98
...
```

In diesem Beispiel laufen die Kerne für Version CPUs 19 und 28 mit 3.2 GHz, und die anderen Kerne befinden sich im `C1` C-Status und warten auf Befehle. Für die aktiven Cores wird zwar nicht die maximale Turbo Boost-Frequenz erreicht, aber die inaktiven Cores können viel schneller auf neue Anforderungen reagieren, als dies im tieferen C-Zustand `C6` der Fall wäre.

## Basis-Performance mit geringster Variabilität
<a name="baseline-perf"></a>

Sie können die Variabilität der Prozessorfrequenz mit P-Zuständen reduzieren. Mit P-Zuständen wird die gewünschte Performance für einen Core gesteuert (nach CPU-Frequenz). Für die meisten Workloads wird im Zustand P0, in dem Turbo Boost angefordert wird, eine bessere Performance erzielt. Es kann aber sein, dass Sie für Ihr System eine konsistente Performance konfigurieren möchten, weil es bei der Aktivierung von Turbo Boost-Frequenzen zu einer diskontinuierlichen Performance kommen kann. 

Intel Advanced Vector Extensions (AVX oder AVX2) -Workloads können bei niedrigeren Frequenzen eine gute Leistung erbringen, und AVX-Befehle können mehr Strom verbrauchen. Wenn der Prozessor bei einer niedrigeren Frequenz ausgeführt wird, indem Turbo Boost deaktiviert wird, kann die genutzte Leistungsmenge reduziert und die Geschwindigkeit konsistenter gehalten werden. Weitere Informationen zur Optimierung Ihrer Instance-Konfiguration und des Workload für AVX erhalten Sie auf der [Intel-Website](https://www.intel.com/content/www/us/en/developer/articles/technical/the-intel-advanced-vector-extensions-512-feature-on-intel-xeon-scalable.html?wapkw=advanced%20vector%20extensions).

CPU-Leerlauf-Treiber steuern den P-Zustand. Neuere CPU-Generationen erfordern aktualisierte CPU-Leerlauf-Treiber, die der Kernelebene wie folgt entsprechen:
+ Linux-Kernel-Versionen 6.1 und höher — Unterstützt Intel Granite Rapids (z. B. R8i)
+ Linux-Kernel-Versionen 5.10 und höher — Unterstützt AMD Milan (zum Beispiel M6a)
+ Linux-Kernel-Versionen 5.6 und höher — Unterstützt Intel Icelake (zum Beispiel M6i)

Führen Sie den folgenden Befehl aus, um festzustellen, ob der Kernel eines laufenden Systems die CPU erkennt.

```
if [ -d /sys/devices/system/cpu/cpu0/cpuidle ]; then echo "C-state control enabled"; else echo "Kernel cpuidle driver does not recognize this CPU generation"; fi
```

Wenn die Ausgabe dieses Befehls auf fehlende Unterstützung hinweist, empfehlen wir Ihnen, den Kernel upzugraden.

In diesem Abschnitt wird beschrieben, wie Sie tiefere Ruhezustände begrenzen und Turbo Boost deaktivieren (durch Anforderung des P-Zustands `P1`), um für diese Arten von Workloads ein geringe Latenz und die geringstmögliche Variabilität der Prozessorgeschwindigkeit bereitzustellen.

**Um tiefere Schlafzustände zu begrenzen und Turbo Boost einzuschalten AL2**

1. Öffnen Sie die Datei `/etc/default/grub` mit einem Editor Ihrer Wahl.

   ```
   [ec2-user ~]$ sudo vim /etc/default/grub
   ```

1. Bearbeiten Sie die Zeile `GRUB_CMDLINE_LINUX_DEFAULT` und fügen Sie die Optionen `intel_idle.max_cstate=1` und `processor.max_cstate=1` hinzu, um `C1` als tiefstmöglichen C-Zustand für Cores im Leerlauf festzulegen.

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1"
   GRUB_TIMEOUT=0
   ```

   Die`intel_idle.max_cstate=1`-Option konfiguriert das C-Zustandslimit für Intel-basierte Instances, die `processor.max_cstate=1`-Option konfiguriert das C-Zustandslimit für AMD-basierte Instances. Sie können beide Optionen zu Ihrer Konfiguration hinzufügen. So können Sie mit einer einzigen Konfiguration das gewünschte Verhalten sowohl für Intel als auch AMD festlegen.

1. Speichern Sie die Datei und beenden Sie den Editor.

1.  Führen Sie den folgenden Befehl aus, um die Bootkonfiguration erneut zu erstellen:

   ```
   [ec2-user ~]$ grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

1. Starten Sie Ihre Instance neu, um die neue Kerneloption zu aktivieren.

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. Führen Sie den folgenden Befehl aus, um Turbo Boost zu deaktivieren, wenn Sie die geringe Variabilität der Prozessorgeschwindigkeit benötigen, die im P-Zustand `P1` bereitgestellt wird.

   ```
   [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

1. Wenn die Verarbeitung Ihrer Workload abgeschlossen ist, können Sie Turbo Boost mit dem unten angegebenen Befehl wieder aktivieren.

   ```
   [ec2-user ~]$ sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

**So begrenzen Sie tiefere Ruhezustände und deaktivieren Turbo Boost für Amazon Linux AMI**

1. Öffnen Sie die Datei `/boot/grub/grub.conf` mit einem Editor Ihrer Wahl.

   ```
   [ec2-user ~]$ sudo vim /boot/grub/grub.conf
   ```

1. Bearbeiten Sie die Zeile `kernel` des ersten Eintrags und fügen Sie die Optionen `intel_idle.max_cstate=1` und `processor.max_cstate=1` hinzu, um `C1` als tiefstmöglichen C-Zustand für Cores im Leerlauf festzulegen.

   ```
   # created by imagebuilder
   default=0
   timeout=1
   hiddenmenu
   
   title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64)
   root (hd0,0)
   kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0 intel_idle.max_cstate=1 processor.max_cstate=1
   initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img
   ```

   Die`intel_idle.max_cstate=1`-Option konfiguriert das C-Zustandslimit für Intel-basierte Instances, die `processor.max_cstate=1`-Option konfiguriert das C-Zustandslimit für AMD-basierte Instances. Sie können beide Optionen zu Ihrer Konfiguration hinzufügen. So können Sie mit einer einzigen Konfiguration das gewünschte Verhalten sowohl für Intel als auch AMD festlegen.

1. Speichern Sie die Datei und beenden Sie den Editor.

1. Starten Sie Ihre Instance neu, um die neue Kerneloption zu aktivieren.

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. Führen Sie den folgenden Befehl aus, um Turbo Boost zu deaktivieren, wenn Sie die geringe Variabilität der Prozessorgeschwindigkeit benötigen, die im P-Zustand `P1` bereitgestellt wird.

   ```
   [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

1. Wenn die Verarbeitung Ihrer Workload abgeschlossen ist, können Sie Turbo Boost mit dem unten angegebenen Befehl wieder aktivieren.

   ```
   [ec2-user ~]$ sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

Das folgende Beispiel zeigt eine `c4.8xlarge` Instanz mit zwei V, die CPUs aktiv mit der Basiskernfrequenz arbeiten, ohne Turbo Boost.

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [5389] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [5389] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.59 2.90 2.90   0  94.41   0.00   0.00   0.00   0.00   0.00   0.00   0.00 128.48 33.54 200.00  0.00
 0   0   0   0.04 2.90 2.90   0  99.96   0.00   0.00   0.00   0.00   0.00   0.00   0.00  65.33 19.02 100.00  0.00
 0   0  18   0.04 2.90 2.90   0  99.96
 0   1   1   0.05 2.90 2.90   0  99.95   0.00   0.00   0.00
 0   1  19   0.04 2.90 2.90   0  99.96
 0   2   2   0.04 2.90 2.90   0  99.96   0.00   0.00   0.00
 0   2  20   0.04 2.90 2.90   0  99.96
 0   3   3   0.05 2.90 2.90   0  99.95   0.00   0.00   0.00
 0   3  21  99.95 2.90 2.90   0   0.05
...
 1   1  28  99.92 2.90 2.90   0   0.08
 1   2  11   0.06 2.90 2.90   0  99.94   0.00   0.00   0.00
 1   2  29   0.05 2.90 2.90   0  99.95
```

Die Kerne für v CPUs 21 und 28 arbeiten aktiv mit der Basisprozessorgeschwindigkeit von 2,9 GHz, und alle inaktiven Kerne laufen ebenfalls mit der Basisgeschwindigkeit im `C1` C-Zustand und sind bereit, Befehle anzunehmen.

# I/O-Scheduler für AL2
<a name="io-scheduler"></a>

Die I/O scheduler is a part of the Linux operating system that sorts and merges I/O Anfragen und bestimmt die Reihenfolge, in der sie verarbeitet werden.

I/O schedulers are particularly beneficial for devices such as magnetic hard drives, where seek time can be expensive and where it is optimal to merge co-located requests. I/OScheduler haben bei Solid-State-Geräten und virtualisierten Umgebungen weniger Wirkung. Dies liegt daran, dass sich der sequentielle und zufällige Zugriff bei Solid-State-Geräten nicht unterscheiden und der Host für virtualisierte Umgebungen eine eigene Planungsebene bereitstellt.

In diesem Thema wird der Amazon I/O Linux-Scheduler behandelt. Weitere Informationen über den I/O-Scheduler, der von anderen Linux-Verteilungen verwendet wird, finden Sie in der jeweiligen Dokumentation.

**Topics**
+ [Unterstützte Scheduler](#supported-schedulers)
+ [Standard-Scheduler](#default-schedulers)
+ [Ändern des Schedulers](#change-scheduler)

## Unterstützte Scheduler
<a name="supported-schedulers"></a>

Amazon Linux unterstützt die folgenden I/O Scheduler:
+ `deadline`— Der *Deadline* I/O Scheduler sortiert I/O Anfragen und bearbeitet sie in der effizientesten Reihenfolge. Es garantiert eine Startzeit für alle I/O request. It also gives I/O Anfragen, die zu lange ausstehen und eine höhere Priorität haben.
+ `cfq`— Der *Completely Fair Queueing* (CFQ) I/O -Scheduler versucht, I/O resources between processes. It sorts and inserts I/O Anfragen fair den Warteschlangen pro Prozess zuzuordnen.
+ `noop`— Die I/O scheduler inserts all I/O Noop-Anfragen (*No Operation*) werden einer FIFO-Warteschlange zugeordnet und dann zu einer einzigen Anfrage zusammengeführt. Dieser Scheduler führt keine Anforderungssortierung durch.

## Standard-Scheduler
<a name="default-schedulers"></a>

No Operation (noop) ist der I/O Standard-Scheduler für Amazon Linux. Dieser Scheduler wird aus folgenden Gründen verwendet:
+ Viele Instance-Typen verwenden virtualisierte Geräte, bei denen der zugrunde liegende Host die Planung für die Instance durchführt.
+ Solid-State-Geräte werden in vielen Instance-Typen verwendet, bei denen die Vorteile eines I/O Schedulers weniger wirksam sind.
+ Es ist der am wenigsten invasive I/O Scheduler und kann bei Bedarf angepasst werden.

## Ändern des Schedulers
<a name="change-scheduler"></a>

Eine Änderung des I/O Schedulers kann die Leistung erhöhen oder verringern, je nachdem, ob der Scheduler dazu führt, dass mehr oder weniger I/O Anfragen in einer bestimmten Zeit abgeschlossen werden. Dies hängt weitgehend von Ihrer Workload, der Generierung des verwendeten Instance-Typs und dem Gerätetyp. Wenn Sie den verwendeten I/O-Scheduler ändern, empfehlen wir Ihnen, ein Tool wie **iotop** zu verwenden, um die I/O Leistung zu messen und festzustellen, ob die Änderung für Ihren Anwendungsfall von Vorteil ist.

Sie können den I/O Scheduler für ein Gerät mithilfe des folgenden Befehls anzeigen, der `nvme0n1` als Beispiel dient. Ersetzen Sie `nvme0n1` im folgenden Befehl mit dem Gerät in `/sys/block` Ihrer Instance.

```
$  cat /sys/block/nvme0n1/queue/scheduler
```

Verwenden Sie den folgenden Befehl, um den I/O Scheduler für das Gerät einzurichten. 

```
$  echo cfq|deadline|noop > /sys/block/nvme0n1/queue/scheduler
```

Verwenden Sie beispielsweise den folgenden Befehl, um den I/O Scheduler für ein *xvda* Gerät von `noop` bis `cfq` einzustellen. 

```
$  echo cfq > /sys/block/xvda/queue/scheduler
```

# Ändern Sie den Hostnamen Ihrer Instanz AL2
<a name="set-hostname"></a>

Wenn Sie eine Instance in einer privaten VPC starten, weist Amazon EC2 einen Hostnamen des Gastbetriebssystems zu. Der Typ des Hostnamens, den Amazon EC2 zuweist, hängt von Ihren Subnetzeinstellungen ab. Weitere Informationen zu EC2-Hostnamen finden Sie unter [Hostnamentypen für Amazon EC2 EC2-Instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) im *Amazon* EC2 EC2-Benutzerhandbuch.

Ein typischer privater DNS-Name von Amazon EC2 für eine EC2-Instance, die für die Verwendung einer IP-basierten Benennung mit einer IPv4 Adresse konfiguriert ist`ip-12-34-56-78.us-west-2.compute.internal`, sieht ungefähr so aus:, wobei der Name aus der internen Domain, dem Service (in diesem Fall`compute`), der Region und einer Form der privaten Adresse besteht. IPv4 Teil dieses Hostnamens wird von der Shell-Anzeige gezeigt, wenn Sie sich bei der Instance anmelden (z. B., `ip-12-34-56-78`). Jedes Mal, wenn Sie Ihre Amazon EC2 EC2-Instance beenden und neu starten (es sei denn, Sie verwenden eine Elastic IP-Adresse), ändert sich die öffentliche IPv4 Adresse, ebenso wie Ihr öffentlicher DNS-Name, Ihr System-Hostname und Ihre Shell-Eingabeaufforderung.

**Wichtig**  
Diese Informationen gelten für Amazon Linux. Weitere Informationen zu anderen Verteilungen finden Sie in der jeweiligen Dokumentation.

## Ändern des Systemhostnamens
<a name="set-hostname-system"></a>

Falls Sie für die IP-Adresse der Instance einen öffentlichen DNS-Namen registriert haben (z. B. `webserver.mydomain.com`), können Sie den Systemhostnamen so einstellen, dass sich die Instance als Teil dieser Domain identifiziert. Dadurch wird auch die Shell-Eingabeaufforderung so geändert, dass sie den ersten Teil dieses Namens anstelle des von AWS (z. B.) angegebenen Hostnamens anzeigt. `ip-12-34-56-78` Auch wenn Sie keinen öffentlichen DNS-Namen registriert haben, können Sie den Hostnamen ändern. Allerdings unterscheidet sich die Vorgehensweise ein wenig.

Damit Ihre Hostnamen-Aktualisierung fortbesteht, müssen Sie sicherstellen, dass die `preserve_hostname`-Cloud-Init-Einstellung auf `true` eingestellt ist. Sie können den folgenden Befehl ausführen, um diese Einstellung zu bearbeiten oder hinzuzufügen:

```
sudo vi /etc/cloud/cloud.cfg
```

Wenn die `preserve_hostname`-Einstellung nicht aufgeführt ist, fügen Sie am Ende der Datei die folgende Textzeile hinzu: 

```
preserve_hostname: true
```

**Ändern Sie den Systemhostnamen wie folgt in einen öffentlichen DNS-Namen:**

Führen Sie diese Schritte aus, falls Sie bereits einen öffentlichen DNS-Namen registriert haben.

1. 
   + Für AL2: Verwenden Sie den **hostnamectl** Befehl, um Ihren Hostnamen so einzustellen, dass er den vollqualifizierten Domainnamen wiedergibt (z. B.**webserver.mydomain.com**).

     ```
     [ec2-user ~]$ sudo hostnamectl set-hostname webserver.mydomain.com
     ```
   + Für Amazon Linux AMI: Öffnen Sie auf der Instance die Konfigurationsdatei `/etc/sysconfig/network` in einem Texteditor Ihrer Wahl und ändern Sie den Eintrag `HOSTNAME` so, dass er den vollqualifizierten Domain-Namen wiederspiegelt (z. B. **webserver.mydomain.com**).

     ```
     HOSTNAME=webserver.mydomain.com
     ```

1. Starten Sie die Instance neu, damit der neue Hostname übernommen und angezeigt wird.

   ```
   [ec2-user ~]$ sudo reboot
   ```

   Alternativ können Sie einen Neustart über die Amazon EC2-Konsole ausführen. Hierzu wählen Sie auf der Seite **Instances (Instances)** die Instance und anschließend **Instance state (Instance-Status)**, **Reboot instance (Instance neu starten)** aus.

1. Melden Sie sich bei der Instance an und überprüfen Sie, ob der Hostname aktualisiert wurde. Ihr Eintrag sollte den neuen Hostnamen bis zum ersten "." anzeigen, und der Befehl **hostname** sollte den vollqualifizierten Domain-Namen anzeigen.

   ```
   [ec2-user@webserver ~]$ hostname
   webserver.mydomain.com
   ```

**Ändern Sie den Systemhostnamen wie folgt ohne einen öffentlichen DNS-Namen:**

1. 
   + Für AL2: Verwenden Sie den **hostnamectl** Befehl, um Ihren Hostnamen so einzustellen, dass er dem gewünschten Systemhostnamen entspricht (z. B.). **webserver**

     ```
     [ec2-user ~]$ sudo hostnamectl set-hostname webserver.localdomain
     ```
   + Für Amazon Linux AMI: Öffnen Sie auf Ihrer Instance die Konfigurationsdatei `/etc/sysconfig/network` in einem Texteditor Ihrer Wahl und ändern Sie den Eintrag `HOSTNAME` so, dass er den gewünschten Systemhostnamen widerspiegelt (z. B. **webserver**).

     ```
     HOSTNAME=webserver.localdomain
     ```

1. Öffnen Sie die Datei `/etc/hosts` in einem Texteditor Ihrer Wahl und ändern Sie den mit **127.0.0.1** beginnenden Eintrag so, dass er dem folgenden Beispiel entspricht, wobei Sie einen eigenen Hostnamen angeben.

   ```
   127.0.0.1 webserver.localdomain webserver localhost4 localhost4.localdomain4
   ```

1. Starten Sie die Instance neu, damit der neue Hostname übernommen und angezeigt wird.

   ```
   [ec2-user ~]$ sudo reboot
   ```

   Alternativ können Sie einen Neustart über die Amazon EC2-Konsole ausführen. Hierzu wählen Sie auf der Seite **Instances (Instances)** die Instance und anschließend **Instance state (Instance-Status)**, **Reboot instance (Instance neu starten)** aus.

1. Melden Sie sich bei der Instance an und überprüfen Sie, ob der Hostname aktualisiert wurde. Ihr Eintrag sollte den neuen Hostnamen bis zum ersten "." anzeigen, und der Befehl **hostname** sollte den vollqualifizierten Domain-Namen anzeigen.

   ```
   [ec2-user@webserver ~]$ hostname
   webserver.localdomain
   ```

Sie können auch mehr programmatische Lösungen implementieren, z. B. die Angabe von Benutzerdaten zur Konfiguration Ihrer Instance. Wenn Ihre Instance Teil einer Auto-Scaling-Gruppe ist, können Sie Lebenszyklus-Hooks verwenden, um Benutzerdaten festzulegen. Weitere Informationen finden Sie unter [Ausführen von Befehlen auf Linux-Instances beim Start](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) und [Lebenszyklus-Hook für Instance-Start](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html#aws-resource-autoscaling-lifecyclehook--examples--Lifecycle_hook_for_instance_launch) im *AWS CloudFormation -Benutzerhandbuch*.

## Ändern der Shell-Anzeige ohne Auswirkungen auf den Hostnamen
<a name="set-hostname-shell"></a>

Wenn Sie den Hostnamen für Ihre Instance nicht ändern möchten, Sie aber möchten, dass ein nützlicherer Systemname (wie**webserver**) angezeigt wird als der von AWS (z. B.) angegebene private Name, `ip-12-34-56-78` können Sie die Shell-Prompt-Konfigurationsdateien so bearbeiten, dass Ihr System-Spitzname anstelle des Hostnamens angezeigt wird.

**Lassen Sie die Shell-Anzeige wie folgt einen Hostspitznamen anzeigen:**

1. Erstellen Sie eine Datei unter `/etc/profile.d`, die die Umgebungsvariable `NICKNAME` auf den Wert einstellt, den die Shell-Anzeige anzeigen soll. Führen Sie den folgenden Befehl aus, um als Systemspitznamen beispielsweise **webserver** festzulegen.

   ```
   [ec2-user ~]$ sudo sh -c 'echo "export NICKNAME=webserver" > /etc/profile.d/prompt.sh'
   ```

1. Öffnen Sie die Datei `/etc/bashrc` (Red Hat) oder `/etc/bash.bashrc` (Debian/Ubuntu) in Ihrem bevorzugten Texteditor (z. B. **vim** oder **nano**). Sie müssen **sudo** mit dem Editorbefehl verwenden, da `/etc/bashrc` und `/etc/bash.bashrc` Eigentum von `root` sind.

1. Bearbeiten Sie die Datei und ändern Sie die Shell-Anzeigenvariable (`PS1`) so, dass der Spitzname anstelle des Hostnamens angezeigt wird. Suchen Sie die folgende Zeile, in der die Shell-Anzeige in `/etc/bashrc` oder `/etc/bash.bashrc` festlegt wird (die Stelle und mehrere umgebende Zeilen werden im Folgenden angezeigt, um Kontext zu liefern. Suchen Sie die Zeile, die mit `[ "$PS1"` beginnt):

   ```
     # Turn on checkwinsize
     shopt -s checkwinsize
     [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
     # You might want to have e.g. tty in prompt (e.g. more virtual machines)
     # and console windows
   ```

   Ändern Sie den Wert von `\h` (Symbol für `hostname`) in dieser Zeile auf den Wert der Variable `NICKNAME`.

   ```
     # Turn on checkwinsize
     shopt -s checkwinsize
     [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@$NICKNAME \W]\\$ "
     # You might want to have e.g. tty in prompt (e.g. more virtual machines)
     # and console windows
   ```

1. (Optional) Führen Sie die folgenden Schritte aus, um die Titel von Shell-Fenstern auf den neuen Spitznamen einzustellen.

   1. Erstellen Sie eine Datei namens `/etc/sysconfig/bash-prompt-xterm`.

      ```
      [ec2-user ~]$ sudo touch /etc/sysconfig/bash-prompt-xterm
      ```

   1. Machen Sie die Datei mithilfe des folgenden Befehls ausführbar:

      ```
      [ec2-user ~]$ sudo chmod +x /etc/sysconfig/bash-prompt-xterm
      ```

   1. Öffnen Sie die Datei `/etc/sysconfig/bash-prompt-xterm` mit einem Texteditor Ihrer Wahl (z. B. **vim** oder **nano**). Sie müssen **sudo** mit dem Editor verwenden, da die Datei `/etc/sysconfig/bash-prompt-xterm` Eigentum von `root` ist.

   1. Fügen Sie der Datei die folgende Zeile hinzu.

      ```
      echo -ne "\033]0;${USER}@${NICKNAME}:${PWD/#$HOME/~}\007"
      ```

1. Melden Sie sich ab und wieder an, damit der neue Spitzname übernommen und angezeigt wird.

## Ändern des Hostnamens auf anderen Linux-Bereitstellungen
<a name="set-hostname-other-linux"></a>

Die Vorgehensweisen auf dieser Seite sind ausschließlich für die Verwendung mit Amazon Linux gedacht. Weitere Informationen zu anderen Linux-Bereitstellungen finden Sie in der jeweiligen Dokumentation und den folgenden Artikeln:
+ [Wie weise ich einer privaten Amazon-EC2-Instance, auf der RHEL 7 oder Centos 7 ausgeführt wird, einen statischen Hostnamen zu?](https://aws.amazon.com/premiumsupport/knowledge-center/linux-static-hostname-rhel7-centos7/)

# Richten Sie dynamisches DNS auf Ihrer Instanz ein AL2
<a name="dynamic-dns"></a>

Beim Start einer EC2-Instance wird ihr eine öffentliche IP-Adresse und ein öffentlicher Domain Name System (DNS)-Name zugewiesen, mit deren Hilfe die Instance aus dem Internet erreicht werden kann. Diese öffentlichen Namen müssen relativ lang sein, um eindeutig zu bleiben, da sich sehr viele Hosts in der Amazon Web Services-Domain befinden. Ein typischer öffentlicher DNS-Name von Amazon EC2 sieht etwa so aus:`ec2-12-34-56-78.us-west-2.compute.amazonaws.com`, wobei der Name aus der Amazon Web Services Services-Domain, dem Service (in diesem Fall`compute`) AWS-Region, der und einer Form der öffentlichen IP-Adresse besteht.

Dynamische DNS-Services stellen innerhalb der Domain benutzerdefinierte DNS-Hostnamen zur Verfügung, die einprägsam sind und den Anwendungsfall des Hosts anzeigen. Einige dieser Services sind auch kostenlos. Sie können einen Anbieter für ein dynamisches DNS mit Amazon EC2 verwenden und die Instance so konfigurieren, dass sie die mit einem öffentlichen DNS-Namen verknüpfte IP-Adresse bei jedem Start der Instance aktualisiert. Sie können aus vielen verschiedenen Anbietern auswählen. Die genauen Details zur Auswahl eines Anbieters und der Registrierung eines Namens bei einem Anbieter würden den Rahmen dieses Leitfadens sprengen.<a name="procedure-dynamic-dns"></a>

**Verwenden Sie das dynamische DNS mit Amazon EC2 wie folgt:**

1. Registrieren Sie sich bei einem Serviceanbieter für ein dynamisches DNS und registrieren Sie bei diesem Anbieter einen öffentlichen DNS-Namen. Diese Vorgehensweise verwendet den kostenlosen Service von [noip.com/free](https://www.noip.com/free) als Beispiel.

1. Konfigurieren des Aktualisierungsclient für das dynamische DNS. Sobald Sie über einen Serviceanbieter für ein dynamisches DNS und einen dort registrierten öffentlichen DNS-Namen verfügen, verknüpfen Sie den DNS-Namen mit der IP-Adresse einer Instance. Viele Anbieter (einschließlich [noip.com](https://noip.com)) ermöglichen Ihnen, dies manuell von der Seite Ihres Benutzerkontos auf deren Website aus zu tun, aber viele unterstützen auch Aktualisierungsclients. Wird auf Ihrer EC2-Instance ein Aktualisierungsclient ausgeführt, wird der Datensatz Ihres dynamischen DNS jedes Mal aktualisiert, wenn sich die IP-Adresse ändert, wie nach einem Neustart. In diesem Beispiel wird der noip2-Client installiert, der mit dem von [noip.com](https://noip.com) zur Verfügung gestellten Service zusammenarbeitet.

   1. Aktivieren Sie das EPEL-Repository (Extra Packages for Enterprise Linux), um Zugriff auf den `noip2` Client zu erhalten.
**Anmerkung**  
AL2 Auf Instanzen sind die GPG-Schlüssel und Repository-Informationen für das EPEL-Repository standardmäßig installiert. [Weitere Informationen und den Download der neuesten Version dieses Pakets finden Sie unter https://fedoraproject. org/wiki/EPEL](https://fedoraproject.org/wiki/EPEL).

      ```
      [ec2-user ~]$ sudo amazon-linux-extras install epel -y
      ```

   1. Installieren Sie das Paket `noip`.

      ```
      [ec2-user ~]$ sudo yum install -y noip
      ```

   1. Erstellen Sie die Konfigurationsdatei. Geben Sie Ihre Anmeldedaten an, wenn Sie dazu aufgefordert werden, und beantworten Sie die darauffolgenden Fragen, um den Client zu konfigurieren.

      ```
      [ec2-user ~]$ sudo noip2 -C
      ```

1. Aktivieren Sie den noip-Service.

   ```
   [ec2-user ~]$ sudo systemctl enable noip.service
   ```

1. Starten Sie den Service „noip“.

   ```
   [ec2-user ~]$ sudo systemctl start noip.service
   ```

   Dieser Befehl startet den Client, der die von Ihnen erstellte Konfigurationsdatei (`/etc/no-ip2.conf`) liest und die IP-Adresse für den von Ihnen ausgewählten öffentlichen DNS-Namen aktualisiert.

1. Überprüfen Sie, ob der Aktualisierungsclient die richtige IP-Adresse für den dynamischen DNS-Namen angegeben hat. Geben Sie den DNS-Datensätzen einige Minuten Zeit für die Aktualisierung und versuchen Sie dann, mithilfe von SSH eine Verbindung zwischen der Instance und dem anhand dieser Vorgehensweise konfigurierten öffentlichen DNS-Namen herzustellen.

# Konfigurieren Sie Ihre Netzwerkschnittstelle mit ec2-net-utils für AL2
<a name="ec2-net-utils"></a>

Amazon Linux 2 AMIs kann zusätzliche Skripts enthalten, die von AWS, so genannten ec2-net-utils, installiert wurden. Mit diesen Skripts kann die Konfiguration Ihrer Netzwerkschnittstellen optional automatisiert werden. Diese Skripte sind nur für verfügbar. AL2 

**Anmerkung**  
Für Amazon Linux 2023 generiert das `amazon-ec2-net-utils` Paket schnittstellenspezifische Konfigurationen im `/run/systemd/network` Verzeichnis. Weitere Informationen finden Sie unter [Networking-Service](https://docs.aws.amazon.com/linux/al2023/ug/networking-service.html) im *Benutzerhandbuch zu Amazon Linux 2023*.

Verwenden Sie den folgenden Befehl, um das Paket zu installieren, AL2 falls es noch nicht installiert ist, oder aktualisieren Sie es, wenn es installiert ist und zusätzliche Updates verfügbar sind:

```
$ yum install ec2-net-utils
```

Die folgenden Komponenten sind Teil von ec2-net-utils:

udev-Regeln (`/etc/udev/rules.d`)  
Identifiziert Netzwerkschnittstellen, wenn sie an eine laufende Instance angefügt, von ihr getrennt oder wieder angefügt werden, und stellt sicher, dass das Hotplug-Skript ausgeführt wird (`53-ec2-network-interfaces.rules`). Ordnet die MAC-Adresse einem Gerätenamen zu (`75-persistent-net-generator.rules`, der `70-persistent-net.rules` generiert).

Hotplug-Skript  
Generiert eine Schnittstellenkonfigurationsdatei, die mit DHCP verwendet werden kann (`/etc/sysconfig/network-scripts/ifcfg-eth`*N*). Generiert zudem eine Routing-Konfigurationsdatei (`/etc/sysconfig/network-scripts/route-eth`*N*).

DHCP-Skript  
Wenn die Netzwerkschnittstelle einen neuen DHCP-Lease erhält, fragt dieses Skript die Instance-Metadaten nach Elastic IP-Adressen ab. Für jede Elastic IP-Adresse fügt es der Datenbank eine Regel für die Routing-Richtlinien hinzu, um sicherzustellen, dass für ausgehenden Datenverkehr die richtige Netzwerkschnittstelle verwendet wird. Sie fügt der Netzwerkschnittstelle darüber hinaus jede private IP-Adresse als sekundäre Adresse hinzu.

**ec2ifup** eth*N* (`/usr/sbin/`)  
Erweitert die Funktionalität des **ifup**-Standardbefehls. Nachdem dieses Skript die Konfigurationsdateien `ifcfg-eth`*N* und `route-eth`*N* neu geschrieben hat, führt es den Befehl **ifup** aus.

**ec2ifdown** eth*N* (`/usr/sbin/`)  
Erweitert die Funktionalität des **ifdown**-Standardbefehls. Nachdem dieses Skript sämtliche Regeln für die Netzwerkschnittstelle aus der Datenbank für die Routing-Richtlinien entfernt hat, führt es den Befehl **ifdown** aus.

**ec2ifscan** (`/usr/sbin/`)  
Führt eine Prüfung auf unkonfigurierte Netzwerkschnittstellen durch und konfiguriert sie.  
Dieses Skript ist in der ersten Version von ec2-net-utils nicht verfügbar.

Verwenden Sie den folgenden Befehl, um sämtliche Konfigurationsdateien aufzulisten, die von ec2-net-utils generiert wurden:

```
$ ls -l /etc/sysconfig/network-scripts/*-eth?
```

Um die Automatisierung zu deaktivieren, können Sie `EC2SYNC=no` der entsprechenden Datei `ifcfg-eth`*N* hinzufügen. Verwenden Sie z. B. den folgenden Befehl, um die Automatisierung für die Schnittstelle eth1 zu deaktivieren:

```
$ sed -i -e 's/^EC2SYNC=yes/EC2SYNC=no/' /etc/sysconfig/network-scripts/ifcfg-eth1
```

Zum vollständigen Deaktivieren der Automatisierung können Sie das Paket mithilfe des folgenden Befehls entfernen:

```
$ yum remove ec2-net-utils
```