stress container 생성
컨테이너 빌드 : 부하 테스트 프로그램 stress를 설치하고 동작시키는 컨테이너 빌드
CPU 부하 테스트 : 2개 cpu core를 100% 사용하도록 부하 발생 : stress --cpu 2
or stress -c 2
메모리 부하 테스트 : 프로세스 수 2개와 사용할 메모리만틈 부하 발생 : `stress --vm 2 --vm-bytes <사용할 크기>
$ docker run -m 100m --memory-swap 100m stress:latest stress --vm-bytes 90m -t 5s
: stress 라는 컨테이너에 90m 만큼 메모리 사용하도록 명령 -> stress 컨테이너는 100m 만큼 사용할 수 있으므로 5초 후 success 되는 모습
$ docker run -m 100m --memory-swap 100m stress:latest stress --vm-bytes 150m -t 5s
: stress 라는 컨테이너에 150m 만큼 메모리 사용하도록 명령 -> stress 컨테이너는 100m 만큼 사용할 수 있으므로 바로 FAIL 되면서 죽음
$ docker run -m 100m stress:latest stress --vm-bytes 150m -t 5s
: stress 라는 컨테이너에 150m 만큼 메모리 사용하도록 명령 -> stress 컨테이너는 swap 메모리 설정이 안 됐을 경우 세팅값*2만큼 사용할 수 있으므로 200m 사용가능 -> 5초 후 success 되는 모습
$ docker run -d -m 100m --name m5 --oom-kill-disable=true nginx
: Out Of Memory Kill 방지를 세팅하고 nginx를 m5 이름의 컨테이너로 run 하겠다!...지만
Linux 5.15.0-58-generic x86_64
버전 linux kernal에서는 폐기되었나보다...
$ docker run --cpuset-cpus 0 --name c1 -d stress:latest stress --cpu 1
: stress를 c1 이름의 컨테이너로 돌리는데 0번 cpu core를 제한 없이 쓰도록함 + cpu 부하 발생 추가
$ docker run --cpuset-cpus 0-1 -name c1 -d stress:latest stress --cpu 1
: 0,1번 core를 번갈아 가면서 씀
$ htop
: Linux resource 관제 application
$ docker run -c 2048 --name cload1 -d stress:latest
$ docker run --name cload2 -d stress:latest
$ docker run -c 512 --name cload3 -d stress:latest
$ docker run -c 512 --name cload4 -d stress:latest
$ docker stats
: 각 컨테이너별로 CPU 사용률 check
$ docker run -it --rm --device-write-iops /dev/sda:10 ubuntu:latest /bin/bash
$ docker run -it --rm --device-write-iops /dev/sda:100 ubuntu:latest /bin/bash
2가지 명령어로 quota를 다르게 했을 때 초당 데이터 입력 연산량이 확연히 다름을 볼 수 있는 모습
추후 사용해보자...
<조건>