docker run --help 명령어를 통해 run 을 실행할때 resource 제한 옵션들을 확인 할 수 있다.
컨테이너가 메모리가 정해진 이상을 점유하게되면 스스로 kill 한다.
2번째 예제 = 소프트 제한 값은 최소한 500m은 보장을 해주고 -m 은 최대로 쓸 수 있는 메모리를 의미한다.
3번쨰 예제 = swap memory 300 은 최대 사이즈 200 이 포함되어있는것이다. 따라서 실제로 swap 가능하는 메모리는 100 이다.
4번째 예제 = linux kernel 은 메모리가 부족해지면 OOM Killer 가 process 를 다 kill 하기 시작한다. 해당 옵션을 적용하면 메모리가 부족해도 이 process는 kill 하지 않는다.
cpu share 는 그냥 상대값이다. 1024를 1로 보고 계산하면 상대적으로 resource를 분배하게 되는것이다. 비례값
다 read write 속도 관련된것이고 상대적이냐 절대적이냐의 차이가 있음
resource를 제한한 container의 resource들을 모니터링 할 수 있다.
실습
부하 테스트 프로그램 으로 stress를 이용한다.
stress --cpu 2 , stress --vm 2 --vm-bytes <사용할 크기> 처럼 사용하게 된다.
stress 를 실행 시켜주는 docker image를 빌드했다.
OOM killer가 허가된 메모리 이상을 쓰니 kill 해버렸다.
위에서 나온 oom killer disable을 설정하면 /sys/fs/cgroup/memory/docker/{container id}/memory.oom_control 에서 oom_kill_disable 1 인것을 확인 할 수 있다.
첫번째 경우에는 cpuset-cpus 1임으로 2번 쨰 core만 사용하고
두번째 경우는 cpuset-cpus 0 임으로 1번째 core만 사용하게 된다. htop으로 확인가능하다.
cpuset-cpus 0-1 인 경우 2개중 하나를 번걸아가면서 사용하게 된다.
default 는 1024 임으로 현재 지금 4:2:1:1 의 비율로 cpu를 사용하게 된다.
docker stats 로 현재 docker ps로 나오는 컨테이너들이 어찌 돌고 있는지 확인 할 수 있다.
cload1 cpu2개중 1개를 다 쓰고 잇다.
cload2 는 남은 1개의 반을 cload3,4 는 남은 것의 반을(1/4) 사용하고 있는 것을 확인 할 수 있다.
컨테이너에 iops 를 10, 100 각각 준것이다.
/bin/bash로 접속하여서 dd 명령어로 1MB 짜리 파일을 10개 생성하는것이다.
quota는 10배 차이나지만 속도는 10.3 에서 254로 25배 정도가 차이난다. 정확히 비례하지 않는다.
https://github.com/google/cadvisor
이것을 사용하면 web 으로도 확인이가능하다.
'Cloud > Docker' 카테고리의 다른 글
[따배도] 9. 컨테이너간 통신(네트워크) (0) | 2022.01.21 |
---|---|
[따배도] 8. Docker Container Storage (0) | 2022.01.20 |
[따배도] 5.컨테이너 보관창고 , 6. 컨테이너 사용하기 (0) | 2022.01.10 |
[따배도] 3. 도커 컨테이너 살펴보기 ,4.도커 컨테이너 만들어보기 (0) | 2021.12.22 |
[따베도] 1. 컨테이너와 도커의 이해 , 2. 도커 설치 (0) | 2021.12.17 |