리눅스 커널과 eBPF
시스템 콜, 스케줄러, 페이지 캐시, 네임스페이스와 cgroup 을 VM 에서 직접 관찰한 뒤 그 위에 eBPF 를 얹습니다. bpftrace 한 줄로 운영 질문에 답하고, bpftool 로 검증기 기록을 읽어 고치고, libbpf 와 CO-RE 로 작은 도구를 만들고, XDP 와 tc 로 패킷을 세고 떨어뜨리며 Cilium 이 쓰는 자리와 잇습니다. 읽기마다 커널 문서와 메일링 리스트에 나오는 영어 표현을 짧게 익힙니다.
고급 · 레슨 29 · 실습 9
커리큘럼
사용자 공간과 커널의 경계
- 프로그램은 커널에 부탁해서 산다 reading
- 프로그램이 커널에 무엇을 부탁하는지 센다 lab
- 퀴즈: 사용자 공간과 커널의 경계 quiz
CPU 를 나눠 쓰는 규칙
- 사용률 그래프에 안 나오는 시간 reading
- CPU 를 나눠 쓰는 규칙을 손으로 바꿔 본다 lab
- 퀴즈: CPU 를 나눠 쓰는 규칙 quiz
페이지 캐시와 OOM
- MemFree 가 작은 것은 경보가 아니다 reading
- 캐시는 왜 OOM 을 내지 않는가 lab
- 퀴즈: 페이지 캐시와 OOM quiz
네임스페이스와 cgroup 으로 만든 상자
- 컨테이너라는 커널 객체는 없다 reading
- 도커 없이 컨테이너를 만든다 lab
- 퀴즈: 네임스페이스와 cgroup quiz
커널에 원래 있던 계측기
- 약속된 자리와 아무 자리 reading
- 커널 안에 이미 있는 계측기를 켠다 lab
- 퀴즈: 커널에 원래 있던 계측기 quiz
bpftrace 한 줄
- 사건이 난 자리에서 센다 reading
- 한 줄짜리 eBPF 로 운영 질문에 답한다 lab
- 퀴즈: bpftrace 한 줄 quiz
올리기·붙이기·검증기
- 검증기는 모든 갈림길을 걸어 본다 reading
- 검증기가 거부한 이유를 한 줄씩 읽는다 lab
- 퀴즈: 올리기·붙이기·검증기 quiz
libbpf 와 CO-RE
- 필드의 위치가 아니라 이름을 기록한다 reading
- 한 번 컴파일해 어느 커널에서나 돈다 lab
- 퀴즈: libbpf 와 CO-RE quiz
XDP 와 tc
- 패킷이 소켓 버퍼가 되기 전에 reading
- 드라이버 앞에서 패킷을 세고 떨어뜨린다 lab
- 퀴즈: XDP 와 tc quiz
막는 BPF, seccomp 와 BPF LSM
- 보는 BPF 와 막는 BPF reading
- 퀴즈: seccomp 와 BPF LSM quiz