컨테이너를 제한하는 Block IO - Docker 컨테이너 기술(29)을 하루 5분 동안 플레이하기

앞에서 용기가 메모리와 CPU에 대한 사용을 제한하는 방법을 배웠는데 이 부분에서 Block IO를 보겠습니다.
Block IO는 컨테이너 사용을 제한할 수 있는 또 다른 리소스입니다.Block IO는 디스크의 읽기와 쓰기를 가리킨다. docker는 권한을 설정하고 bps와 iops를 제한하는 방식으로 용기 읽기와 쓰기 디스크의 대역폭을 제어할 수 있다. 다음은 각각의 논의이다.
참고: 현재 Block IO 한도는 direct IO(파일 캐시를 사용하지 않음)에만 적용됩니다.
block IO 가중치
기본적으로 모든 용기는 디스크를 평등하게 읽을 수 있으며, 설정 --blkio-weight 파라미터를 통해 용기 Block IO의 우선 순위를 변경할 수 있습니다.--blkio-weight--cpu-shares와 유사하며 상대적 권중치를 설정하고 기본값은 500이다.다음 예에서containerA 디스크의 대역폭은containerB의 두 배.
docker run -it --name container_A --blkio-weight 600 ubuntu   
docker run -it --name container_B --blkio-weight 300 ubuntu
bps와 iops 제한
bps는 byte per second로 초당 읽기와 쓰기의 데이터량입니다.iops는 IO 초당 IO 횟수인 IO per second입니다.
다음 파라미터를 통해 용기의 bps와 iops를 제어할 수 있습니다: --device-read-bps 어떤 장치의 bps를 읽는 것을 제한합니다.--device-write-bps, 어떤 장치의 bps를 쓰는 것을 제한합니다.--device-read-iops 장치에 대한 iops 읽기를 제한합니다.--device-write-iops 장치에 대한 iops 쓰기를 제한합니다.
다음 예는 용기 쓰기/dev/sda의 속도를 30MB/s로 제한합니다
docker run -it --device-write-bps/dev/sda:30MB ubuntu
실험 결과를 살펴보자.
용기에 디스크를 쓰는 속도를 dd로 테스트합니다.용기의 파일 시스템은host/dev/sda에 있기 때문에 용기에서 파일을 쓰는 것은host/dev/sda에 대한 쓰기 작업과 같다.또한 oflag=directdirect IO 방식으로 파일을 쓰도록 지정하여 --device-write-bps만 적용할 수 있습니다.
그 결과 bps 25.6MB/s는 30MB/s의 제한 속도를 초과하지 않았다.
비교 테스트에서 속도를 제한하지 않으면 결과는 다음과 같다.
다른 매개 변수의 사용 방법은 유사하여 모두에게 남겨 두어 스스로 연습하게 한다.
다음 절에서 우리는 용기를 실현하는 밑바닥 기술을 토론한다.

좋은 웹페이지 즐겨찾기