Computer >> 컴퓨터 >  >> 시스템 >> Linux

리눅스(Linux) 서버 벤치마킹으로 나에게 맞는 최고의 서버 선택하는 방법

리눅스(Linux) 서버 벤치마킹으로 나에게 맞는 최고의 서버 선택하는 방법

VPS(가상 사설 서버)나 전용 서버가 필요하다면 선택할 수 있는 옵션은 무척 다양합니다. 그런데 시장이 포화 상태에 이르고 끊임없이 변화하기 때문에 모든 사람에게 딱 맞는 '최고의 서버'란 존재하지 않습니다. 적어도 모든 분야에서 두각을 나타내는 서버는 없다는 뜻입니다.

어떤 클라우드 제공업체는 저장 속도가 가장 빠른 VPS를 제공하지만 CPU 성능은 다소 아쉬울 수 있고, 또 다른 업체는 시장에서 가장 뛰어난 CPU 성능을 자랑하지만 저장 장치는 느릴 수 있습니다. 게다가 경쟁사의 고객을 빼앗기 위해 치열하게 경쟁하다 보면, 지금은 저장 장치가 느린 업체도 몇 달 뒤에는 장비를 업그레이드해 시장 최강자로 올라설 수 있습니다. 바로 이럴 때 벤치마크를 활용하면 여러 업체를 객관적으로 비교하고, 현재 시점에서 내 워크로드에 가장 적합한 서버를 선택할 수 있습니다.

벤치마킹에 대한 기본 개념

원래라면 벤치마크는 특정 사용 사례와 하드웨어에 맞춰 조정한 뒤, 장비에서 최대한의 성능을 짜낼 수 있는지 확인하는 방식으로 진행합니다. 하지만 이 글에서는 모든 잠재 성능을 100% 끌어내지 못할 수 있는 일반적인 테스트를 실행합니다. 대신 동일한 운영체제에서 동일한 파라미터로 테스트를 수행하기 때문에, 같은 조건에서 어떤 제공업체가 더 좋거나 나쁜 성능을 보이는지 쉽게 비교할 수 있는 실질적인 수치를 얻게 됩니다.

시작 전 준비 사항

  • 운영체제는 우분투(Ubuntu) 최신 안정 버전 이미지를 사용하세요. 이 글을 작성하는 시점 기준으로는 18.04 LTS입니다. 나중에 다른 운영체제를 사용할 계획이라 해도 문제되지 않으며, 공통된 출발점을 만들어 주는 역할을 합니다.
  • 튜토리얼의 일부 명령어는 필요에 따라 조정할 수 있습니다. 단, 정확한 비교를 위해서는 모든 서버에 완전히 동일한 파라미터를 사용해야 한다는 점을 꼭 기억하세요.
  • 각 서버에서 동일한 벤치마크를 두 번 실행하는 것이 좋습니다. 일부 클라우드 제공업체는 결과가 들쑥날쑥한 경우가 있는데, 이는 게스트 운영체제 격리가 잘 되어 있지 않거나 하나의 하드웨어에 너무 많은 클라이언트를 몰아 넣었다는 신호입니다. 이런 업체는 아예 피하는 것이 현명합니다.
  • 이 튜토리얼은 root 계정으로 로그인했다고 가정합니다. 일반 사용자로 로그인한 경우 apt 명령어 앞에 sudo를 붙여야 하므로, apt update && apt install fiosudo apt update && sudo apt install fio처럼 입력해야 합니다.

서버 저장소 벤치마크

먼저 벤치마킹 도구를 설치합니다.

apt update && apt install fio

fio를 찾을 수 없다는 메시지가 나오면 universe 저장소가 활성화되어 있지 않은 것입니다. apt install software-properties-common && add-apt-repository universe 명령으로 저장소를 활성화한 뒤, 위 명령을 다시 실행해 fio를 설치하세요.

순차 읽기(Sequential Read)는 데이터를 연속적으로 읽을 때 발생합니다. 예컨대 4GB 파일을 처음부터 끝까지 읽는 경우가 여기에 해당하며, 현재 사용 중인 파일시스템과 함께 저장 장치의 최대 읽기 속도를 보여주는 경우가 많습니다. 순차 읽기 테스트는 아래 명령으로 실행합니다.

fio --name=seqread --readwrite=read --direct=1 --ioengine=libaio --bs=1M --size=2000M

테스트가 20초 안에 끝난다면(SSD 환경에서 흔히 그렇습니다), 더 정확한 결과를 얻기 위해 아래 코드처럼 읽을 파일 크기를 늘려 주세요.

