컨테이너를 cgroup으로 구분하기 (Day 3) — map pinning, fd 공유의 한계, cgroup id의 정체

·
eBPF
Day 2에서는 tracepoint 하나로 시스템 전체의 exec 이벤트를 잡아내고, PID 네임스페이스 덕분에 "이게 어느 컨테이너의 몇 번 프로세스인지"까지 구분할 수 있게 됐다. 그런데 그 코드는 사실 반쪽짜리였다 — 필터링이 전혀 없어서, 호스트에서 실행한 명령이든 컨테이너 안에서 실행한 명령이든 전부 다 잡아서 링버퍼로 흘려보내고 있었다. 오늘(Day 3)의 목표는 "내가 지정한 컨테이너들만 골라서 관측한다"는, 진짜 옵저버빌리티 도구라면 당연히 있어야 할 필터링 기능을 완성하는 것이었다. 그리고 두 개의 컨테이너를 동시에 띄워서 서로 뒤섞이지 않고 정확히 구분되는지까지 실측으로 확인하는 것.결과적으로 코드 자체는 얼마 안 됐지만, 그 코드를 왜 그렇게 짜야 하는지 이해하는 데 커널의 fd 구조..