

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configurar AL2 instâncias
<a name="configure-ec2-instance"></a>

Depois de iniciar e fazer login com sucesso na sua AL2 instância, você pode fazer alterações nela. Há muitas maneiras diferentes de configurar uma instância para atender às necessidades de uma aplicação específica. A seguir, temos algumas tarefas comuns para ajudá-lo a começar.

**Topics**
+ [Cenários de configuração comuns](#instance-configuration-scenarios)
+ [Gerencie o software na sua AL2 instância](managing-software.md)
+ [Controle de estado do processador para sua instância do Amazon EC2 AL2](processor_state_control.md)
+ [Programador de E/S para AL2](io-scheduler.md)
+ [Altere o nome do host da sua instância AL2](set-hostname.md)
+ [Configure o DNS dinâmico na sua instância AL2](dynamic-dns.md)
+ [Configure sua interface de rede usando ec2-net-utils para AL2](ec2-net-utils.md)

## Cenários de configuração comuns
<a name="instance-configuration-scenarios"></a>

A distribuição básica do Amazon Linux contém os pacotes e utilitários de software que são necessários para operações básicas de servidor. Contudo, muito mais pacotes de software estão disponíveis em vários repositórios de software e ainda mais pacotes estão disponíveis para criação a partir do código-fonte. Para obter mais informações sobre instalação e criação de software desses locais, consulte [Gerencie o software na sua AL2 instância](managing-software.md).

As instâncias do Amazon Linux vêm pré-configuradas com um `ec2-user`, mas talvez você queira adicionar outros usuários que não têm privilégios de superusuário. Para obter mais informações sobre como adicionar e remover usuários, consulte [Gerenciar usuários em sua Linux instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/managing-users.html) no Guia do *usuário do Amazon EC2*.

Se você tiver sua própria rede com um nome de domínio registrado, poderá alterar o nome do host de uma instância para que ela se identifique como parte do domínio. Também é possível alterar o prompt do sistema para mostrar um nome mais significativo sem alterar as configurações de nome de host. Para obter mais informações, consulte [Altere o nome do host da sua instância AL2](set-hostname.md). É possível configurar uma instância para usar um provedor de serviço DNS dinâmico. Para obter mais informações, consulte [Configure o DNS dinâmico na sua instância AL2](dynamic-dns.md).

Ao executar uma instância no Amazon EC2, você tem a opção de passar dados de usuário para a instância que podem ser usados para realizar tarefas de configuração comuns e até mesmo executar scripts após a inicialização da instância. É possível passar dois tipos de dados de usuário para as diretivas de cloud-init do Amazon EC2: e os scripts de shell. Para obter mais informações, consulte [Executar comandos em sua Linux instância na inicialização](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) no Guia do *usuário do Amazon EC2*.

# Gerencie o software na sua AL2 instância
<a name="managing-software"></a>

A distribuição básica do Amazon Linux contém os pacotes e utilitários de software que são necessários para operações básicas de servidor.

Essas informações se aplicam AL2 a. Para obter informações sobre isso AL2023, consulte [Gerenciar pacotes e atualizações do sistema operacional AL2023 no](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) *Guia do usuário do Amazon Linux 2023*.

É importante manter o software atualizado. Muitos pacotes em uma distribuição do Linux são atualizados frequentemente para corrigir erros, adicionar recursos e proteger contra exploits de segurança. Para obter mais informações, consulte [Atualize o software da instância na sua AL2 instância](install-updates.md).

Por padrão, AL2 as instâncias são iniciadas com os seguintes repositórios habilitados:
+ `amzn2-core`
+ `amzn2extra-docker`

Embora existam muitos pacotes disponíveis nesses repositórios que são atualizados pelo AWS, talvez haja um pacote que você queira instalar que esteja contido em outro repositório. Para obter mais informações, consulte [Adicionar repositórios em uma instância AL2](add-repositories.md). Para obter ajuda para encontrar e instalar pacotes nos repositórios habilitados, consulte [Encontre e instale pacotes de software em uma AL2 instância](find-install-software.md).

Nem todo software está disponível em pacotes de software armazenados em repositórios; alguns devem ser compilados em uma instância a partir do código-fonte. Para obter mais informações, consulte [Prepare-se para compilar o software em uma instância AL2](compile-software.md).

AL2 as instâncias gerenciam seu software usando o gerenciador de pacotes yum. O gerenciador de pacotes yum pode instalar, remover e atualizar software, bem como gerenciar todas as dependências para cada pacote.

**Topics**
+ [Atualize o software da instância na sua AL2 instância](install-updates.md)
+ [Adicionar repositórios em uma instância AL2](add-repositories.md)
+ [Encontre e instale pacotes de software em uma AL2 instância](find-install-software.md)
+ [Prepare-se para compilar o software em uma instância AL2](compile-software.md)

# Atualize o software da instância na sua AL2 instância
<a name="install-updates"></a>

É importante manter o software atualizado. Os pacotes em uma distribuição do Linux são atualizados frequentemente para corrigir erros, adicionar recursos e proteger contra exploits de segurança. Quando você executar e se conectar a uma instância do Amazon Linux pela primeira vez, talvez veja uma mensagem solicitando que atualize os pacotes de software para fins de segurança. Esta seção mostra como atualizar todo um sistema ou apenas um único pacote.

Essas informações se aplicam AL2 a. Para obter informações sobre isso AL2023, consulte [Gerenciar pacotes e atualizações do sistema operacional AL2023 no](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) *Guia do usuário do Amazon Linux 2023*.

Para obter informações sobre alterações e atualizações AL2, consulte as [notas AL2 de versão](https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html).

Para obter informações sobre alterações e atualizações AL2023, consulte as [notas AL2023 de versão](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes.html).

**Importante**  
Se você lançou uma instância do EC2 que usa uma AMI Amazon Linux 2 em uma IPv6 sub-rede somente, você deve se conectar à instância e executá-la. `sudo amazon-linux-https disable` Isso permite que sua AL2 instância se conecte ao yum repositório no S3 IPv6 usando o serviço de patch http.

**Para atualizar todos os pacotes em uma AL2 instância**

1. (Opcional) Inicie uma sessão de **screen** em sua janela de shell. Às vezes, pode haver uma interrupção de rede que pode desconectar a conexão de SSH com sua instância. Se isso acontecer durante uma atualização longa de software, poderá deixar a instância em um estado recuperável, embora confuso. Uma sessão de **screen** permite que você continue executando a atualização mesmo se sua conexão for interrompida, e será possível se reconectar à sessão posteriormente sem problemas.

   1. Execute o comando **screen** para iniciar a sessão.

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

   1. Se a sessão for desconectada, se conecte novamente com sua instância e liste as telas disponíveis.

      ```
      [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. Reconecte a tela usando o comando **screen -r** e o ID de processo do comando anterior.

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

   1. Quando terminar de usar **screen**, use o comando **exit** para fechar a sessão.

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

1. Execute o comando **yum update**. Opcionalmente, é possível adicionar o sinalizador `--security` para aplicar apenas atualizações de segurança.

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

1. Revise os pacotes relacionados, digite **y** e pressione Enter para aceitar as atualizações. A atualização de todos os pacotes em um sistema pode levar vários minutos. A saída **yum** mostra o status da atualização durante sua execução.

1. (Opcional) [Reinicie sua instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-reboot.html) para garantir que você esteja usando os pacotes e bibliotecas mais recentes da sua atualização; as atualizações do kernel não são carregadas até que uma reinicialização ocorra. Também é necessário reinicializar após atualizações de bibliotecas `glibc`. Para atualizações de pacotes que controlam serviços, pode ser suficiente reiniciar os serviços para obter as atualizações, mas a reinicialização do sistema garante que todas as atualizações de pacotes e bibliotecas anteriores sejam concluídas.

**Para atualizar um único pacote em uma AL2 instância**

Use este procedimento para atualizar um único pacote (e suas dependências) e não o sistema inteiro.

1. Execute o comando **yum update** com o nome de pacote a ser atualizado.

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

1. Revise as informações de pacotes listadas, digite **y** e pressione Enter para aceitar a atualização ou atualizações. Às vezes, haverá mais de um pacote listado se houver dependências de pacotes que devem ser resolvidas. A saída **yum** mostra o status da atualização durante sua execução.

1. (Opcional) [Reinicie sua instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-reboot.html) para garantir que você esteja usando os pacotes e bibliotecas mais recentes da sua atualização; as atualizações do kernel não são carregadas até que uma reinicialização ocorra. Também é necessário reinicializar após atualizações de bibliotecas `glibc`. Para atualizações de pacotes que controlam serviços, pode ser suficiente reiniciar os serviços para obter as atualizações, mas a reinicialização do sistema garante que todas as atualizações de pacotes e bibliotecas anteriores sejam concluídas.

# Adicionar repositórios em uma instância AL2
<a name="add-repositories"></a>

Essas informações se aplicam AL2 a. Para obter informações sobre isso AL2023, consulte [Atualizações determinísticas por meio de repositórios versionados no Guia AL2023 do usuário](https://docs.aws.amazon.com/linux/al2023/ug/deterministic-upgrades.html) do *Amazon* Linux 2023.

Por padrão, AL2 as instâncias são iniciadas com os seguintes repositórios habilitados:
+ `amzn2-core`
+ `amzn2extra-docker`

Embora haja muitos pacotes disponíveis nesses repositórios que são atualizados pela Amazon Web Services, pode haver um pacote que você deseje instalar e que esteja contido em outro repositório.

Para instalar um pacote de um repositório diferente com **yum**, você precisa adicionar as informações do repositório ao arquivo `/etc/yum.conf` ou ao seu próprio arquivo `repository.repo` no diretório `/etc/yum.repos.d`. É possível fazer isso manualmente, mas a maioria dos repositórios yum fornece seu próprio arquivo `repository.repo` no URL do repositório.

**Para determinar quais repositórios yum já estão instalados**  
Liste os repositórios yum instalados com o seguinte comando:

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

A saída resultante lista os repositórios instalados e relata o status de cada um. Os repositórios habilitados exibem o número de pacotes que eles contêm.

**Para adicionar um repositório yum a /etc/yum.repos.d**

1. Encontre a localização do arquivo `.repo`. Isso varia dependendo do repositório que você está adicionando. Neste exemplo, o arquivo `.repo` está em `https://www.example.com/repository.repo`.

1. Adicione um repositório com o comando **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
   ```

Após instalar um repositório, é necessário habilitá-lo como descrito no próximo procedimento.

**Para habilitar um repositório yum em /etc/yum.repos.d**  
Use o comando **yum-config-manager** com o sinalizador `--enable repository`. O comando a seguir habilita o repositório Extra Packages for Enterprise Linux (EPEL) do projeto Fedora. Por padrão, esse repositório está presente em `/etc/yum.repos.d` em instâncias do Amazon Linux AMI, mas não está habilitado.

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

Para obter mais informações e baixar a versão mais recente desse pacote, consulte [https://fedoraproject. org/wiki/EPEL](https://fedoraproject.org/wiki/EPEL).

# Encontre e instale pacotes de software em uma AL2 instância
<a name="find-install-software"></a>

É possível usar uma ferramenta de gerenciamento de pacotes para encontrar e instalar pacotes de software. No Amazon Linux 2, a ferramenta padrão de gerenciamento de pacotes de software éYUM. Em AL2023, a ferramenta padrão de gerenciamento de pacotes de software éDNF. Para obter mais informações, consulte a [ferramenta de gerenciamento de pacotes](https://docs.aws.amazon.com/linux/al2023/ug/package-management.html) no *Guia do usuário do Amazon Linux 2023*.

## Encontre pacotes de software em uma AL2 instância
<a name="find-software"></a>

É possível usar o comando **yum search** para pesquisar as descrições de pacotes que estão disponíveis nos repositórios configurados. Isso é especialmente útil se você não souber o nome exato do pacote que deseja instalar. Basta acrescentar uma pesquisa de palavra-chave ao comando. Para pesquisar várias palavras, coloque a consulta da pesquisa entre aspas.

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

O seguinte é um exemplo de saída.

```
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
```

Consultas de pesquisa de várias palavras entre aspas apenas retornam resultados que correspondem à consulta exata. Se você não vir o pacote esperado, simplifique a pesquisa usando uma palavra-chave e verifique os resultados. Também é possível tentar usar sinônimos da palavras-chave para ampliar a pesquisa.

Para obter mais informações sobre pacotes para AL2, consulte o seguinte:
+ [AL2 Biblioteca de extras](al2-extras.md)
+ [Repositório de pacotes](ec2.md#package-repository)

## Instalar pacotes de software em uma AL2 instância
<a name="install-software"></a>

Em AL2, a ferramenta de gerenciamento de pacotes yum pesquisa pacotes de software diferentes em todos os seus repositórios habilitados e lida com quaisquer dependências no processo de instalação do software. Para obter informações sobre a instalação de pacotes de software em AL2023, consulte [Gerenciamento de pacotes e atualizações do sistema operacional](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) no *Guia do usuário do Amazon Linux 2023*.

**Para instalar um pacote a partir de um repositório**  
Use o **yum install *package*** comando, *package* substituindo pelo nome do software a ser instalado. Por exemplo, para instalar o navegador da web baseado em texto **links**, insira o seguinte comando.

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

**Para instalar arquivos de pacotes RPM que você obteve por download**  
Também é possível usar **yum install** para instalar arquivos de pacotes de RPM baixados da Internet. Para fazer isso, adicione o nome do caminho de um arquivo RPM ao comando de instalação em vez de um nome de pacote de repositório.

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

**Para listar pacotes instalados**  
Para ver uma lista de pacotes instalados na instância, use o comando a seguir.

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

# Prepare-se para compilar o software em uma instância AL2
<a name="compile-software"></a>

Há softwares de código aberto disponíveis na Internet que não foram pré-compilados e disponibilizados para download de um repositório de pacotes. É possível acabar descobrindo um pacote de software que precisa compilar por conta própria, do código-fonte. Para que seu sistema possa compilar software no AL2 Amazon Linux, você precisa instalar várias ferramentas de desenvolvimento, como **make****gcc**, e. **autoconf**

Como a compilação de software não é uma tarefa necessária para toda instância do Amazon EC2, essas ferramentas não são instaladas por padrão, mas elas estão disponíveis em um grupo de pacotes chamado "Development Tools", que é adicionado facilmente a uma instância com o comando **yum groupinstall**.

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

Os pacotes de código-fonte de software geralmente estão disponíveis para download (em sites como [https://github.com/](https://github.com/)e [http://sourceforge.net/](https://sourceforge.net/)) como um arquivo compactado, chamado tarball. Esses tarballs geralmente têm a extensão de arquivo `.tar.gz`. É possível descompactar esses arquivos com o comando **tar**.

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

Após descompactar e desarquivar o pacote do código-fonte, é necessário procurar um arquivo `README` ou `INSTALL` no diretório de código-fonte que pode fornecer instruções adicionais para compilar e instalar o código-fonte. 

**Como recuperar o código-fonte dos pacotes do Amazon Linux**  
A Amazon Web Services fornece o código-fonte para pacotes mantidos. É possível fazer download do código-fonte de todos os pacotes instalados com o comando **yumdownloader --source**.

Execute o **yumdownloader --source *package*** comando para baixar o código-fonte do*package*. Por exemplo, para fazer download do código-fonte para o pacote `htop`, insira o seguinte comando.

```
[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
```

O local do RPM de origem está no diretório em que você executou o comando.

# Controle de estado do processador para sua instância do Amazon EC2 AL2
<a name="processor_state_control"></a>

C-states controlam os níveis de desativação que um núcleo pode assumir quando está inativo. Os C-states são numerados começando com C0 (o estado mais superficial em que o núcleo está totalmente ativo e executando instruções) até C6 (o estado de ociosidade mais profundo em que um núcleo está desativado).

P-states controlam a performance desejada (na frequência da CPU) de um núcleo. Os P-states são numerados começando com P0 (a configuração de performance mais elevada em que o núcleo pode usar a Intel Turbo Boost Technology para aumentar a frequência, se possível) e vão de P1 (o P-state que solicita a frequência máxima de linha de base) até P15 (a frequência mais baixa possível).

Talvez você queira alterar as configurações de C-state ou P-state para aumentar a consistência de performance do processador, reduzir a latência ou ajustar sua instância para uma workload específica. As configurações padrão de C-state e P-state proporcionam o performance máxima, que é o ideal para a maioria das workloads. Contudo, se sua aplicação se beneficiaria de latência reduzida ao custo de frequências superiores de single ou dual core, ou de uma performance consistente em frequências menores em oposição às frequências Turbo Boost expansíveis, considere experimentar as configurações de C-state ou P-state que estão disponíveis para essas instâncias.

*Para obter informações sobre os tipos de instância do Amazon EC2 que permitem que o sistema operacional controle os estados C e P do processador, consulte Controle do [estado do processador para sua instância do Amazon EC2 no Guia do usuário do Amazon EC2](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/processor_state_control.html).*

As seções a seguir descrevem as diferentes configurações de estado do processador e como monitorar os efeitos de sua configuração. Esses procedimentos foram escritos e se aplicam ao Amazon Linux; no entanto, eles também podem funcionar para outras distribuições Linux com uma versão 3.9 ou mais recente do kernel Linux.

**nota**  
Os exemplos desta página usam o seguinte:  
O utilitário **turbostat** para exibir informações sobre a frequência do processador e do estado C. O utilitário **turbostat** está disponível no Amazon Linux por padrão.
O comando **stress** para simular um workload. Para instalar o **stress**, primeiro ative o repositório EPEL executando **sudo amazon-linux-extras install epel** e, em seguida, execute **sudo yum install -y stress**.
Se a saída não exibe informações do C-state, inclua a opção **--debug** no comando (**sudo turbostat --debug stress *<options>***).

**Topics**
+ [A mais alta performance com a frequência máxima de Turbo Boost](#turbo-perf)
+ [Alta performance e baixa latência limitando os C-states mais profundos](#c-states)
+ [Performance basal com menor variabilidade](#baseline-perf)

## A mais alta performance com a frequência máxima de Turbo Boost
<a name="turbo-perf"></a>

Essa é a configuração de controle de estado do processador padrão para o Amazon Linux AMI, e é a recomendada para a maioria das workloads. Essa configuração fornece a mais alta performance com menor variabilidade. Permitir que os núcleos inativos assumam os estados mais profundos de desativação fornece o espaço térmico para processos de single ou dual core a fim de atingir o potencial máximo de Turbo Boost.

O exemplo a seguir mostra uma instância `c4.8xlarge` com dois núcleos que executam o trabalho de forma ativa, atingindo a frequência Turbo Boost do processador.

```
[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
```

Neste exemplo, as versões CPUs 21 e 28 estão funcionando na frequência máxima do Turbo Boost porque os outros núcleos entraram no estado de `C6` espera para economizar energia e fornecer energia e espaço térmico para os núcleos de trabalho. Os CPUs v3 e 10 (cada um compartilhando um núcleo de processador com as v CPUs 21 e 28) estão no `C1` estado aguardando instruções.

No exemplo a seguir, todos os 18 núcleos estão trabalhando ativamente, portanto, não há espaço livre para o Turbo Boost máximo, mas todos estão funcionando na velocidade “Turbo Boost de todos os núcleos” de 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
...
```

## Alta performance e baixa latência limitando os C-states mais profundos
<a name="c-states"></a>

Os C-states controlam os níveis de desativação que um núcleo pode assumir quando está inativo. É possível controlar os C-states para ajustar seu sistema em relação à latência versus performance. Desativar núcleos leva tempo e, embora um núcleo desativado forneça mais espaço para um núcleo funcionar em uma frequência mais alta, leva tempo para que esse núcleo desativado seja reativado e execute o trabalho. Por exemplo, se um núcleo que receber a tarefa de lidar com interrupções de pacotes da internet estiver desativado, poderá ocorrer um atraso em lidar com essa interrupção. É possível configurar o sistema para não usar C-states mais profundos, o que reduz a latência de reação do processador, mas que, por sua vez, também reduz o espaço disponível para outros núcleos para Turbo Boost.

Um cenário comum para desabilitar estados de desativação mais profundos é uma aplicação de banco de dados Redis, que armazena o banco de dados na memória do sistema para o tempo de resposta de consulta mais rápido possível.

**Para limitar os estados de sono mais profundos em AL2**

1. Abra o arquivo `/etc/default/grub` com o editor de preferência.

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

1. Edite a linha `GRUB_CMDLINE_LINUX_DEFAULT` e adicione as opções `intel_idle.max_cstate=1` e `processor.max_cstate=1` para definir `C1` como o estado C mais profundo para núcleos inativos.

   ```
   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
   ```

   A opção `intel_idle.max_cstate=1` configura o limite de estado C para instâncias baseadas em Intel e a opção `processor.max_cstate=1` configura o limite de estado C para instâncias baseadas em AMD. É seguro adicionar as duas opções à sua configuração. Isso permite que uma única configuração defina o comportamento desejado para Intel e AMD.

1. Salve o arquivo e saia do editor.

1.  Execute o comando a seguir para recompilar a configuração de inicialização.

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

1. Reinicialize sua instância para habilitar a nova opção de kernel.

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

**Para limitar estados de desativação mais profundos no Amazon Linux AMI**

1. Abra o arquivo `/boot/grub/grub.conf` com o editor de preferência.

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

1. Edite a linha `kernel` da primeira entrada e adicione as opções `intel_idle.max_cstate=1` e `processor.max_cstate=1` para definir `C1` como o estado C mais profundo para núcleos inativos.

   ```
   # 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
   ```

   A opção `intel_idle.max_cstate=1` configura o limite de estado C para instâncias baseadas em Intel e a opção `processor.max_cstate=1` configura o limite de estado C para instâncias baseadas em AMD. É seguro adicionar as duas opções à sua configuração. Isso permite que uma única configuração defina o comportamento desejado para Intel e AMD.

1. Salve o arquivo e saia do editor.

1. Reinicialize sua instância para habilitar a nova opção de kernel.

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

O exemplo a seguir mostra uma instância `c4.8xlarge` com dois núcleos que executam o trabalho de forma ativa na frequência "all core Turbo Boost" do núcleo.

```
[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
...
```

Neste exemplo, os núcleos para v CPUs 19 e 28 estão rodando em 3.2 GHz, e os outros núcleos estão no `C1` estado C, aguardando instruções. Embora os núcleos de trabalho não estejam atingindo a frequência máxima de Turbo Boost, os núcleos inativos responderão com muito mais rapidez a novas solicitações do que o fariam se estivessem no C-state `C6` mais profundo.

## Performance basal com menor variabilidade
<a name="baseline-perf"></a>

É possível reduzir a variabilidade da frequência do processador com P-states. Os P-states controlam a performance desejada (na frequência da CPU) de um núcleo. A maioria das workloads funcionam melhor em P0, o que exige Turbo Boost. No entanto, é possível ajustar seu sistema para obter uma performance consistente em vez de uma performance expansível que pode acontecer quando as frequências Turbo Boost são habilitadas. 

As cargas de trabalho do Intel Advanced Vector Extensions (AVX ou AVX2) podem funcionar bem em frequências mais baixas, e as instruções AVX podem usar mais energia. Executar o processador em uma frequência menor desabilitando o Turbo Boost pode reduzir a quantidade de energia usada e manter a velocidade mais consistente. Para obter mais informações sobre como otimizar suas configurações de instância e workload para AVX, consulte o [site da Intel](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).

Drivers ociosos da CPU controlam o estado P. As gerações mais recentes de CPU requerem drivers ociosos da CPU atualizados que correspondam ao nível do kernel da seguinte forma:
+ Versões 6.1 e superiores do kernel Linux — Suporta Intel Granite Rapids (por exemplo, R8i)
+ Versões 5.10 e superiores do kernel Linux — Compatível com AMD Milan (por exemplo, M6a)
+ Versões 5.6 e superiores do kernel Linux — Suporta Intel Icelake (por exemplo, M6i)

Para detectar se o kernel de um sistema em execução reconhece a CPU, execute o seguinte comando.

```
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
```

Se a saída desse comando indicar falta de suporte, recomendamos que você atualize o kernel.

Esta seção descreve como limitar estados de desativação mais profundos e desabilitar o Turbo Boost (solicitando o P-state `P1`) para fornecer baixa latência e menor variabilidade da velocidade do processador para esses tipos de fluxos de trabalho.

**Para limitar estados de sono mais profundos e desativar o Turbo Boost em AL2**

1. Abra o arquivo `/etc/default/grub` com o editor de preferência.

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

1. Edite a linha `GRUB_CMDLINE_LINUX_DEFAULT` e adicione as opções `intel_idle.max_cstate=1` e `processor.max_cstate=1` para definir `C1` como o estado C mais profundo para núcleos inativos.

   ```
   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
   ```

   A opção `intel_idle.max_cstate=1` configura o limite de estado C para instâncias baseadas em Intel e a opção `processor.max_cstate=1` configura o limite de estado C para instâncias baseadas em AMD. É seguro adicionar as duas opções à sua configuração. Isso permite que uma única configuração defina o comportamento desejado para Intel e AMD.

1. Salve o arquivo e saia do editor.

1.  Execute o comando a seguir para recompilar a configuração de inicialização.

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

1. Reinicialize sua instância para habilitar a nova opção de kernel.

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

1. Quando você precisar da baixa variabilidade da velocidade do processador que o P-state `P1` fornece, execute o seguinte comando para desabilitar o Turbo Boost.

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

1. Quando sua workload for concluída, será possível reabilitar o Turbo Boost com o seguinte comando.

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

**Para limitar estados de desativação mais profundos e desabilitar o Turbo Boost no Amazon Linux AMI**

1. Abra o arquivo `/boot/grub/grub.conf` com o editor de preferência.

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

1. Edite a linha `kernel` da primeira entrada e adicione as opções `intel_idle.max_cstate=1` e `processor.max_cstate=1` para definir `C1` como o estado C mais profundo para núcleos inativos.

   ```
   # 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
   ```

   A opção `intel_idle.max_cstate=1` configura o limite de estado C para instâncias baseadas em Intel e a opção `processor.max_cstate=1` configura o limite de estado C para instâncias baseadas em AMD. É seguro adicionar as duas opções à sua configuração. Isso permite que uma única configuração defina o comportamento desejado para Intel e AMD.

1. Salve o arquivo e saia do editor.

1. Reinicialize sua instância para habilitar a nova opção de kernel.

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

1. Quando você precisar da baixa variabilidade da velocidade do processador que o P-state `P1` fornece, execute o seguinte comando para desabilitar o Turbo Boost.

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

1. Quando sua workload for concluída, será possível reabilitar o Turbo Boost com o seguinte comando.

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

O exemplo a seguir mostra uma `c4.8xlarge` instância com dois v executando CPUs ativamente o trabalho na frequência central básica, sem 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
```

Os núcleos para v CPUs 21 e 28 estão trabalhando ativamente na velocidade básica do processador de 2,9 GHz, e todos os núcleos inativos também estão funcionando na velocidade básica no `C1` estado C, prontos para aceitar instruções.

# Programador de E/S para AL2
<a name="io-scheduler"></a>

As I/O scheduler is a part of the Linux operating system that sorts and merges I/O solicitações e determina a ordem na qual elas são processadas.

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/Oos programadores têm menos efeito com dispositivos de estado sólido e ambientes virtualizados. Isso ocorre porque, para dispositivos de estado sólido, o acesso sequencial e o acesso aleatório não diferem e, para ambientes virtualizados, o host fornece sua própria camada de programação.

Este tópico discute o I/O agendador Amazon Linux. Para obter mais informações sobre o programador de E/S usado por outras distribuições Linux, consulte a respectiva documentação.

**Topics**
+ [Programadores com suporte](#supported-schedulers)
+ [Programador padrão](#default-schedulers)
+ [Alterar o programador](#change-scheduler)

## Programadores com suporte
<a name="supported-schedulers"></a>

O Amazon Linux oferece suporte aos seguintes I/O agendadores:
+ `deadline`— O I/O agendador de *prazos* classifica as I/O solicitações e as trata na ordem mais eficiente. Isso garante uma hora de início para cada I/O request. It also gives I/O solicitação que está pendente há muito tempo e tem uma prioridade mais alta.
+ `cfq`— O I/O programador *Completely Fair Queueing* (CFQ) tenta I/O resources between processes. It sorts and inserts I/O alocar de forma justa as solicitações em filas por processo.
+ `noop`— As I/O scheduler inserts all I/O solicitações *No Operation* (noop) em uma fila FIFO e as mesclam em uma única solicitação. Esse programador não faz nenhuma classificação de solicitações.

## Programador padrão
<a name="default-schedulers"></a>

No Operation (noop) é o I/O agendador padrão para o Amazon Linux. Este programador é usado pelos seguintes motivos:
+ Muitos tipos de instância usam dispositivos virtualizados em que o host subjacente executa a programação para a instância.
+ Dispositivos de estado sólido são usados em muitos tipos de instâncias em que os benefícios de um I/O programador têm menos efeito.
+ É o I/O programador menos invasivo e pode ser personalizado, se necessário.

## Alterar o programador
<a name="change-scheduler"></a>

A alteração do I/O agendador pode aumentar ou diminuir o desempenho com base no fato de o agendador resultar na conclusão de mais ou menos I/O solicitações em um determinado período. Isso depende, em grande parte, da workload, da geração do tipo de instância que está sendo usado e do tipo de dispositivo que está sendo acessado. Se você alterar o programador de E/S que está sendo usado, recomendamos usar uma ferramenta, como **iotop**, para medir o I/O desempenho e determinar se a alteração é benéfica para seu caso de uso.

Você pode visualizar o I/O agendador de um dispositivo usando o comando a seguir, que usa `nvme0n1` como exemplo. Substitua `nvme0n1` no comando a seguir pelo dispositivo listado em `/sys/block` na sua instância.

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

Para definir o I/O agendador para o dispositivo, use o comando a seguir. 

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

Por exemplo, para definir o I/O agendador para um *xvda* dispositivo de `noop` até`cfq`, use o comando a seguir. 

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

# Altere o nome do host da sua instância AL2
<a name="set-hostname"></a>

Quando você inicia uma instância em uma VPC privada, o Amazon EC2 atribui um nome de host do sistema operacional convidado. O tipo de nome de host que o Amazon EC2 atribui depende das suas configurações de sub-rede. Para obter mais informações sobre nomes de host do EC2, consulte os tipos de [nome de host da instância do Amazon EC2 no Guia do usuário](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) do Amazon *EC2*.

Um nome DNS privado típico do Amazon EC2 para uma instância do EC2 configurada para usar nomenclatura baseada em IP com um IPv4 endereço é mais ou menos assim:`ip-12-34-56-78.us-west-2.compute.internal`, onde o nome consiste no domínio interno, no serviço (nesse caso,`compute`), na região e em uma forma do endereço privado. IPv4 Parte desse nome do host é exibida no prompt do shell quando você se conecta à sua instância (por exemplo, `ip-12-34-56-78`). Cada vez que você interrompe e reinicia sua instância do Amazon EC2 (a menos que esteja usando um endereço IP elástico), o IPv4 endereço público muda, assim como seu nome DNS público, nome de host do sistema e prompt de shell.

**Importante**  
Essas informações se aplicam ao Amazon Linux. Para obter informações sobre outras distribuições, consulte a documentação específica.

## Alterar o nome do host do sistema
<a name="set-hostname-system"></a>

Se você tiver um nome DNS público registrado para o endereço IP de sua instância (como `webserver.mydomain.com`), poderá configurar o nome do host do sistema para que a instância se identifique como parte do domínio. Isso também altera o prompt do shell para que ele exiba a primeira parte desse nome em vez do nome do host fornecido por AWS (por exemplo,`ip-12-34-56-78`). Se você não tiver um nome DNS público registrado, ainda assim poderá alterar o nome do host, mas o processo é um pouco diferente.

Para que a atualização do nome do host seja mantida, verifique se a `preserve_hostname`configuração do cloud-init está definida como `true`. É possível executar o seguinte comando para editar ou adicionar essa configuração:

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

Se a configuração `preserve_hostname` não estiver listada, adicione a seguinte linha de texto ao final do arquivo: 

```
preserve_hostname: true
```

**Para alterar o nome do host do sistema para um nome DNS público**

Siga este procedimento se você já tiver um nome DNS público registrado.

1. 
   + Para AL2: Use o **hostnamectl** comando para definir seu nome de host para refletir o nome de domínio totalmente qualificado (como**webserver.mydomain.com**).

     ```
     [ec2-user ~]$ sudo hostnamectl set-hostname webserver.mydomain.com
     ```
   + Para Amazon Linux AMI: em sua instância, abra o arquivo de configuração `/etc/sysconfig/network` em seu editor de preferência e altere a entrada `HOSTNAME` para refletir o nome de domínio totalmente qualificado (como **webserver.mydomain.com**).

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

1. Reinicialize a instância para obter o novo nome do host.

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

   Como alternativa, é possível reinicializar usando o console do Amazon EC2 (na página **Instances (Instâncias)**, selecione a instância e escolha **Instance state (Estado da instância)** e **Reboot instance (Reinicializar instância)**).

1. Conecte-se à sua instância e verifique se o nome do host foi atualizado. O prompt deverá mostrar o novo nome do host (até o primeiro ".") e o comando **hostname** deve mostrar o nome de domínio totalmente qualificado.

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

**Para alterar o nome do host do sistema sem um nome DNS público**

1. 
   + Para AL2: Use o **hostnamectl** comando para definir seu nome de host para refletir o nome de host do sistema desejado (como**webserver**).

     ```
     [ec2-user ~]$ sudo hostnamectl set-hostname webserver.localdomain
     ```
   + No Amazon Linux AMI: em sua instância, abra o arquivo de configuração `/etc/sysconfig/network` em seu editor de texto de preferência e altere a entrada `HOSTNAME` para refletir o nome do host do sistema desejado (como webserver **webserver**).

     ```
     HOSTNAME=webserver.localdomain
     ```

1. Abra o arquivo `/etc/hosts` em seu editor de texto de preferência e altere a entrada começando com **127.0.0.1** para corresponder ao exemplo abaixo, substituindo seu próprio nome do host.

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

1. Reinicialize a instância para obter o novo nome do host.

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

   Como alternativa, é possível reinicializar usando o console do Amazon EC2 (na página **Instances (Instâncias)**, selecione a instância e escolha **Instance state (Estado da instância)** e **Reboot instance (Reinicializar instância)**).

1. Conecte-se à sua instância e verifique se o nome do host foi atualizado. O prompt deverá mostrar o novo nome do host (até o primeiro ".") e o comando **hostname** deve mostrar o nome de domínio totalmente qualificado.

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

Também é possível implementar soluções mais programáticas, como especificar dados do usuário para configurar sua instância. Se sua instância fizer parte de um grupo do Auto Scaling, você poderá usar ganchos do ciclo de vida para definir os dados do usuário. Para obter mais informações, consulte [Executar comandos em sua instância do Linux na inicialização](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) e [Hook do ciclo de vida para inicialização da instância](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html#aws-resource-autoscaling-lifecyclehook--examples--Lifecycle_hook_for_instance_launch) no *Guia do usuário AWS CloudFormation *.

## Alterar o prompt do shell sem afetar o nome do host
<a name="set-hostname-shell"></a>

Se você não quiser modificar o nome do host da sua instância, mas quiser que um nome de sistema mais útil (como**webserver**) seja exibido do que o nome privado fornecido por AWS (por exemplo,`ip-12-34-56-78`), edite os arquivos de configuração do prompt do shell para exibir o apelido do sistema em vez do nome do host.

**Para alterar o prompt do shell para um apelido de host**

1. Crie um arquivo em `/etc/profile.d` que defina a variável do ambiente chamada `NICKNAME` para o valor que você deseja no prompt do shell. Por exemplo, para definir o apelido do sistema como **webserver**, execute o seguinte comando.

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

1. Abra o arquivo `/etc/bashrc` (Red Hat) ou `/etc/bash.bashrc` (Debian/Ubuntu) no seu editor de texto favorito (como **vim** ou **nano**). Você precisa usar **sudo** com o comando do editor, pois `/etc/bashrc` e `/etc/bash.bashrc` são de propriedade de `root`.

1. Edite o arquivo e altere a variável do prompt do shell (`PS1`) para exibir seu apelido em vez do nome do host. Encontre a seguinte linha que define o prompt do shell em `/etc/bashrc` ou `/etc/bash.bashrc` (várias linhas adjacentes são mostradas abaixo para fornecer o contexto; procure a linha que começa com `[ "$PS1"`):

   ```
     # 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
   ```

   Altere o `\h` (o símbolo para `hostname`) nessa linha para o valor da variável `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. (Opcional) Para configurar o título nas janelas do shell com um novo apelido, conclua as seguintes etapas.

   1. Crie um arquivo chamado `/etc/sysconfig/bash-prompt-xterm`.

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

   1. Torne o arquivo executável usando o comando a seguir.

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

   1. Abra o arquivo `/etc/sysconfig/bash-prompt-xterm` no seu editor de texto de preferência (como **vim** ou **nano**). Você precisará usar **sudo** com o comando do editor, pois `/etc/sysconfig/bash-prompt-xterm` é de propriedade de `root`.

   1. Adicione a linha a seguir ao arquivo.

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

1. Desconecte-se e conecte-se novamente para obter o novo valor do apelido.

## Alterar o nome do host em outras distribuições do Linux
<a name="set-hostname-other-linux"></a>

Os procedimentos desta página são destinados ao uso com o Amazon Linux somente. Para obter mais informações sobre outras distribuições do Linux, consulte a documentação específica e os seguintes artigos:
+ [Como atribuo um nome do host estático a uma instância do Amazon EC2 privada executando RHEL 7 ou Centos 7?](https://aws.amazon.com/premiumsupport/knowledge-center/linux-static-hostname-rhel7-centos7/)

# Configure o DNS dinâmico na sua instância AL2
<a name="dynamic-dns"></a>

Quando você inicia uma instância do EC2, ela recebe um endereço IP público e a um Sistema de Nomes de Domínio (DNS) público que é possível usar para ter acesso a ela pela Internet. Como há muitos hosts no domínio da Amazon Web Services, esses nomes públicos devem ser longos o suficiente para que cada nome permaneça exclusivo. Um nome DNS público típico do Amazon EC2 é mais ou menos assim:`ec2-12-34-56-78.us-west-2.compute.amazonaws.com`, onde o nome consiste no domínio da Amazon Web Services, no serviço (nesse caso,`compute`) Região da AWS, no e em uma forma do endereço IP público.

Os serviços de DNS dinâmico fornecem nomes do host DNS personalizados na área de domínio que sejam fáceis de lembrar e também mais apropriados ao caso de uso do host. Alguns desses serviços também são gratuitos. Alguns desses serviços também são gratuitos. É possível usar um provedor DNS dinâmico com o Amazon EC2 e configurar a instância para atualizar o endereço IP associado a um nome DNS público sempre que uma instância for iniciada. Há muitos provedores diferentes à sua escolha, e os detalhes específicos da escolha do provedor e do registro de um nome com ele estão fora do escopo deste guia.<a name="procedure-dynamic-dns"></a>

**Para usar o DNS dinâmico com o Amazon EC2**

1. Cadastre-se com um provedor de serviços DNS dinâmico e registre um nome DNS público com o serviço. Esse procedimento usa o serviço gratuito de [noip.com/free](https://www.noip.com/free) como exemplo.

1. Configure o cliente de atualização de DNS dinâmico. Após registrar um provedor de serviços de DNS dinâmico e um nome DNS público com o serviço, aponte o nome DNS para o endereço IP de sua instância. Muitos provedores (incluindo o [noip.com](https://noip.com)) permitem que você faça isso manualmente na página da conta em seu site, mas muitos também oferecem suporte a clientes de atualização de software. Se um cliente de atualização estiver sendo executado na instância do EC2, o registro do DNS dinâmico será atualizado sempre que o endereço IP mudar, como após o encerramento e a reinicialização. Neste exemplo, você instala o cliente noip2, que funciona com o serviço proporcionado pelo [noip.com](https://noip.com).

   1. Ative o repositório Extra Packages for Enterprise Linux (EPEL) para obter acesso ao `noip2` cliente.
**nota**  
AL2 as instâncias têm as chaves GPG e as informações do repositório do EPEL instaladas por padrão. Para obter mais informações e baixar a versão mais recente desse pacote, consulte [https://fedoraproject. org/wiki/EPEL](https://fedoraproject.org/wiki/EPEL).

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

   1. Instale o pacote `noip`.

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

   1. Crie o arquivo de configuração. Insira as informações de login e senha quando solicitado e responda as perguntas subsequentes para configurar o cliente.

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

1. Habilite o serviço noip.

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

1. Inicie o serviço noip.

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

   Esse comando inicia o cliente, que lê o arquivo de configuração (`/etc/no-ip2.conf`) que você criou anteriormente e atualiza o endereço IP para o nome DNS público que você escolher.

1. Verifique se o cliente de atualização definiu o endereço IP correto para o nome DNS dinâmico. Aguarde alguns minutos para que os registros DNS sejam atualizados e tente se conectar à sua instância usando SSH com o nome DNS público que você configurou nesse procedimento.

# Configure sua interface de rede usando ec2-net-utils para AL2
<a name="ec2-net-utils"></a>

O Amazon Linux 2 AMIs pode conter scripts adicionais instalados pelo AWS, conhecidos como ec2-net-utils. Esses scripts opcionalmente automatizam a configuração das suas interfaces de rede. Esses scripts estão disponíveis AL2 somente para.

**nota**  
Para o Amazon Linux 2023, o `amazon-ec2-net-utils` pacote gera configurações específicas de interface no diretório. `/run/systemd/network` Para obter mais informações, consulte [Networking service (serviço de networking)](https://docs.aws.amazon.com/linux/al2023/ug/networking-service.html) no *Amazon Linux 2023 User Guide (Guia do usuário do Amazon Linux 2023)*.

Use o comando a seguir para instalar o pacote, AL2 se ele ainda não estiver instalado, ou atualize-o se estiver instalado e houver atualizações adicionais disponíveis:

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

Os componentes a seguir fazem parte de ec2-net-utils:

Regras udev (`/etc/udev/rules.d`)  
Identifica interfaces de rede quando são associadas, separadas ou religadas a uma instância em execução, e garante que o script de hotplug seja executado (`53-ec2-network-interfaces.rules`). Mapeia o endereço MAC para um nome de dispositivo (`75-persistent-net-generator.rules`, que gera `70-persistent-net.rules`).

Script de hotplug  
Gera um arquivo de configuração de interface apropriado para uso com DHCP (`/etc/sysconfig/network-scripts/ifcfg-eth`*N*). Gera também um arquivo de configuração de rota (`/etc/sysconfig/network-scripts/route-eth`*N*).

Script de DHCP  
Sempre que a interface de rede receber um novo lease do DHCP, esse script consultará os metadados da instância para endereços IP elásticos. Para cada endereço IP elástico, ele adiciona uma regra ao banco de dados de políticas de roteamento para garantir que o tráfego de saída desse endereço use a interface de rede correta. Ele também adiciona cada endereço IP privado à interface de rede como um endereço secundário.

**ec2ifup** eth*N* (`/usr/sbin/`)  
Estende a funcionalidade de padrão **ifup**. Depois de o script reescrever os arquivos de configuração `ifcfg-eth`*N* e `route-eth`*N*, ele executará o **ifup**.

**ec2ifdown** eth*N* (`/usr/sbin/`)  
Estende a funcionalidade de padrão **ifdown**. Depois de o script eliminar todas as regras da interface de rede do banco de dados de políticas de roteamento, ele executará o **ifdown**.

**ec2ifscan** (`/usr/sbin/`)  
Verifica se há interfaces de rede que não foram configuradas e as configura.  
Este script não está disponível na versão inicial de ec2-net-utils.

Para listar todos os arquivos de configuração gerados por ec2-net-utils, use o seguinte comando:

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

Para desabilitar a automação, é possível adicionar `EC2SYNC=no` ao arquivo `ifcfg-eth`*N* correspondente. Por exemplo, use o comando a seguir para desabilitar a automação da interface eth1:

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

Para desativar completamente a automação, pode remover o pacote usando o seguinte comando:

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