본문으로 바로가기
태극기이 누리집은 대한민국 공식 전자정부 누리집입니다.
평면표지(2D 앞표지)
입체표지(3D 표지)
2D 뒤표지

시스템 성능 엔지니어링

시스템 성능 분석과 문제 해결을 위해 알아야 할 거의 모든 것


  • ISBN-13
    978-89-6626-496-4 (93000)
  • 출판사 / 임프린트
    인사이트 / 인사이트
  • 정가
    62,000 원 확정정가
  • 발행일
    2025-11-04
  • 출간상태
    출간
  • 저자
    브렌던 그레그
  • 번역
    이호연
  • 메인주제어
    컴퓨터네트워킹 및 커뮤니케이션
  • 추가주제어
    시스템관리
  • 키워드
    #컴퓨터네트워킹 및 커뮤니케이션 #시스템관리 #LINUX
  • 도서유형
    종이책, 무선제본
  • 대상연령
    모든 연령, 성인 일반 단행본
  • 도서상세정보
    188 * 240 mm, 1172 Page

책소개

《시스템 성능 엔지니어링》은 운영 체제와 애플리케이션의 성능을 이해하고 최적화하기 위한 개념, 전략, 도구 및 튜닝 기법을 종합적으로 다룹니다. 개발자에게 이러한 도구와 기법에 대한 깊은 이해는 필수적이며, 이 책에서 제시하는 전략은 사용자 경험 향상과 비용 절감으로 직결됩니다. 특히 인스턴스 단위로 과금되는 클라우드 환경에서는 이러한 개선 효과가 더 크게 나타납니다. 저자는 운영 체제, 하드웨어, 애플리케이션 이론을 간결하게 정리하여 성능 분석 경험이 없는 독자라도 빠르게 핵심을 이해할 수 있도록 안내합니다. 확장 BPF(eBPF)를 포함한 최신 분석 도구와 기법을 심도 있게 설명하며, 클라우드·웹·엔터프라이즈 시스템에서 최상의 성능을 이끌어내는 실질적인 방법을 제시합니다.

 

[이 책에서 다루는 내용]

● 하드웨어, 커널, 애플리케이션 내부 구조와 성능 특성

● 복잡한 시스템을 신속하게 진단하기 위한 성능 분석 방법론

● CPU, 메모리, 파일 시스템, 디스크, 네트워크 자원 사용 최적화 

● perf, Ftrace, BPF(BCC 및 bpftrace)를 활용한 정밀 프로파일링과 트레이싱

● 클라우드 하이퍼바이저 환경에서 직면하는 성능 문제

● 더 효과적인 벤치마킹 기법

목차

1장 소개  

1.1 시스템 성능

1.2 역할

1.3 활동 

1.4 관점

1.5 성능 분석의 어려움

__1.5.1 주관성  

__1.5.2 복잡성  

__1.5.3 복합 원인  

__1.5.4 여러 성능 문제

1.6 지연시간

1.7 관측가능성

__1.7.1 카운터, 통계, 지표

__1.7.2 프로파일링

__1.7.3 트레이싱

1.8 실험

1.9 클라우드 컴퓨팅

1.10 방법론

__1.10.1 60초 리눅스 성능 분석

1.11 사례 연구

__1.11.1 느린 디스크 

__1.11.2 소프트웨어 변경  

__1.11.3 추가 자료  

1.12 참고 자료 

 

2장 방법론  

2.1 용어

2.2 모델

__2.2.1 테스트 중인 시스템 

__2.2.2 큐 시스템 

2.3 개념 

__2.3.1 지연시간  

__2.3.2 시간 스케일  

__2.3.3 트레이드오프

__2.3.4 튜닝을 위한 노력  

__2.3.5 적합성의 수준 

__2.3.6 분석을 언제 중단할 것인가  

__2.3.7 성능 개선의 한시성

__2.3.8 부하 vs. 아키텍처  

__2.3.9 규모 확장성  

__2.3.10 지표

__2.3.11 사용률  

__2.3.12 포화도  

__2.3.13 프로파일링  

__2.3.14 캐싱 

__2.3.15 모른다는 것을 아는 것들

