기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
성능을 위해 EC2 인스턴스 튜닝
참고
CloudFormation 템플릿을 사용하여 AWS 리소스를 프로비저닝한 경우 이러한 조정이 자동으로 적용됩니다. AMI를 사용하거나 EC2 인스턴스를 수동으로 생성한 경우 가장 안정적인 성능을 얻으려면 이러한 성능 조정을 적용해야 합니다.
조정을 적용한 후에는 반드시 인스턴스를 재부팅해야 합니다.
주제
하드웨어 인터럽트 및 수신 대기열 조정 - CPU 및 네트워크에 영향을 미칩니다.
이 섹션에서는 시스템, SMP IRQ, 수신 패킷 조정(RPS) 및 수신 흐름 조정(RFS) 의 CPU 코어 사용량을 구성합니다. 사용 중인 인스턴스 유형에 따른 권장 설정 세트는 부록: 인터럽트/RPS 튜닝을 위한 권장 파라미터을 참조하세요.
중요
Amazon Linux 2023 전용: 계속하기 전에 cron 데몬을 설치하고 활성화합니다.
sudo dnf install -y cronie sudo systemctl enable --now crond
이 섹션과 그 뒤에 오는 두 섹션은 @reboot crontab 항목을 추가합니다. 각 부팅에 적용하려면 실행 중인 cron 데몬이 필요합니다. Amazon Linux 2023에서는 cron 데몬이 기본적으로 설치되지 않으므로 위의 명령이 없으면 이러한 항목이 작성되지만 실행되지 않습니다. Amazon Linux 2에서는 cron 데몬이 이미 설치되어 활성화되어 있으므로 별도의 조치가 필요하지 않습니다.
-
시스템 프로세스를 에이전트 CPU 코어와 분리하여 고정하세요.
-
하드웨어 인터럽트 요청을 에이전트 CPU 코어에서 멀리 라우팅합니다.
-
단일 네트워크 인터페이스 카드의 하드웨어 대기열이 네트워크 트래픽의 병목 현상이 되지 않도록 RPS를 구성하세요.
-
RFS를 구성하여 CPU 캐시 적중률을 높여 네트워크 지연 시간을 줄이세요.
RPM에서 제공하는 set_irq_affinity.sh 스크립트는 위의 모든 사항을 자동으로 구성합니다. crontab에를 추가하여 부팅할 때마다 적용됩니다.
echo "@reboot sudo /opt/aws/groundstation/bin/set_irq_affinity.sh '${interrupt_core_list}' '${rps_core_mask}' >> /var/log/user-data.log 2>&1" >>/var/spool/cron/root
-
를 커널 및 OS용으로 예약된 코어
interrupt_core_list로 바꿉니다. 일반적으로 하이퍼 스레드 코어 페어와 함께 첫 번째 및 두 번째 코어로 바꿉니다. 위에서 선택한 코어와 겹치지 않아야 합니다. (예: 하이퍼 스레드, 96-CPU 인스턴스의 경우 '0,1,48,49'). -
rps_core_mask는 들어오는 패킷을 처리해야 하는 CPU를 지정하는 16진수 비트 마스크로, 각 숫자는 4개의 CPU를 나타냅니다. 또한 오른쪽부터 시작하여 8자마다 쉼표로 구분해야 합니다. 모든 CPU를 허용하고 캐싱이 밸런싱을 처리하도록 하는 것이 좋습니다.-
각 인스턴스 유형에 대한 권장 파라미터 목록을 보려면 부록: 인터럽트/RPS 튜닝을 위한 권장 파라미터을 참조하세요.
-
-
96-CPU 인스턴스의 예:
echo "@reboot sudo /opt/aws/groundstation/bin/set_irq_affinity.sh '0,1,48,49' 'ffffffff,ffffffff,ffffffff' >> /var/log/user-data.log 2>&1" >>/var/spool/cron/root
Rx 인터럽트 병합 조정 - 네트워크에 영향을 미침
인터럽트 통합은 너무 많은 인터럽트로 인해 호스트 시스템이 넘쳐나는 것을 방지하고 네트워크 처리량을 높이는 데 도움이 됩니다. 이 구성에서는 패킷이 수집되고 128마이크로초마다 단일 인터럽트가 생성됩니다. crontab에를 추가하여 부팅할 때마다 적용됩니다.
echo "@reboot sudo ethtool -C ${interface} rx-usecs 128 tx-usecs 128 >>/var/log/user-data.log 2>&1" >>/var/spool/cron/root
-
데이터를 수신하도록 구성된 네트워크 인터페이스(이더넷 어댑터)로
interface를 교체하세요. 일반적으로 EC2 인스턴스에 할당된 기본 네트워크 인터페이스eth0이기 때문입니다.
Rx 링 버퍼 튜닝 - 네트워크에 영향을 미칩니다.
연결 버퍼가 폭주하는 동안 패킷 드롭이나 오버런을 방지하려면 Rx 링 버퍼의 링 항목 수를 늘리세요. 를 crontab에 추가하여 부팅할 때마다 올바르게 설정되도록 합니다.
echo "@reboot sudo ethtool -G ${interface} rx 16384 >>/var/log/user-data.log 2>&1" >>/var/spool/cron/root
-
데이터를 수신하도록 구성된 네트워크 인터페이스(이더넷 어댑터)로
interface를 교체하세요. 일반적으로 EC2 인스턴스에 할당된 기본 네트워크 인터페이스eth0이기 때문입니다. -
c6i패밀리 인스턴스를 설정하는 경우 명령을 수정하여 링 버퍼를8192대신 로 설정해야 합니다16384.
커널 부팅 파라미터(CPU C-State 및 인터페이스 이름 지정) 설정 - CPU 및 네트워크에 영향을 미칩니다.
이러한 커널 부팅 파라미터는를 설정하여 CPU 유휴를 방지합니다intel_idle.max_cstate=1 processor.max_cstate=1 max_cstate=1. CPU 유휴로 인해 고객 응대 시작 시 패킷이 손실될 수 있습니다. 파라미터에는 수신기의 네트워크 인터페이스 이름을 로 net.ifnames=0 biosdevname=0변경하는 도 포함됩니다eth0. 이 장의 다른 튜닝 단계와 마찬가지로 이러한 파라미터는에 설명된 재부팅 시 적용됩니다재부팅. 다른 섹션을 기준으로 어떤 순서로든 적용할 수 있습니다.
grubby를 사용하여 커널 인수를 설정합니다. 이 작업은 Amazon Linux 2023(UEFI)과 Amazon Linux 2 모두에서 작동합니다.가 부트로더 구성을 둘 다에서 직접 grubby 관리하기 때문입니다.
sudo grubby --update-kernel=ALL --args="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1 max_cstate=1"
참고
net.ifnames=0 인수는 다음 부팅 eth0 시 네트워크 인터페이스의 이름을 로 바꿉니다. 다른 튜닝 섹션과 에이전트 구성 대상 eth0이므로 이러한 파라미터를 적용하고 재부팅하는 것이 좋습니다. 이러한 파라미터를 적용하지 않도록 선택하면 인터페이스는 기본 이름을 유지합니다(예: ens5 Amazon Linux 2023). 이 경우이 가이드에서를 사용하는 ip link show 모든 곳에서 실행하여 찾은 실제 인터페이스 이름을 대체합니다eth0.
수신 포트 예약 - 네트워크에 영향을 미칩니다.
커널 사용과 충돌하지 않도록 AwsGroundStationAgentEndpoint의 수신 주소 포트 범위 내의 모든 포트를 예약하세요. 포트 사용 충돌로 인해 접촉 및 데이터 전송 실패가 발생할 수 있습니다.
echo "net.ipv4.ip_local_reserved_ports=${port_range_min}-${port_range_max}" >> /etc/sysctl.conf
-
예시:
echo "net.ipv4.ip_local_reserved_ports=42000-43500" >> /etc/sysctl.conf.
재부팅
모든 조정이 성공적으로 적용된 후 조정이 적용되도록 하려면 인스턴스를 재부팅합니다.
sudo reboot
부록: 인터럽트/RPS 튜닝을 위한 권장 파라미터
이 섹션에서는 조정 섹션 하드웨어 인터럽트 및 수신 대기열 조정 - CPU 및 네트워크에 영향을 미치는 권장 매개 변수 값을 결정합니다.
| 패밀리 | 인스턴스 유형 | ${interrupt_core_list} | ${rps_core_mask} |
|---|---|---|---|
|
c7i |
|
|
|
|
c6i |
|
|
|
|
C5 |
|
|
|
|
C5n |
|
|
|
|
m5 |
|
|
|
|
r5 |
|
|
|
|
R5n |
|
|
|
|
g4dn |
|
|
|
|
P4d |
|
|
|
|
p3dn |
|
|
|