minio의 벤치마크를 공식 툴인 warp를 사용해 취해 본다.

개요



위의 기사에서 만든 구성의 벤치 마크를 공식 벤치 마크 도구? 의
warp를 사용해 취득해 본다.

왜 이 기사를 썼는지



warp가 은근하게 사용할 수 있어 편리했기 때문에, 슈와 정리하려고 생각했다.
별로 기사도 없는 것 같고.

warp는 어떤 도구?



공식 리포지토리에 썼다.
주의 사항이라든지 쓰고 있기 때문에 그쪽을 읽는 것이 좋다.

정리하면,
단순히 하나의 호스트에서 어떤 mino에 대한 부하를 벤치 마크 테스트를 실행하는 것뿐만 아니라,
여러 대의 호스트에서 한 minio에 대해 실행하거나,
단일 호스트 또는 여러 호스트에서 minio 그룹에 대해 벤치 마크 테스트를 실행할 수 있습니다.
벤치마크 테스트끼리의 결과를 비교해 주는 도구.
DDOS가 되어 버리지 않게 하자.

전제


  • 구성은 다음과 같습니다.

  • 인터넷 측은 100Mbps 베스트 에포트
  • HAProxy 부하는 1Gbps까지
  • 1대의 minio에 대해서와 복수의 mino로 분산했을 경우의 각각 실시한다.
  • 사용하는 VM은 모두 1 코어 1GB 메모리의 가장 작은 녀석
  • minio의 IP는 192.168.5.21 ~ 25까지.

  • 우선 소개



    warp 이미지의 Dockerfile 보고 있으면 entrypoint에 ./warp가 있으므로, docker container run시에 다양한 인수를 건네주면 좋다고 알 수 있다.

    인터넷을 넘어 벤치마크 테스트해 보기



    HAProxy를 통해서도 밸런싱하지 않고, 1대의 minio에 대해서 실시해 본다



    HAProxy의 설정으로 밸런스하지 않게 하는 것만으로, warp는 관계없다.
    sudo docker run --rm docker.io/minio/warp:latest \
      mixed --host=HAProxyのIP:9000 \
      --access-key=AKIAIOSFODNN7EXAMPLE \
      --secret-key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY \
      --objects 100 --obj.size 1MiB --autoterm
    
    # 例
    sudo docker run --rm docker.io/minio/warp:latest \
      mixed --host=proxy.tmktmk.tmk:9000 \
      --access-key=AKIAIOSFODNN7EXAMPLE \
      --secret-key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY \
      --objects 100 --obj.size 1MiB --autoterm
    

    HAProxy를 통해 roundrobin으로 밸런싱하여 5대의 minio에 대해 실시해 보기



    HAProxy 설정으로 밸런스 할 뿐이므로, warp는 관계 없기 때문에 전항의 커멘드와 함께 (ry

    minio에 직접 벤치마크 테스트 실시해 보기



    전제의 그림에는 없지만 SW에 연결되는 인스턴스를 하나 만들고,
    다음 두 가지 패턴으로 실행했습니다.

    하나의 minio에 대해 실행하여 실행 결과를 연결된 디렉토리에 저장



    192.168.5.21의 minio에 대해 실행하십시오!--benchdata에서 벤치마크 테스트 결과를 출력할 위치를 지정할 수 있습니다.
    컨테이너의 /test_dir/ 라는 곳에 from_inside_node1 라고 파일명으로 작성하는 느낌.
    확장자는 자동으로 붙는다.
    로컬 /home/ubuntu/result_tank/는 컨테이너에 /test_dir로 첨부됩니다.
    sudo docker run -it \
      -v /home/ubuntu/result_tank/:/test_dir \
      docker.io/minio/warp:latest mixed --host=192.168.5.21:9000 \
      --access-key=AKIAIOSFODNN7EXAMPLE \
      --secret-key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY \
      --objects 1250 --obj.size 10MiB --autoterm \
      --benchdata /test_dir/from_inside_node1
    

    5대의 minio에 대해 실행하여 실행 결과를 첨부한 디렉토리에 저장



    변경점은 --host=192.168.5.21:9000이었던 전항의 부분을
    --host=192.168.5.2{1...5}:9000
    

    로 바꿀 뿐. 이제 5.21 ~ 25의 minio에 대해 벤치마크 테스트를 실행하게 된다.
    아, 파일 이름은 from_inside_node1부터
    from_inside_node1to5
    

    로 바꿨습니다. 다음 섹션에서 각 결과를 비교하고 싶습니다.

    실행 결과 비교



    인수 cmp를 사용하여 비교합니다.
    시계열 순서가 아닌 지정된 순서로 비교됩니다. (공식의 이 근처에 쓰고 있다.)

    다음의 경우 from_inside_node1.csv.zst가 이전이고 from_inside_node1to5.csv.zst가 나중에 비교됩니다.
    sudo docker run -it \
      -v /home/ubuntu/result_tank/:/test_dir \
      docker.io/minio/warp:latest \
      cmp /test_dir/from_inside_node1.csv.zst /test_dir/from_inside_node1to5.csv.zst
    

    다음과 같은 느낌으로 결과가 표시됩니다.
    -------------------
    Operation: DELETE
    Operations: 385 -> 722
    Endpoints: 1 -> 5
    * Average: +87.90% (+1.1) obj/s
    -------------------
    Operation: GET
    Operations: 1753 -> 3228
    Endpoints: 1 -> 5
    * Average: +84.67% (+49.2 MiB/s) throughput, +84.67% (+4.9) obj/s
    * First Byte: Average: -86.766995ms (-27%), Median: -35.278689ms (-15%), Best: -4.446406ms (-45%), Worst: -355.010915ms (-25%)
    -------------------
    Operation: PUT
    Operations: 587 -> 1076
    Endpoints: 1 -> 5
    Duration: 4m59s -> 5m0s
    * Average: +84.06% (+16.3 MiB/s) throughput, +84.06% (+1.6) obj/s
    -------------------
    Operation: STAT
    Operations: 1164 -> 2145
    Endpoints: 1 -> 5
    * Average: +84.17% (+3.3) obj/s
    

    전체적으로 분산하는 편이 퍼포먼스가 오르고 있는 것을 알 수 있다. (그렇지?)

    끝에



    이번은 벤치마크 테스트의 수법을 mixed로 했지만, get만이라든지 put만도 할 수 있고,
    이하와 같은 warp를 실행하는 클라이언트를 늘려 협조하여 벤치마크 테스트를 실행할 수도 있다.

    (이미지는 공식 README에서 발췌)

    좋은 웹페이지 즐겨찾기