2.4 관점

__2.4.1 자원 분석  

__2.4.2 워크로드 분석

2.5 방법론

__2.5.1 가로등 반방법론 

__2.5.2 임의 변경 반방법론 

__2.5.3 다른 사람 비난 반방법론  

__2.5.4 전용 체크리스트 방법론 

__2.5.5 문제 내역서  

__2.5.6 과학적 방법론  

__2.5.7 진단 사이클

__2.5.8 도구 방법론

__2.5.9 USE 방법론  

__2.5.10 RED 방법론

__2.5.11 워크로드 특성화  

__2.5.12 드릴다운 분석

__2.5.13 지연시간 분석  

__2.5.14 R 방법론  

__2.5.15 이벤트 트레이싱 

__2.5.16 기준 통계  

__2.5.17 정적 성능 튜닝  

__2.5.18 캐시 튜닝

__2.5.19 마이크로 벤치마킹  

__2.5.20 성능 최적화를 위한 지침

2.6 모델링

__2.6.1 엔터프라이즈 환경 vs. 클라우드 환경  

__2.6.2 시각적 성능 식별

__2.6.3 암달의 확장성 법칙  

__2.6.4 일반 확장성 법칙  

__2.6.5 큐 이론 

2.7 수용량 계획

__2.7.1 리소스 한계  

__2.7.2 요인 분석  

__2.7.3 스케일링 솔루션

2.8 통계

__2.8.1 성능 향상 정량화  

__2.8.2 평균 

__2.8.3 표준 편차, 백분위, 중앙값  

__2.8.4 변동 계수

__2.8.5 다봉 분포  

__2.8.6 극단값

2.9 모니터링

__2.9.1 시간에 따른 패턴  

__2.9.2 모니터링 제품

__2.9.3 부팅 시점부터의 요약

2.10 시각화

__2.10.1 꺾은선 차트 

__2.10.2 산점도  

__2.10.3 히트맵 

__2.10.4 타임라인 차트  

__2.10.5 표면도  

__2.10.6 시각화 도구

2.11 연습 문제 

2.12 참고 자료  

 

3장 운영 체제 

3.1 용어

3.2 배경지식

__3.2.1 커널  

__3.2.2 커널 및 사용자 모드  

__3.2.3 시스템 콜 

__3.2.4 인터럽트  

__3.2.5 클럭과 유휴 상태  

__3.2.6 프로세스 

__3.2.7 스택  

__3.2.8 가상 메모리  

__3.2.9 스케줄러

__3.2.10 파일 시스템  

__3.2.11 캐싱  

__3.2.12 네트워킹

__3.2.13 장치 드라이버  

__3.2.14 멀티프로세서  

__3.2.15 선점

__3.2.16 자원 관리  

__3.2.17 관측가능성 도구

3.3 커널

__3.3.1 유닉스  

__3.3.2 BSD  

__3.3.3 솔라리스

3.4 리눅스

__3.4.1 리눅스 커널 개발  

__3.4.2 systemd  

__3.4.3 KPTI(멜트다운) 

__3.4.4 확장 BPF(Extended BPF)

3.5 기타 주제

__3.5.1 PGO 커널  

__3.5.2 유니커널

__3.5.3 마이크로 커널 및 하이브리드 커널  

__3.5.4 분산 운영 체제

3.6 커널 비교

3.7 연습 문제

3.8 참고 자료

__3.8.1 추가 자료  

 

4장 관측가능성 도구

4.1 도구 적용 범위

__4.1.1 정적 성능 분석 도구  

__4.1.2 비상 도구

4.2 도구 유형

__4.2.1 고정 카운터  

__4.2.2 프로파일링  

__4.2.3 트레이싱  

__4.2.4 모니터링 

4.3 관측가능성 소스 

__4.3.1 /proc  

__4.3.2 /sys  

__4.3.3 지연 어카운팅 

__4.3.4 netlink  

__4.3.5 tracepoint  

__4.3.6 kprobe

__4.3.7 uprobe  

__4.3.8 USDT 

__4.3.9 하드웨어 카운터(PMC)

__4.3.10 기타 관측가능성 소스

