일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- minikube
- 티스토리챌린지
- Java
- Kubernetes
- kotlin spring
- AI
- 코틀린 코루틴의 정석
- aws
- CKA 기출문제
- CKA
- CloudWatch
- 공부
- mysql 튜닝
- IntelliJ
- kotlin
- 기록으로 실력을 쌓자
- 오블완
- APM
- MySQL
- AWS EKS
- Pinpoint
- kotlin querydsl
- 정보처리기사 실기 기출문제
- PETERICA
- Elasticsearch
- 정보처리기사 실기
- Linux
- Spring
- kotlin coroutine
- 정보처리기사실기 기출문제
- Today
- Total
피터의 개발이야기
[GO] Intel Xeon 프로세서 빌드 방법, GOOS, GOARCH 설정 본문
ㅁ 들어가며
맥북 M3를 사용 중이다. 로컬에서 GO로 빌드한 실행파일이 서버에서 작동하지 않았다.
이번 글에서는 Intel Xeon 프로세서를 위한 Go 빌드 시 GOARCH 설정에 대해 정리하였다.
ㅁ GOARCH란?
GOARCH는 Go 언어에서 타겟 아키텍처를 지정하는 환경 변수이다. 이 설정을 통해 특정 CPU 아키텍처에 최적화된 바이너리를 생성할 수 있다.
ㅁ Intel Xeon을 위한 GOARCH 설정
ㅇ Intel Xeon 프로세서는 서버급 성능을 제공하는 x86-64 아키텍처 기반의 CPU이다.
export GOARCH=amd64
ㅇ Intel Xeon 프로세서는 x86-64 아키텍처를 사용하므로, GOARCH 값을 "amd64"로 설정해야 한다.
ㅇ 이 설정은 64비트 x86 아키텍처를 타겟으로 하는 것을 의미한다.
ㅁ 추가 최적화: GOAMD64 설정
export GOAMD64=v3
ㅇ Go 1.18 버전부터는 GOAMD64 환경 변수를 통해 더 세밀한 x86-64 아키텍처 타겟팅이 가능해졌다.
ㅇ 최신 Intel Xeon 프로세서의 경우 GOAMD64=v3 또는 v4를 사용하면 더 나은 성능을 얻을 수 있다.
ㅇ Intel Xeon 프로세서의 세대에 따라 다음과 같이 설정할 수 있다.
- GOAMD64=v1: 기본 x86-64 명령어 세트 (모든 64비트 x86 프로세서 호환)
- GOAMD64=v2: v1 + SSE4.1, SSE4.2, SSSE3, POPCNT, CMPXCHG16B
- GOAMD64=v3: v2 + AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, OSXSAVE
- GOAMD64=v4: v3 + AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL
ㅁ 빌드 예제
GOARCH=amd64 GOAMD64=v3 go build -o myapp main.go
ㅇ Intel Xeon 프로세서를 위한 Go 프로그램 빌드 예제이다.
ㅇ AVX2와 같은 고급 명령어 세트를 지원하는 Intel Xeon 프로세서에 최적화된 바이너리를 생성한다.
ㅁ OS 설정: GOOS=linux
GOOS=linux GOARCH=amd64
ㅇ 대상 운영 체제를 지정한다.
ㅇ 주요 값: windows, linux, darwin (macOS) 등
ㅁ 성능 테스트 및 벤치마킹
func BenchmarkMyFunction(b *testing.B) {
for i := 0; i < b.N; i++ {
MyFunction()
}
}
ㅇ Go의 내장 벤치마킹 도구를 사용할 수 있다.
ㅇ 이 벤치마크를 다양한 GOARCH 및 GOAMD64 설정으로 실행하여 성능 차이를 비교할 수 있다.
ㅁ 마무리
Intel Xeon 프로세서를 위한 Go 프로그램 빌드 시 적절한 GOARCH 및 GOAMD64 설정은 성능 최적화에 중요한 역할을 한다. amd64 아키텍처를 타겟으로 하고, 가능하다면 GOAMD64=v3 또는 v4를 사용하여 최적의 설정을 찾는 것이 중요하다.
ㅁ 함께 보면 좋은 사이트
'Programming > GO' 카테고리의 다른 글
[GO] Golang에서 http.Client를 이용한 프록시 설정방법 (0) | 2024.12.05 |
---|---|
[GO] GO 언어란? 기본 문법 (2) | 2024.11.19 |
[GO] Goroutine과 Coroutine의 차이점 (0) | 2024.09.13 |
[GO] Go 언어의 장점 (0) | 2024.09.12 |