Linux 커널에서 시스템 호출(syscall)의 성능 병목 현상을 진단하고 최적화하기 위한 고급 도구와 기법(예: eBPF, perf, ftrace)에 대해 설명하고, 실제 시나리오에서 어떻게 활용할지 예를 들어주세요.
힌트 · eBPF는 커널에서 안전하게 사용자 정의 프로그램을 실행하여 상세한 트레이싱을 가능하게 하며, perf는 CPU 성능 카운터를 활용하고, ftrace는 커널 함수 호출을 추적합니다.
모범답안
시스템 호출 성능 병목 현상을 진단하고 최적화하는 데는 eBPF, perf, ftrace 같은 고급 도구를 활용합니다.
eBPF는 커널에 안전하게 사용자 정의 코드를 삽입하여 시스템 호출의 실행 시간, 인자 값 등을 실시간으로 추적할 수 있게 해줍니다. 예를 들어, 특정 시스템 호출의 빈도가 높거나 실행 시간이 길다면 eBPF 프로그램을 통해 해당 호출을 발생시키는 프로세스를 식별하고, 원인을 분석할 수 있습니다.
perf는 CPU 성능 카운터를 활용하여 시스템 전체의 성능 프로파일링을 수행합니다. 이를 통해 시스템 호출과 관련된 CPU 사용률, 캐시 미스 등을 파악하여 병목 지점을 찾을 수 있습니다.
ftrace는 커널 함수 호출을 추적하는 데 사용됩니다. 시스템 호출의 내부 동작을 자세히 분석하여 어떤 함수가 가장 많은 시간을 소모하는지, 어떤 경로로 실행되는지 등을 파악할 수 있습니다.
실제 시나리오에서는 웹 서버의 응답 시간이 느려지는 경우, eBPF를 사용하여 read 또는 write 시스템 호출의 오버헤드를 분석하고, perf를 통해 CPU 사용률을 확인하며, ftrace를 통해 네트워크 스택의 함수 호출 흐름을 추적하여 병목 지점을 찾아 해결할 수 있습니다. 컨텍스트 스위칭이 잦다면, 스케줄러 관련 정보를 eBPF로 추적하여 개선할 부분을 찾을 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Linux 면접 질문
- Linux 커널의 cgroups와 namespaces가 컨테이너 기술(예: Docker, Kubernetes)의 핵심 구성 요소인 이유를 설명하고, 이 두 기술이 어떻게 상호작용하여 프로세스 격리 및 리소스 제한을 구현하는지 구체적으로 설명해주세요.
- 대규모 I/O 부하가 발생하는 환경에서 ext4와 XFS 파일 시스템 중 어떤 것을 선택할 것이며, 그 이유와 각 파일 시스템의 내부 구조 및 성능 특성 차이를 설명해주세요. 특히 저널링 방식의 차이점을 포함하여 설명하십시오.
- 고성능 웹 서버 환경에서 TCP/IP 스택을 튜닝하여 네트워크 지연 시간을 줄이고 처리량을 극대화하기 위한 커널 파라미터(sysctl) 설정과 그 효과에 대해 구체적으로 설명해주세요. 주요 파라미터 3가지 이상을 예시로 들어 설명하십시오.
- 시스템 메모리가 부족해지는 상황에서 Linux 커널의 OOM Killer가 동작하는 방식과 OOM Score의 의미, 그리고 스와핑(swapping) 메커니즘이 시스템 성능에 미치는 영향 및 최적화 방안에 대해 설명해주세요.
- SELinux와 AppArmor 같은 강제적 접근 제어(MAC) 시스템이 기존 DAC(Discretionary Access Control) 방식과 어떻게 다르며, 실제 운영 환경에서 이들을 효과적으로 적용하고 관리하기 위한 전략과 트러블슈팅 기법에 대해 설명해주세요.
- systemd의 복잡한 서비스 의존성 관리 및 부팅 프로세스 최적화를 위해 .target 파일과 .service 파일의 관계를 설명하고, 사용자 정의 서비스 유닛을 작성할 때 고려해야 할 고급 옵션과 시나리오를 제시해주세요.