4.4 sar

__4.4.1 sar(1) 적용 범위  

__4.4.2 sar(1) 모니터링 

__4.4.3 sar(1) 실시간 모니터링

__4.4.4 sar(1) 관련 문서 

4.5 트레이싱 도구 

4.6 관측가능성 도구 관찰하기 

4.7 연습 문제 

4.8 참고 자료  

 

5장 애플리케이션 

5.1 애플리케이션 기초

__5.1.1 목표  

__5.1.2 일반적인 경우 최적화하기  

__5.1.3 관측가능성 

__5.1.4 빅 오(Big O) 표기법 

5.2 애플리케이션 성능 기법 

__5.2.1 I/O 크기 변경  

__5.2.2 캐싱  

__5.2.3 버퍼링  

__5.2.4 폴링  

__5.2.5 동시성과 병렬성  

__5.2.6 논블로킹 I/O

__5.2.7 프로세서 바인딩  

__5.2.8 성능 최적화를 위한 지침 

5.3 프로그래밍 언어

__5.3.1 컴파일 언어  

__5.3.2 인터프리터 언어  

__5.3.3 가상 머신 

__5.3.4 가비지 컬렉션

5.4 방법론

__5.4.1 CPU 프로파일링  

__5.4.2 Of-CPU 분석  

__5.4.3 시스템 콜 분석  

__5.4.4 USE 방법론 

__5.4.5 스레드 상태 분석 

__5.4.6 락 분석  

__5.4.7 정적 성능 튜닝  

__5.4.8 분산 트레이싱 

5.5 관측가능성 도구

__5.5.1 perf  

__5.5.2 profle  

__5.5.3 ofcputime 

__5.5.4 strace

__5.5.5 execsnoop  

__5.5.6 syscount  

__5.5.7 bpftrace 

5.6 유의사항 

__5.6.1 누락된 심벌  

__5.6.2 누락된 스택

__5.7 연습 문제 

__5.8 참고 자료 

 

6장 CPU  

6.1 용어 

6.2 모델

__6.2.1 CPU 아키텍처  

__6.2.2 CPU 메모리 캐시  

__6.2.3 CPU 실행 큐  

6.3 개념

__6.3.1 클럭 속도  

__6.3.2 명령어  

__6.3.3 명령어 파이프라인

__6.3.4 명령어 너비  

__6.3.5 명령어 크기  

__6.3.6 SMT

__6.3.7 IPC, CPI  

__6.3.8 CPU 사용률 

__6.3.9 사용자 시간/커널 시간 비율  

__6.3.10 포화 상태 

__6.3.11 선점  

__6.3.12 우선순위 역전

__6.3.13 멀티프로세스, 멀티스레드  

__6.3.14 워드 크기

__6.3.15 컴파일러 최적화 

6.4 아키텍처

__6.4.1 하드웨어

__6.4.2 소프트웨어

6.5 방법론

__6.5.1 도구 방법론  

__6.5.2 USE 방법론  

__6.5.3 워크로드 특성화 

__6.5.4 프로파일링  

__6.5.5 사이클 분석 

__6.5.6 성능 모니터링

__6.5.7 정적 성능 튜닝  

__6.5.8 우선순위 튜닝  

__6.5.9 리소스 제어 

__6.5.10 CPU 바인딩 

__6.5.11 마이크로 벤치마킹 

6.6 관측가능성 도구 

__6.6.1 uptime  

__6.6.2 vmstat  

__6.6.3 mpstat  

__6.6.4 sar 

__6.6.5 ps  

__6.6.6 top  

__6.6.7 pidstat  

__6.6.8 time, ptime 

__6.6.9 turbostat  

__6.6.10 showboost  

__6.6.11 pmcarch

__6.6.12 tlbstat 

__6.6.13 perf  

__6.6.14 profle  

__6.6.15 cpudist

__6.6.16 runqlat 

__6.6.17 runqlen

__6.6.18 softirqs 

__6.6.19 hardirqs  

__6.6.20 bpftrace 

__6.6.21 기타 도구 

6.7 시각화

__6.7.1 사용률 히트맵  

