Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- SWEA
- 코딩테스트
- 알고리듬
- BFS
- django
- aws
- Priority Queue
- programmers
- SQL
- boj
- Back tracking
- 코테
- spring boot
- Trie
- JavaScript
- DFS
- hash table
- 시뮬레이션
- 모의SW역량테스트
- Algorithm
- Vue.js
- 구현
- GitHub
- CSV
- 알고리즘
- Data Structure
- Linked list
- Python
- Bruth Force
- gpdb
Archives
- Today
- Total
hotamul의 개발 이야기
cgroup으로 pids.max 제한하기 본문
cgroup으로 CPU 제한하기에서 cgroup
을 이용해 CPU 사용량을 제한시켜 보았다.
이번에는 cgroup
을 이용해 Process 생성 개수를 제한하여 fork bomb에 대비할 수 있게 해보자.
Test를 진행하기 위한 cgroup
생성
$ sudo su
$ cd /sys/fs/cgroup/pids
$ mkdir ./mycgroup && cd ./mycgroup
$ ls
cgroup.clone_children cgroup.procs notify_on_release pids.current pids.events pids.max tasks
Process 생성 개수 제한
$ echo $$ > ./tasks
$ cat pids.max
max
$ echo 20 > pids.max
$ cat pids.max
20
Warning
echo $$ > tasks
를 하지 않으면 시스템을 reboot해야 할 수 있다. 반드시 현재 Process가 생성한 cgroup에 속하도록 해야 한다.
fork bomb
$ :(){ :|:& };:
bash: fork: retry: Resource temporarily unavailable
bash: fork: retry: Resource temporarily unavailable
bash: fork: retry: Resource temporarily unavailable
bash: fork: retry: Resource temporarily unavailable
bash: fork: retry: Resource temporarily unavailable
bash: fork: retry: Resource temporarily unavailable
bash: fork: retry: Resource temporarily unavailable
bash: fork: retry: Resource temporarily unavailable
bash: fork: retry: Resource temporarily unavailable
...
위 에러 메시지에서도 볼 수 있듯이 무한으로 process가 생성되는 것을 막은 것을 볼 수 있다.
(새로운 terminal로 접속...)
$ ps aux
...
root 64801 0.0 0.2 9080 2300 pts/19 S 11:47 0:00 bash
root 64802 0.0 0.2 9080 2300 pts/19 S 11:47 0:00 bash
root 64803 0.0 0.2 9080 2300 pts/19 S 11:47 0:00 bash
root 64821 0.0 0.2 9080 2084 pts/19 S 11:47 0:00 bash
root 64822 0.0 0.2 9080 2304 pts/19 S 11:47 0:00 bash
root 64825 0.0 0.2 9080 2304 pts/19 S 11:47 0:00 bash
root 64826 0.0 0.2 9080 2304 pts/19 S 11:47 0:00 bash
root 64827 0.0 0.2 9080 2304 pts/19 S 11:47 0:00 bash
root 64828 0.0 0.2 9080 2304 pts/19 S 11:47 0:00 bash
root 64829 0.0 0.2 9080 2304 pts/19 S 11:47 0:00 bash
root 64830 0.0 0.2 9080 2304 pts/19 S 11:47 0:00 bash
root 64831 0.0 0.2 9080 2304 pts/19 S 11:47 0:00 bash
root 64832 0.0 0.2 9080 2304 pts/19 S 11:47 0:00 bash
root 64833 0.0 0.2 9080 2304 pts/19 S 11:47 0:00 bash
root 64861 0.0 0.2 9080 2304 pts/19 S 11:47 0:00 bash
root 64862 0.0 0.2 9080 2304 pts/19 S 11:47 0:00 bash
root 64863 0.0 0.2 9080 2304 pts/19 S 11:47 0:00 bash
...
많은 process가 생성됨을 확인.
생성한 cgroup
제거
$ sudo cgdelete -g pids:mycgroup
'etc.' 카테고리의 다른 글
Big data/event-driven Architecture (0) | 2023.03.17 |
---|---|
tmpfs란 무엇일까? (0) | 2023.03.14 |
cgroup으로 CPU 제한하기 (1) | 2023.03.14 |
python으로 sar 명령 실행하기 (0) | 2023.03.12 |
sysstat, sar을 이용한 resource 모니터링 (0) | 2023.03.12 |
Comments