Skip to content

이 저장소는 AWS Graviton Technical Guide의 한글 번역본입니다. 이 문서는 6세대 및 7세대 Amazon EC2 인스턴스(C6g[d], M6g[d], R6g[d], T4g, X2gd, C6gn, Im4gn, Is4gen, G5g, C7g)를 구동하는 Arm 기반 AWS Graviton2 및 Graviton3 프로세서를 신규 사용자가 사용할 수 있도록 돕기 위해 작성되었습니다.

License

Unknown and 2 other licenses found

Licenses found

Unknown
LICENSE
MIT-0
LICENSE-SAMPLECODE
Unknown
LICENSE-SUMMARY
Notifications You must be signed in to change notification settings

didhd/aws-graviton-getting-started-kr

Repository files navigation

AWS Graviton 테크니컬 가이드

이 저장소는 AWS Graviton Technical Guide의 한글 번역본입니다. 이 저장소는 AWS Graviton 프로세서로 구동되는 Amazon EC2 인스턴스(최신 세대 Graviton3 프로세서 포함)를 사용하는 사용자와 개발자를 위한 기술지침을 제공해드리기 위해 작성되었습니다. Graviton 프로세서의 특정 기능을 다루겠지만, 이 저장소는 일반적으로 Arm 기반 시스템에서 코드를 실행하는 모든 사람에게 유용합니다.

Contents

Graviton으로 전환

Graviton을 처음 접하시거나, 워크로드를 식별하는 방법, 프로젝트 전환을 계획하는 방법, AWS Graviton2에서 워크로드를 테스트하는 방법, 마지막으로 운영 환경에 배포하는 방법을 알고 싶다면 워크로드를 AWS Graviton2 기반 Amazon EC2 인스턴스로 전환할 때 주요 고려 사항을 참조하세요.

Graviton 프로세서

프로세서 Graviton2 Graviton3
인스턴스 타입 M6g/M6gd, C6g/C6gd/C6gn, R6g/R6gd, T4g, X2gd, G5g, Im4gn/Is4gen C7g
코어 Neoverse-N1 Neoverse-V1
Frequency 2500MHz 2600MHz
Turbo 지원 아니오 아니오
Instruction latencies Instruction Latencies Instruction Latencies
Interconnect CMN-600 CMN-700
아키텍처 리비전 ARMv8.2-a ARMv8.4-a
추가 기능 fp16, rcpc, dotprod, crypto sve, rng, bf16, int8, crypto
권장 -mcpu flag neoverse-n1 neoverse-512tvb
RNG Instructions 아니오
SIMD instructions 2x Neon 128bit vectors 4x Neon 128bit vectors / 2x SVE 256bit
LSE (atomic mem operations)
Pointer Authentication 아니오
코어수 64 64
L1 캐시 (코어당) 64KB inst / 64KB data 64KB inst / 64KB data
L2 캐시 (코어당) 1MB 1MB
LLC (shared) 32MB 32MB
DRAM 8x DDR4 8x DDR5
DDR 암호화

Graviton 최적화하기

일반적인 디버깅 및 프로파일링 정보는 여기를 참조하세요. Graviton에서 성능 최적화 및 디버깅에 대한 자세한 체크리스트는 성능 런북을 참조하세요.

아키텍처와 시스템에 따라 기능이 다르므로, 기존 아키텍처에서 익숙하게 사용했던 일부 도구들이 AWS Graviton에서는 동일하게 동작하지 않을 수 있습니다. 여기에서 해당 유틸리티들을 참조하세요.

Graviton과 관련된 최신 소프트웨어 업데이트

ARM 소프트웨어 생태계에는 엄청난 양의 개선이 매일 이루어지고 있습니다. 컴파일러 그리고 런타임은 최신 버전을 가능하다면 사용하셔야 합니다. 아래 표에는 많이 사용하는 패키지에 대한 최신 업데이트 내용이 나와 있습니다. (혹시 다른 내용이 있다면 알려주세요)