__6.7.2 1초 미만 오프셋 히트맵

__6.7.3 플레임 그래프

__6.7.4 FlameScope  

6.8 실험

__6.8.1 임의 부하 생성

__6.8.2 SysBench 

6.9 튜닝

__6.9.1 컴파일러 옵션  

__6.9.2 스케줄링 우선순위 및 클래스 

__6.9.3 스케줄러 옵션 

__6.9.4 스케일링 거버너  

__6.9.5 프로세서 전원 상태  

__6.9.6 CPU 바인딩

__6.9.7 배타적 CPU 셋 

__6.9.8 리소스 제어 

__6.9.9 보안 부팅 옵션 

__6.9.10 프로세스 옵션(BIOS 튜닝) 

6.10 연습 문제

6.11 참고 자료  

 

7장 메모리  

7.1 용어

7.2 개념 

__7.2.1 가상 메모리

__7.2.2 페이징

__7.2.3 요구 페이징

__7.2.4 메모리 오버커밋  

__7.2.5 프로세스 스와핑

__7.2.6 파일 시스템 캐시 사용  

__7.2.7 사용률 및 포화도

__7.2.8 메모리 할당자  

__7.2.9 공유 메모리

__7.2.10 워킹 셋 크기 

__7.2.11 워드 크기

7.3 아키텍처

__7.3.1 하드웨어

__7.3.2 소프트웨어  

__7.3.3 프로세스 가상 주소 공간

7.4 방법론

__7.4.1 도구 방법론 

__7.4.2 USE 방법론

__7.4.3 사용 특성 파악

__7.4.4 사이클 분석  

__7.4.5 성능 모니터링 

__7.4.6 메모리 누수 탐지

__7.4.7 정적 성능 튜닝  

__7.4.8 리소스 제어

__7.4.9 마이크로 벤치마킹

__7.4.10 메모리 축소 방법론

7.5 관측가능성 도구

__7.5.1 vmstat

__7.5.2 PSI  

__7.5.3 swapon

__7.5.4 sar 

__7.5.5 slabtop  

__7.5.6 numastat  

__7.5.7 ps

__7.5.8 top

__7.5.9 pmap  

__7.5.10 perf 

__7.5.11 drsnoop 

__7.5.12 wss 

__7.5.13 bpftrace  

__7.5.14 기타 도구 

7.6 튜닝

__7.6.1 튜닝 파라미터

__7.6.2 여러 페이지 크기

__7.6.3 메모리 할당자  

__7.6.4 NUMA 바인딩  

__7.6.5 리소스 제어

7.7 연습 문제 

7.8 참고 자료

 

8장 파일 시스템  

8.1 용어

8.2 모델

__8.2.1 파일 시스템 인터페이스  

__8.2.2 파일 시스템 캐시

__8.2.3 2단계 캐시

8.3 개념

__8.3.1 파일 시스템 지연시간  

__8.3.2 캐시

__8.3.3 임의 접근 I/O vs. 순차 접근 I/O  

__8.3.4 프리패치 

__8.3.5 미리 읽기 

__8.3.6 Write-Back 캐시 

__8.3.7 동기적 쓰기

__8.3.8 Raw I/O와 Direct I/O  

__8.3.9 논블로킹 I/O

__8.3.10 메모리 매핑 파일  

__8.3.11 메타데이터 

__8.3.12 논리적 I/O vs. 물리적 I/O

__8.3.13 연산들은 동일하지 않습니다

__8.3.14 특수 파일 시스템  

__8.3.15 액세스 타임스탬프  

__8.3.16 용량

8.4 아키텍처

__8.4.1 파일 시스템 I/O 스택  

__8.4.2 VFS 

__8.4.3 파일 시스템 캐시 

__8.4.4 파일 시스템 특징 

__8.4.5 파일 시스템 유형

__8.4.6 볼륨과 풀 

8.5 방법론

__8.5.1 디스크 분석

__8.5.2 지연시간 분석  

__8.5.3 워크로드 특성화

__8.5.4 성능 모니터링  

__8.5.5 정적 성능 튜닝  

__8.5.6 캐시 튜닝

__8.5.7 워크로드 분리  

