AWS Fargate의 이미지 크기별 시작 시간 차이

4343 단어 FargateECS

개요



AWS Fargate의 시작이 느리고 어려운 경우가 많아서 이미지 크기를 줄이면 빨라질 것인가를 조사해 보았다.

결과



「기동 시간」에는 이하의 구성 요소가 포함되어 있다고 추측한다.
  • ENI Allocate (10 초 정도)
  • 컨테이너 이미지 풀 (걸리는 시간의 대부분)
  • 컨테이너 시작 (Firecracker 시작?)
  • IAM 관련 처리

  • AWS 네트워크는 대부분 리소스 크기에 따라 성능이 설정되는 것이 대부분이므로 Fargate도 마찬가지라고 생각된다.
    따라서 리소스가 클 경우 이미지의 풀에 걸리는 시간이 줄어들 수 있습니다.
    Fargate의 네트워크 성능에 대해서는 측정된 기사이 있었다.

    이번에, 각 10회 정도 반복해 계측을 행했지만, 기동 시간의 변화는 거의 없었기 때문에, 이미지는 캐쉬되어 있지 않다고 생각된다.

    이미지 크기로 시작 시간 비교



    다음 그림은 vCPU 0.25, 512MB RAM일 때 각 이미지 크기의 부팅 시간을 플로팅한 것입니다.



    vCPU로 부팅 시간 비교



    다음 그림은 이미지 크기가 1024MB일 때 부팅 시간이 vCPU에 따라 달라지는지를 보여줍니다.



    측정 환경



    Base Image



    busybox:latest 을 기반으로 했다.
    FROM busybox
    ARG PAD=0
    RUN dd if=/dev/urandom of=/padding bs=1M count=$PAD
    
    $ for i in 0 16 32 64 128 256 512 1024 \
    do \
     docker build -t ${AWS_ACCOUNT_ID}.dkr.ecr.ap-northeast-1.amazonaws.com/fargate-test:s$i . --build-arg PAD=$i \
    done
    $ for i in 0 16 32 64 128 256 512 1024 \
    do \
      docker push ${AWS_ACCOUNT_ID}.dkr.ecr.ap-northeast-1.amazonaws.com/fargate-test:s$i \
    done
    

    이미지 크기


  • 1.2 MB (Original Size)
  • 16 MB
  • 32 MB
  • 64 MB
  • 128 MB
  • 512 MB
  • 1024 MB

  • 시도 횟수



    각 사이즈 10회

    자원


  • 0.25 vCPU, 512 MB
  • 0.5 vCPU, 1024 MB
  • 1 vCPU, 2048 MB
  • 2 vCPU, 4096 MB

  • Fargate Platform Version



    1.3

    측정 방법



    Fargate에서 RunTask를 실행하고 DescribeTasks API 결과의 createdAtstoppedAt의 차이를 집계했습니다.

    RunTask


    TASK_ARN=$(aws ecs run-task --cluster fargate-test --task-definition fargate-test:2 --network-configuration 'awsvpcConfiguration={subnets=subnet-593ef401,assignPublicIp=ENABLED}' --launch-type FARGATE --query  'tasks[0].taskArn' --output text)
    aws ecs wait tasks-stopped --cluster fargate-test --tasks $TASK_ARN
    

    DescribeTasks


    aws ecs describe-tasks --tasks $TASK_ARN --cluster fargate-test
    

    좋은 웹페이지 즐겨찾기