Package Version Improvements
bazel 3.4.1+ Graviton/Arm64를 위한 사전 빌드된 바이너리가 제공됩니다. 설치를 위해서는 아래를 참고하세요.
ffmpeg 5.1+ ffmpeg 다중 스레드 인코더의 성능과 확장성을 향상시키는 더 나은 NEON 벡터화로 libswscale의 성능이 50% 향상되었습니다. 변경 사항은 FFMPEG 버전 4.3에서 사용할 수 있으며 5.1에서 스케일링 및 모션 추정을 추가로 개선할 수 있습니다. 이 두 가지 모두에 대한 추가 개선 사항은 2022년 8월 현재 아직 출시되지 않은 5.2에서 이용할 수 있습니다.
HAProxy 2.4+ 심각한 버그 가 수정이 되었습니다. 또한 CPU=armv81로 빌드하면 HAProxy 성능이 4배 향상되므로 이 플래그로 코드를 다시 빌드하세요.
mongodb 4.2.15+ / 4.4.7+ / 5.0.0+ 특히 내부 JS 엔진의 경우 Graviton 성능이 향상되었습니다. LSE 지원이 SERVER-56347에서 추가되었습니다.
MySQL 8.0.23+ 컴파일러가 지원하는 경우 -moutline-atomics로 컴파일했을 때 향상된 스핀락 동작을 보입니다.
.NET 5+ .NET 5는 ARM64의 성능을 크게 향상시켰습니다. 다음은 관련 AWS 블로그와 몇 가지 성능 결과가 나와 있습니다.
OpenH264 2.1.1+ Graviton/Arm64를 위해 사전 빌드된 Cisco OpenH264 바이너리가 제공됩니다.
PCRE2 10.34+ PCRE의 JIT에 네온 벡터화를 추가하여 첫 번째와 한 쌍의 문자를 일치시킵니다. 이것은 매칭 성능을 최대 8배까지 향상시킬 수 있습니다. 이 라이브러리 버전은 현재 Ubuntu 20.04 및 PHP 8과 함께 제공되고 있습니다.
PHP 7.4+ PHP 7.4에는 성능이 최대 30% 향상되는 여러 가지 성능 향상 기능이 포함되어 있습니다.
pip 19.3+ Graviton Graviton에서 Python wheel 바이너리 설치를 활성화합니다.
PyTorch 1.7+ FP32에 대해 Arm64 컴파일, Neon 최적화를 활성화합니다. 소스로부터 설치. 노트: 현재 GCC9 이상이 필요합니다. Ubuntu 20.xx 사용을 권장합니다.
ruby 3.0+ 성능을 최대 40% 향상시키는 arm64 최적화 지원 변경 사항은 Amazon Linux 2, Fedora, and Ubuntu 20.04와 함께 Ruby로 백포팅되었습니다.
zlib 1.2.8+ Graviton2에서 최고의 성능을 얻으려면 zlib-cloudflare를 사용하세요.

컨테이너에서 Graviton 사용

Docker, Kubernetes, Amazon ECS, 그리고 Amazon EKS를 Graviton에서 실행할 수 있습니다. Amazon ECR은 multi-arch 컨테이너를 지원합니다. Graviton에서 컨테이너 기반 워크로드를 실행하는 방법에 대한 내용은 여기를 참조하세요.

AWS Lambda를 사용하면 x86 기반 기능 외에도 Arm 기반 AWS Graviton2 프로세서에서 실행할 새 기능과 기존 기능을 구성할 수 있습니다. 이 프로세서 아키텍처 옵션을 사용하면 가격 성능을 최대 34% 향상시킬 수 있습니다. 기간 요금은 밀리초 단위로 x86의 현재 가격보다 20% 저렴합니다. 이는 Provisioned Concurrency을 사용할 때의 기간 요금에도 적용됩니다. Compute Savings Plans는 Graviton2로 구동되는 Lambda 기능을 지원합니다.

Lambda 페이지에서는 몇 가지 마이그레이션 고려 사항을 강조하고 Arm/Graviton2를 사용하여 Lambda 기능을 빌드하고 마이그레이션하는 방법을 탐색하는 데 사용할 수 있는 간단한 배포 데모를 제공하고 있습니다.

운영체제 지원

Graviton 기반 인스턴스에서 실행할 운영 체제에 대한 자세한 내용은 여기를 참조하세요.

알려진 문제점들과 해결방법