__8.5.8 마이크로 벤치마킹

8.6 관측가능성 도구

__8.6.1 mount  

__8.6.2 free  

__8.6.3 top

__8.6.4 vmstat

__8.6.5 sar  

__8.6.6 slabtop  

__8.6.7 strace 

__8.6.8 fatrace  

__8.6.9 LatencyTOP

__8.6.10 opensnoop

__8.6.11 fletop 

__8.6.12 cachestat

__8.6.13 ext4dist (xfs, zfs, btrfs, nfs) 

__8.6.14 ext4slower (xfs, zfs, btrfs, nfs)  

__8.6.15 bpftrace

__8.6.16 기타 도구  

__8.6.17 시각화

8.7 실험

__8.7.1 임의 부하 생성

__8.7.2 마이크로 벤치마크 도구 

__8.7.3 캐시 플러싱

8.8 튜닝

__8.8.1 애플리케이션 호출

__8.8.2 ext4  

__8.8.3 ZFS  

8.9 연습 문제

8.10 참고 자료 

 

9장 디스크  

9.1 용어

9.2 모델

__9.2.1 기본적인 디스크  

__9.2.2 디스크 내장 캐시 

__9.2.3 컨트롤러 

9.3 개념

__9.3.1 시간 측정  

__9.3.2 시간 스케일  

__9.3.3 캐싱

__9.3.4 임의 접근 I/O vs. 순차 접근 I/O  

__9.3.5 읽기/쓰기 비율 

__9.3.6 I/O 크기

__9.3.7 같은 IOPS라도 모두 다르다

__9.3.8 데이터 전송이 아닌 디스크 명령  

__9.3.9 사용률 

__9.3.10 포화도

__9.3.11 I/O 대기율 

__9.3.12 동기 vs. 비동기

__9.3.13 디스크 I/O vs. 애플리케이션 I/O 

9.4 아키텍처 

__9.4.1 디스크 유형  599

____9.4.1.1 자기 회전식 드라이브

____9.4.1.2 반도체 드라이브

____9.4.1.3 영구 메모리 

__9.4.2 인터페이스  

__9.4.3 저장 장치 유형

__9.4.4 운영 체제 디스크 I/O 스택

9.5 방법론 

__9.5.1 도구 방법론 

__9.5.2 USE 방법론 

__9.5.3 성능 모니터링

__9.5.4 워크로드 특성화 

__9.5.5 지연시간 분석 

__9.5.6 정적 성능 튜닝 

__9.5.7 캐시 튜닝

__9.5.8 리소스 제어

__9.5.9 마이크로 벤치마킹 

__9.5.10 스케일링 

9.6 관측가능성 도구

__9.6.1 iostat 

__9.6.2 sar 

__9.6.3 PSI

__9.6.4 pidstat 

__9.6.5 perf 

__9.6.6 biolatency  

__9.6.7 biosnoop

__9.6.8 iotop, biotop  

__9.6.9 biostacks  

__9.6.10 blktrace 

__9.6.11 bpftrace 

__9.6.12 MegaCli  

__9.6.13 smartctl  

__9.6.14 SCSI 로깅  

__9.6.15 기타 도구

9.7 시각화

__9.7.1 꺾은선 차트  

__9.7.2 지연시간 산점도

__9.7.3 지연시간 히트맵  

__9.7.4 오프셋 히트맵  

__9.7.5 사용률 히트맵

9.8 실험

__9.8.1 임의 부하 생성  

__9.8.2 부하 발생기 제작

__9.8.3 마이크로 벤치마크 도구

__9.8.4 임의 접근 읽기 예제

__9.8.5 ioping  

__9.8.6 fo  

__9.8.7 blkreplay 

9.9 튜닝

__9.9.1 운영 체제 튜닝 옵션  

__9.9.2 디스크 장치 튜닝 파라미터 

__9.9.3 디스크 컨트롤러 튜닝 옵션

9.10 연습 문제

9.11 참고 자료

 

10장 네트워크  

10.1 용어

10.2 모델

__10.2.1 네트워크 인터페이스  

__10.2.2 네트워크 컨트롤러

__10.2.3 프로토콜 스택 

