성능을 위해 EC2 인스턴스 조정 - AWS Ground Station

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

성능을 위해 EC2 인스턴스 조정

참고

CloudFormation 템플릿을 사용하여 AWS 리소스를 프로비저닝한 경우 이러한 튜닝이 자동으로 적용됩니다. EC2 인스턴스를 사용하거나 AMI 수동으로 생성한 경우 이러한 성능 조정을 적용하여 가장 안정적인 성능을 달성해야 합니다.

조정을 적용한 후에는 반드시 인스턴스를 재부팅해야 합니다.

주제

하드웨어 인터럽트 및 수신 대기열 조정 - 영향 CPU 및 네트워크

이 섹션에서는 시스템, SMP , IRQs수신 패킷 조향(RPS) 및 수신 흐름 조향()의 CPU 코어 사용을 구성합니다RFS. 사용 중인 인스턴스 유형에 따른 권장 설정 세트는 부록: 인터럽트/RPS 튜닝을 위한 권장 파라미터을 참조하세요.

  1. 에이전트 CPU 코어에서 멀리 떨어진 곳에 시스템화된 프로세스를 핀으로 고정합니다.

  2. 하드웨어 중단 요청을 에이전트 CPU 코어에서 멀리 라우팅합니다.

  3. 단일 네트워크 인터페이스 카드의 하드웨어 대기열이 네트워크 트래픽의 병목 현상이 되지 않도록 RPS를 구성합니다.

  4. CPU 캐시 적중률을 증가시켜 네트워크 지연 시간을 줄이RFS도록 를 구성합니다.

에서 제공하는 set_irq_affinity.sh 스크립트는 위의 모든 항목을 RPM 구성합니다. 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 는 수신 패킷을 처리CPUs해야 하는 를 지정하는 16진수 비트 마스크이며 각 숫자는 4를 나타냅니다CPUs. 또한 오른쪽부터 시작하여 8자마다 쉼표로 구분해야 합니다. 캐싱이 밸런싱을 처리할 수 있도록 모두 허용CPUs하고 캐싱을 허용하는 것이 좋습니다.

  • 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

Tune 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이기 때문입니다.

Tune 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.32xlarge 인스턴스를 설정하는 경우 링 버퍼를 16384 대신 8192로 설정하도록 명령을 수정해야 합니다.

CPU C-State 조정 - 영향 CPU

C CPU 상태를 설정하여 연락 시작 중에 패킷이 손실될 수 있는 공회전을 방지합니다. 인스턴스 재부팅이 필요합니다.

echo "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 max_cstate=1\"" >/etc/default/grub echo "GRUB_TIMEOUT=0" >>/etc/default/grub grub2-mkconfig -o /boot/grub2/grub.cfg

수신 포트 예약 - 네트워크에 영향을 줍니다.

커널 사용과 충돌하지 않도록 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

이 섹션에서는 튜닝에 사용할 권장 파라미터 값, 하드웨어 중단 및 수신 대기열 조정 - 영향 CPU 및 네트워크를 결정합니다.

Family 인스턴스 유형 ${interrupt_core_list} ${rps_core_mask}

c6i

  • c6i.32xlarge

  • 0,1,64,65

  • ffffff, ffffff, ffffff, ffffff

C5

  • c5.24xlarge

  • c5.18xlarge

  • c5.12xlarge

  • 0,1,48,49

  • 0,1,36,37

  • 0,1,24,25

  • ffffff, ffffff, ffffff

  • ff, ffffff, ffffff

  • ffff,ffffffff

C5n

  • c5n.metal

  • c5n.18xlarge

  • 0,1,36,37

  • 0,1,36,37

  • ff, ffffff, ffffff

  • ff, ffffff, ffffff

m5

  • m5.24xlarge

  • m5.12xlarge

  • 0,1,48,49

  • 0,1,24,25

  • ffffff, ffffff, ffffff

  • ffff,ffffffff

r5

  • r5.metal

  • r5.24xlarge

  • 0,1,48,49

  • 0,1,48,49

  • ffffff, ffffff, ffffff

  • ffffff, ffffff, ffffff

R5n

  • r5n.metal

  • r5n.24xlarge

  • 0,1,48,49

  • 0,1,48,49

  • ffffff, ffffff, ffffff

  • ffffff, ffffff, ffffff

g4dn

  • g4dn.metal

  • g4dn.16xlarge

  • g4dn.12xlarge

  • 0,1,48,49

  • 0,1,32,33

  • 0,1,24,25

  • ffffff, ffffff, ffffff

  • ffffff, ffffff

  • ffff,ffffffff

P4d

  • p4d.24xlarge

  • 0,1,48,49

  • ffffff, ffffff, ffffff

p3dn

  • p3dn.24xlarge

  • 0,1,48,49

  • ffffff, ffffff, ffffff