Postgres

LSE를 사용하지 않으면 Postgres 성능이 크게 저하될 수 있습니다. 오늘날 Ubuntu 배포 등에서의 postgres 바이너리는 LSE를 활성화하는 -moutline-atomics-march=armv8.2-a로 빌드되지 않는다는 문제가 있습니다. 참고: Amazon RDS for PostgreSQL은 이에 영향을 받지 않습니다.

2021년 11월 PostgresSQL은 -moutline-atomics로 최적화된 우분투 20.04 패키지를 배포하기 시작했습니다. Ubuntu 20.04의 경우 Ubuntu Focol에서 배포한 패키지 대신 PostgreSQL PPA를 사용하는 것이 좋습니다. PostgreSQL PPA를 설치하기 위해 Postgre 설정 지침을 따라하세요.

일부 리눅스 배포판에 Python 설치방법

일부 리눅스 배포판은 Graviton으로 출시된 Python wheel 패키지를 설치하기에는 오래 (<19.3)되었습니다. 이 문제를 해결하려면 다음을 사용하여 Pip 설치를 업그레이드하는 것이 좋습니다:

sudo python3 -m pip install --upgrade pip

Linux에서의 Bazel

이제 Bazel 빌드 도구에서 arm64용 사전 빌드 바이너리를 릴리스합니다. 2020년 10월 기준으로 커스텀 데비안 레포에서는 사용이 불가능하고, 바젤은 공식적으로 RPM을 제공하지는 않습니다. 대신 "bazel" 명령과 bazel을 최신 상태로 유지을 대체하는 bazelisk instra를 사용하는 것이 좋습니다.

아래는 2020년 10월 기준 bazelisk의 최신 Arm 바이너리 릴리스를 사용한 예입니다:

wget https://github.com/bazelbuild/bazelisk/releases/download/v1.7.1/bazelisk-linux-arm64
chmod +x bazelisk-linux-arm64
sudo mv bazelisk-linux-arm64 /usr/local/bin/bazel
bazel

Bazelisk 자체는 Bazel을 계속 업데이트하는 것이 유일한 목적이기 때문에 추가 업데이트가 필요하지 않습니다.

Linux에서의 zlib

리눅스 배포판은 일반적으로 최적화 없이 원본 zlib을 사용합니다. zlib-cloudflare는 Arm과 x86에서 더 좋고 빠른 압축을 제공하기 위해 추가되었습니다. zlib-cloudflare를 사용하려면:

git clone https://github.com/cloudflare/zlib.git
cd zlib
./configure --prefix=$HOME
make
make install

/etc/ld.so.conf의 $HOME/lib에 있는 lib에 대한 전체 경로가 있는지 확인하고 ldconfig를 실행하세요.

시스템 zlib에 동적으로 연결된 OpenJDK 사용자의 경우 새로 빌드된 zlib-cloudflare 버전이 있는 디렉토리를 가리키도록 LD_LIBRARY_PATH를 설정하거나 해당 라이브러리를 LD_PRELOAD로 로드할 수 있습니다.

JDK가 동적으로 링크되는 libz를 확인할 수 있습니다:

$ ldd /Java/jdk-11.0.8/lib/libzip.so | grep libz
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ffff7783000)

현재 Amazon Corretto 사용자는 zlib-cloudflare에 대해 링크를 걸 수 없습니다.

추가 자료

피드백 [email protected]

한글 번역에 대한 피드백 [email protected]

업데이트: 2022-11-04

About

이 저장소는 AWS Graviton Technical Guide의 한글 번역본입니다. 이 문서는 6세대 및 7세대 Amazon EC2 인스턴스(C6g[d], M6g[d], R6g[d], T4g, X2gd, C6gn, Im4gn, Is4gen, G5g, C7g)를 구동하는 Arm 기반 AWS Graviton2 및 Graviton3 프로세서를 신규 사용자가 사용할 수 있도록 돕기 위해 작성되었습니다.

Topics

Resources

License

Unknown and 2 other licenses found

Licenses found

Unknown
LICENSE
MIT-0
LICENSE-SAMPLECODE
Unknown
LICENSE-SUMMARY

Stars

Watchers

Forks