10.3 개념

__10.3.1 네트워크 및 라우팅  

__10.3.2 프로토콜  

__10.3.3 캡슐화 

__10.3.4 패킷 크기  

__10.3.5 지연시간  

__10.3.6 버퍼링

__10.3.7 연결 백로그 

__10.3.8 인터페이스 교섭  

__10.3.9 혼잡 회피 

__10.3.10 사용률  

__10.3.11 로컬 연결

10.4 아키텍처

__10.4.1 프로토콜  

__10.4.2 하드웨어  

__10.4.3 소프트웨어

10.5 방법론 

__10.5.1 도구 방법론  

__10.5.2 USE 방법론  

__10.5.3 워크로드 특성화 

__10.5.4 지연시간 분석  

__10.5.5 성능 모니터링 

__10.5.6 패킷 스니핑 

__10.5.7 TCP 분석

__10.5.8 정적 성능 튜닝 

__10.5.9 리소스 제어 

__10.5.10 마이크로 벤치마킹 

10.6 관측가능성 도구

__10.6.1 ss 

__10.6.2 ip  

__10.6.3 ifconfg 

__10.6.4 nstat 

__10.6.5 netstat  

__10.6.6 sar  

__10.6.7 nicstat  

__10.6.8 ethtool 

__10.6.9 tcplife 

__10.6.10 tcptop 

__10.6.11 tcpretrans

__10.6.12 bpftrace  

__10.6.13 tcpdump  

__10.6.14 Wireshark  

__10.6.15 기타 도구 

10.7 실험

__10.7.1 ping  

__10.7.2 traceroute  

__10.7.3 pathchar 

__10.7.4 iperf 

__10.7.5 netperf  

__10.7.6 tc 

__10.7.7 기타 도구

__10.8 튜닝

__10.8.1 시스템 단위 튜닝

__10.8.2 소켓 옵션 

__10.8.3 설정

10.9 연습 문제

10.10 참고 자료

 

11장 클라우드 컴퓨팅

11.1 배경지식

__11.1.1 인스턴스 유형 

__11.1.2 확장 가능한 아키텍처

__11.1.3 수용량 계획

__11.1.4 스토리지  

__11.1.5 멀티테넌시

__11.1.6 오케스트레이션(쿠버네티스) 

11.2 하드웨어 가상화

__11.2.1 구현

__11.2.2 오버헤드

__11.2.3 리소스 제어

__11.2.4 관측가능성

____11.2.4.1 특권 게스트/호스트 

____11.2.4.2 게스트

____11.2.4.3 전략

11.3 OS 가상화

__11.3.1 구현  

__11.3.2 오버헤드

__11.3.3 리소스 제어

__11.3.4 관측가능성

____11.3.4.1 기존 도구들

____11.3.4.2 호스트

____11.3.4.3 게스트(컨테이너)

____11.3.4.4 전략 

11.4 경량 가상화

__11.4.1 구현

__11.4.2 오버헤드

__11.4.3 리소스 제어

__11.4.4 관측가능성 

11.5 기타 유형 

11.6 비교 

11.7 연습 문제

11.8 참고 자료

 

12장 벤치마킹

12.1 배경지식 

__12.1.1 벤치마킹을 하는 이유

__12.1.2 효과적인 벤치마킹

__12.1.3 벤치마킹 실패 

12.2 벤치마킹 유형

__12.2.1 마이크로 벤치마킹 

__12.2.2 시뮬레이션 

__12.2.3 리플레이 

__12.2.4 산업 표준

12.3 방법론

__12.3.1 수동적 벤치마킹

__12.3.2 능동적 벤치마킹

__12.3.3 CPU 프로파일링

__12.3.4 USE 방법론

__12.3.5 워크로드 특성화

__12.3.6 커스텀 벤치마크 

__12.3.7 연속 부하 증가 

__12.3.8 정상 여부 검사

__12.3.9 통계적 분석

__12.3.10 벤치마킹 체크리스트 

12.4 벤치마크 질문

12.5 연습 문제

12.6 참고 자료

 

13장 perf

13.1 하위 명령어 개요

13.2 원 라이너 

