1. dockerfile
stress
를 주는 이미지 만들기
FROM debian
MAINTAINER jbro321 <jaehyung0321@gmail.com>
RUN apt-get update
RUN apt-get install stress -y
CMD ["/bin/sh", "-c", "stress -c 2"]
2. 메모리 리소스 제한
2.1 Example 1
docker run -m 100m --memory-swap 100m stress:latest stress --vm 1 --vm-bytes 90m -t 5s
- 최대 쓸 수 있는 메모리 : 100m
- 스왑 메모리(memory-swap)에는 쓸 수 있는 메모리도 포함되어 있어서 최대 쓸 수 있는 메모리가 100m이므로 스왑 메모리를 100m로 주면 스왑 메모리를 쓸 수 없다.
- 5초 동안 90m의 메모리 부하를 일으킨다.
2.2 Example 2
docker run -m 100m --memory-swap 100m stress:latest stress --vm 1 --vm-bytes 150m -t 5s
- 최대 쓸 수 있는 메모리 : 100m
- 메모리 byte가 100m까지 가능한데, 150m를 주면, kill되어버린다.
WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
GRUB_CMDLINE_LINUX_DEFAULT="maybe-ubiquity"
GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1"
2.3 Example 3
docker run -m 100m stress:latest stress --vm 1 --vm-bytes 150m -t 5s
- 스왑 메모리를 생략하면 최대 쓸 수 있는 메모리의 2배가 할당된다. (100m가 할당 되어, 200m가 스왑 메모리로 설정됨)
2.4 Example 4
docker run -d -m 100M --name m4 --oom-kill-disable=true nginx
docker inspect m4
를 통해 OomkillDisable : true
를 확인
cat /sys/fs/cgroup/memory/docker/{container ID}/memory.oom_control
로 확인
3. References
- joinc blog
- eyeballs blog