fio --name=seqread --readwrite=read --direct=1 --ioengine=libaio --bs=1M --size=8000M

결과에서 가장 주목해야 할 수치는 아래 이미지에 강조된 READ: bw(읽기 대역폭)입니다.

리눅스(Linux) 서버 벤치마킹으로 나에게 맞는 최고의 서버 선택하는 방법

순차 쓰기(Sequential Write) 속도를 테스트하려면 다음 명령을 실행하세요.

fio --name=seqwrite --readwrite=write --direct=1 --ioengine=libaio --bs=1M --size=2000M

동일한 항목의 수치를 확인하면 됩니다.

가장 부하가 심한 조건에서 클라우드 스토리지가 어떻게 작동하는지 테스트하려면 아래 명령을 실행합니다.

fio --name=randrw --readwrite=randrw --direct=1 --ioengine=libaio --bs=4k --size=200M --group_reporting --numjobs=8

앞서와 마찬가지로 테스트가 너무 빨리 끝나면 --size 값을 늘려 주세요. 이 테스트에서는 대역폭보다 IOPS가 더 중요하므로, 대역폭은 부수적인 지표로만 생각하면 됩니다.

먼저 read: IOPSwrite: IOPS 수치를 살펴보세요.

리눅스(Linux) 서버 벤치마킹으로 나에게 맞는 최고의 서버 선택하는 방법

실제 사례로 비유하면, 대형 데이터베이스가 끊임없이 읽기·쓰기 작업을 반복하는 트래픽이 매우 많은 웹사이트에서 서버 스토리지가 받는 부하와 비슷한 상황입니다.

서버 CPU 및 메모리 벤치마크

Geekbench 다운로드 페이지에 접속해 최신 Geekbench 압축 파일의 링크를 복사한 뒤 wget 명령에 붙여넣습니다. 예를 들어 이 글을 작성하는 시점의 링크는 "https://cdn.geekbench.com/Geekbench-4.3.3-Linux.tar.gz"입니다. 아래 명령은 Geekbench를 서버로 내려받습니다.

wget https://cdn.geekbench.com/Geekbench-4.3.3-Linux.tar.gz

압축 파일의 내용을 풀어줍니다.

tar -xzvf *.tar.gz

리눅스(Linux) 서버 벤치마킹으로 나에게 맞는 최고의 서버 선택하는 방법

압축이 풀린 디렉터리로 이동합니다. 디렉터리 이름은 앞선 명령의 출력 결과(위 이미지 참조)에서 확인할 수 있는 프로그램 버전과 일치합니다.

cd Geekbench-4.3.3-Linux

이 글을 작성하는 시점의 실행 파일 이름은 geekbench4지만, 향후 변경될 수 있습니다. 현재 디렉터리의 파일 목록을 확인해 보세요.

ls

리눅스(Linux) 서버 벤치마킹으로 나에게 맞는 최고의 서버 선택하는 방법

필요하다면 실행 파일 이름을 바꾸고 벤치마크를 실행합니다.

./geekbench4

모든 테스트가 완료되기까지 시간이 걸립니다. 완료되면 결과를 확인할 수 있는 링크가 제공됩니다.

리눅스(Linux) 서버 벤치마킹으로 나에게 맞는 최고의 서버 선택하는 방법

서버 네트워크 대역폭 벤치마크

Speedtest 클라이언트를 설치합니다.

apt install speedtest-cli

벤치마크를 실행합니다.

speedtest

리눅스(Linux) 서버 벤치마킹으로 나에게 맞는 최고의 서버 선택하는 방법

일반적으로 유틸리티는 서버와 가장 가까운 곳에 위치한 테스트 서버를 자동으로 찾습니다. 위치 감지에 실패하면 아래 명령처럼 국가별 서버 목록을 직접 조회할 수 있습니다.

speedtest --list | grep -i germany

목록에서 원하는 번호를 골라 다음 명령처럼 지정해 실행하면 됩니다.

speedtest --server 4462

Speedtest가 사용하는 일부 서버는 당시 가용 대역폭이 부족할 수 있다는 점에 유의하세요. 벤치마크 결과가 지나치게 낮게 나온다면 다른 업로드/다운로드 서버로 바꿔 다시 시도해 보세요.

마무리

지금까지 CPU, 메모리, 저장소, 네트워크의 기본적인 벤치마킹 과정을 살펴봤습니다. 각 테스트가 끝날 때마다 수치를 확보하게 되는데, 이를 서로 비교하면 내 워크로드에 가장 유리한 성능을 보여주는 서버를 선택할 수 있습니다.