__사용할 수 있는 이벤트 

__이벤트 집계 

__프로파일링

__정적 트레이싱

__동적 트레이싱

__리포팅

13.3 perf 이벤트

13.4 하드웨어 이벤트

__13.4.1 빈도수 샘플링 

13.5 소프트웨어 이벤트 

13.6 tracepoint 이벤트

13.7 Probe 이벤트

__13.7.1 kprobe

__13.7.2 uprobe

__13.7.3 USDT 

13.8 perf stat 

__13.8.1 옵션

__13.8.2 인터벌 통계

__13.8.3 CPU별 밸런스

__13.8.4 이벤트 필터

__13.8.5 섀도우 통계

13 9 perf record

__13.9.1 옵션 

__13.9.2 CPU 프로파일링 

__13.9.3 스택 추적 

13.10 perf report 

__13.10.1 TUI 

__13.10.2 STDIO

13.11 perf script 

__13.11.1 플레임 그래프

__13.11.2 트레이스 스크립트

13.12 perf trace

__13.12.1 커널 버전 

13.13 기타 명령어 

13.14 perf 문서

13.15 참고 자료

 

14장 Ftrace 

14.1 활용 가능성 개요

14.2 tracefs(/sys) 

__14.2.1 tracefs 구성 요소 

14.3 Ftrace 함수 프로파일러

14.4 Ftrace 함수 트레이싱

__14.4.1 trace 사용하기

__14.4.2 trace_pipe 사용하기

__14.4.3 옵션

14.5 tracepoint 

__14.5.1 필터 

__14.5.2 트리거

14.6 kprobe 

__14.6.1 이벤트 트레이싱 

__14.6.2 인자 

__14.6.3 리턴 값 

__14.6.4 필터와 트리거  

__14.6.5 kprobe 프로파일링 

14.7 uprobe

__14.7.1 이벤트 트레이싱 

__14.7.2 인자 및 리턴 값 

__14.7.3 필터 및 트리거 

__14.7.4 uprobe 프로파일링 

14.8 Ftrace function_graph

__14.8.1 그래프 트레이싱

__14.8.2 옵션 

14.9 Ftrace hwlat

14.10 Ftrace 히스토그램 트리거

__14.10.1 단일 키 

__14.10.2 필드

__14.10.3 지시자

__14.10.4 PID 필터

__14.10.5 다중 키

__14.10.6 스택 트레이스 키 

__14.10.7 합성 이벤트 

14.11 trace-cmd

__14.11.1 하위 명령어 개요

__14.11.2 trace-cmd 원 라이너 

__14.11.3 trace-cmd vs. perf(1) 

__14.11.4 trace-cmd function_graph

__14.11.5 KernelShark 

__14.11.6 trace-cmd 문서

14.12 perf ftrace 

14.13 perf-tools 

__14.13.1 도구 사용 분야 

__14.13.2 단일 목적 도구 

__14.13.3 다목적 도구  

__14.13.4 perf-tools 원 라이너 

__14.13.5 예시 

__14.13.6 perf-tools vs. BCC/BPF 

__14.13.7 문서 

14.14 Ftrace 문서

14.15 참고 자료

 

15장 BPF 

15 1 BCC

__15.1.1 설치 

__15.1.2 도구 사용 분야

__15.1.3 단일 목적 도구

__15.1.4 다목적 도구

__15.1.5 원 라이너 

__15.1.6 다목적 도구 사례

__15.1.7 BCC vs. bpftrace

__15.1.8 문서

15.2 bpftrace

__15.2.1 설치  1033

__15.2.2 도구  1033

__15.2.3 원 라이너

__15.2.4 프로그래밍

__15.2.5 참고 자료 

__15.2.6 문서

15.3 참고 자료

 

16장 사례 연구

16.1 원인 불명의 성능 향상 

__16.1.1 문제 정의

__16.1.2 분석 전략 

__16.1.3 통계

__16.1.4 구성 

__16.1.5 PMC

__16.1.6 소프트웨어 이벤트  

__16.1.7 트레이싱

__16.1.8 결론

16.2 추가 정보

16.3 참고 자료

 

