관리 메뉴

피터의 개발이야기

[GO] Intel Xeon 프로세서 빌드 방법, GOOS, GOARCH 설정 본문

Programming/GO

[GO] Intel Xeon 프로세서 빌드 방법, GOOS, GOARCH 설정

기록하는 백앤드개발자 2024. 12. 6. 23:25
반응형

ㅁ 들어가며

  맥북 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를 사용하여 최적의 설정을 찾는 것이 중요하다.

 

ㅁ 함께 보면 좋은 사이트

Go 언어로 윈도우에서 리눅스 빌드로 크로스 컴파일

[GO] Windows, macOS 및 Linux용 Go 프로그램을 교차 컴파일하는 방법

반응형
Comments