부록 A USE 방법론: 리눅스  

부록 B sar 요약  

부록 C bpftrace 원 라이너  

부록 D 연습 문제 해답(일부)  

부록 E 시스템 성능 분야의 주요 인물  

 

 

본문인용

-

서평

《시스템 성능 엔지니어링》은 시스템을 이루는 핵심 요소들이 어떻게 동작하는지를 깊이 있게 다루며, 성능 문제를 진단하고 해결할 수 있는 기반을 마련해 줍니다. 단순한 도구 사용법이 아닌 시스템을 보는 눈을 길러 주는 안내서로서 더 멀리, 더 깊이 가고 싶은 분들에게 추천합니다. - 강진우, 당근마켓 인프라실 리더

 

SRE로 일하면서 성능 이슈를 다루다 보면, 원인을 파악하는 데 가장 큰 도움이 되는 건 시스템의 내부를 들여다볼 수 있는 도구들입니다. 이 책은 BPF를 활용해 그 과정을 체계적으로 안내해 주는 탁월한 자료입니다. - 박상헌, 카카오 인프라 개발 조직 리더

 

이 책은 CPU, 메모리, 디스크, 네트워크 같은 핵심 자원이 어떻게 동작하는지 알기 쉽게 풀어 주고, 실제로 성능 문제가 생겼을 때 어떤 도구와 방법을 써야 하는지도 구체적으로 보여 줍니다. 특히 클라우드 환경과 컨테이너 운영에서 흔히 겪는 문제들을 예시로 다루어, 실무 경험이 부족한 사람도 상황을 그려볼 수 있게 돕습니다. - 윤종민, 라인플러스 개발자

 

참고용 매뉴얼을 넘어서 엔지니어로서의 사고 체계를 근본적으로 변화시키는 책입니다. 복잡한 문제를 구조적으로 분석하고, 근본 원인을 찾아내며, 올바른 최적화 전략을 세우는 능력을 키워 줍니다. 클라우드·분산 환경에서도 이 책에서 배운 원리와 분석 기법은 강력한 무기가 될 것입니다. - 이호성, CIQ Principle Solution Architect(기술총괄 상무), 한국 리눅스 사용자 그룹 운영자

저자소개

저자 : 브렌던 그레그
컴퓨팅 성능과 클라우드 컴퓨팅 분야의 세계적인 전문가입니다. 현재 인텔 펠로우(Intel Fellow)로서 AI·클라우드 성능 엔지니어링을 이끌고 있으며, 이전에는 넷플릭스의 시니어 성능 아키텍트로 성능 설계·평가·분석·튜닝을 총괄했습니다. ≪BPF 성능 분석 도구≫(인사이트, 2021)를 비롯해 여러 기술서를 집필했으며, USENIX LISA 공로상을 받았습니다. 또한 커널 엔지니어와 성능 책임자로 활동했으며, USENIX LISA 2018 컨퍼런스의 프로그램 공동 의장을 맡은 바 있습니다.플레임 그래프(flame graph)를 비롯해 여러 운영 체제에 포함된 성능 도구와 시각화 기법을 고안해 보급한 성과로도 널리 인정받고 있습니다.
번역 : 이호연
SUSE의 BPF 시스템 엔지니어로, 리눅스 커널 BPF 서브시스템 개발과 엔터프라이즈 리눅스 배포판의 BPF 기능을 담당하고 있습니다. 2018년부터 BPF/XDP와 uftrace 등 다양한 오픈 소스 프로젝트에 꾸준히 기여하며, 커널 내부 동작 분석과 성능 최적화에 집중해 왔습니다. 또한 스토리지와 네트워크 성능 분석을 주제로 USENIX Vault 19와 SOSCON 2019에서 발표한 경험이 있습니다. 집필서로는 《Kong: Becoming a King of API Gateways》(Bleeding Edge Press, 2018), 번역서로는 《BPF 성능 분석 도구: BPF 트레이싱을 통한 리눅스 시스템 관측가능성과 성능 향상》(인사이트, 2021)이 있습니다.
상단으로 이동
  • (54866) 전북특별자치도 전주시 덕진구 중동로 63