시스템 성능 최적화에 대한 완벽 가이드!

이 책은 엔터프라이즈나 클라우드 환경을 운용하는 사람, 즉 시스템, 네트워크, 데이터베이스나 웹 관리자, 개발자 및 기타 기술자들에겐 필수불가결한 책이다. 학생이나 최적화를 처음 접하는 사람들은 저자의 풍부한 강의 경험에서 나온 연습문제를 통해 관련 내용을 철저하고 정확하게 익힐 수 있다.

저자는 베어메탈 시스템부터 가상화한 클라우드 임대 환경에 이르는 다양한 환경에서 실행되는 우분투(Ubuntu), 페도라(Fedora), 센토스(CentOS) 등의 리눅스와 일루모스(illumos) 기반의 조이언트(Joyent), 스마트OS(SmartOS)나 옴니TI의 옴니OS(OmniOS)에 이르는 운영체제를 예제로 설명한다. 또한 CPU, 메모리, 디스크, 네트워크 등의 '전통적인' 분석 대상이나 클라우드 컴퓨팅이나 동적 트레이싱(tracing) 등의 최신 분야에 이르기까지 시스템 성능 문제의 최근 흐름을 체계적으로 설명한다.

이 책을 읽고 나면 시스템 성능에 있어서 '몰랐던 모르는 것들', 즉 여러분이 그동안 존재하는지조차도 몰랐던 시스템 구성 요소나 상호작용에 의해 생겨나는 병목지점을 식별하고 고치는 데 도움될 것이다.

★ 이 책에서 다루는 내용 ★

  • 최신 성능 분석 및 튜닝: 용어, 개념, 모델, 방법론 및 기법
  • DTrace, 시스템탭(SystemTap), perf 등의 동적 트레이싱 기법과 도구
  • 커널 내부 구조: 운영체제의 동작에 대한 상세한 설명
  • 시스템 관찰 도구나 인터페이스, 프레임워크를 사용하는 방법
  • 애플리케이션 성능에 대한 이해와 애플리케이션 성능 모니터링 방법
  • CPU 최적화: 프로세서, 코어, 하드웨어 스레드, 캐시, 상호 연결, 커널 스케줄링
  • 메모리 최적화: 가상 메모리, 페이징, 스와핑, 메모리 구조, 버스, 주소 공간 및 할당자
  • 캐시를 포함하는 파일 시스템 I/O
  • 저장 장치/컨트롤러, 디스크 I/O 부하, RAID, 커널 I/O
  • 네트워크 관련 성능 문제: 프로토콜, 소켓, 인터페이스 및 물리적 연결
  • 운영체제나 하드웨어 기반 가상화가 성능에 어떤 영향을 끼치는가와 클라우드 컴퓨팅을 사용할 때 발생할 수 있는 새로운 성능 문제
  • 벤치마크: 정확한 벤치마크 결과를 얻는 방법과 벤치마크 수행 시 흔히 저지를 수 있는 실수를 피하는 방법

브렌든 그레그

조이언트(Joyent)의 선임 성능 엔지니어인 브렌든 그레그(Brendan Gregg)는 소프트웨어 스택을 통해 성능과 확장성을 분석하는 일을 한다. 썬 마이크로시스템즈(나중에 오라클에 합병됨)에서 성능 선임 엔지니어이자 커널 엔지니어로 근무하면서 ZFS L2ARC 개발, 플래시 메모리를 이용한 성능 개선을 위한 파일 시스템 기술 연구에 매진했다. 그는 맥 OS X과 오라클 솔라리스에 탑재된 것들을 비롯해 여러 성능 도구를 고안하고 개발했다. 최근에는 리눅스 및 일루모스 커널 분석을 위한 성능 시각화 업무도 하고 있다. 시스템 관리 및 성능 분석 방법론에 대한 공로를 인정받아 USENIX 2013 LISA Award for Outstanding Achievement in System Administration을 수상했다. 또한 『Dtrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD(Prentice Hall, 2011)』와 『Solaris™ Performance and Tools: DTrace and MDB Techniques for Solaris 10 and OpenSolaris(Prentice Hall, 2007)』의 공저자이기도 하다.

오현석

KAIST에서 전산학 학사와 석사 학위(프로그래밍 언어 연구실)를 취득했다. 삼성메디슨, 비트앤펄스 등에서 UI 개발자와 개발 팀장을 지냈고, 호주에서 풀스택 개발자로 일하고 있다. 웹이나 모바일 등의 분야에서 값 중심의 프로그래밍을 통해 좀 더 오류 발생 가능성이 적고 유지보수가 편한 프로그램을 작성하는 방법과 이를 지원하는 여러 도구를 만드는 일에 관심이 많다. 『코어 파이썬 애플리케이션 프로그래밍』 『프로그래밍 인 스칼라』 『파이썬 인 프랙티스』 등을 번역했다.

서형국

KAIST 전산학과 학부를 졸업하고 서강대학교 정보통신대학원에서 정보시스템 석사 학위를 취득했다. 솔트룩스, 와이즈넛 등 검색엔진 전문 기업에서 기계학습 및 텍스트마이닝 엔진을 개발했다. 이후 구인구직 포털, 레시피 서비스 등에서 데이터 분석 및 콘텐츠 추천과 같은 데이터 관련 서비스 개발 업무를 수행했다. 데이터로부터 정보와 지식을 발견하기 위해 애쓰고 있다. 『코어 파이썬 애플리케이션 프로그래밍』 『파이썬 인 프랙티스』 등을 번역했다.

  • ▣ 01장: 들어가며
    • 1.1 시스템 성능
    • 1.2 역할
    • 1.3 활동
    • 1.4 관점
    • 1.5 성능은 도전적인 분야다
      • 1.5.1 성능은 주관적이다
      • 1.5.2 시스템은 복잡하다
      • 1.5.3 여러 성능 문제가 존재할 수 있다
    • 1.6 지연시간
    • 1.7 동적 트레이싱
    • 1.8 클라우드 컴퓨팅
    • 1.9 사례 연구
      • 1.9.1 느린 디스크
      • 1.9.2 소프트웨어 변경
      • 1.9.3 더 읽을거리
    •  
  • ▣ 02장: 방법론
    • 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 규모 확장성
      • 2.3.9 알려진 모르는 것
      • 2.3.10 지표
      • 2.3.11 사용률
      • 2.3.12 포화도
      • 2.3.13 프로파일링
      • 2.3.14 캐싱
    • 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 부하 특성 평가
      • 2.5.11 드릴다운 분석
      • 2.5.12 지연시간 분석
      • 2.5.13 R 방법론
      • 2.5.14 이벤트 트레이싱
      • 2.5.15 기준 통계
      • 2.5.16 정적 성능 튜닝
      • 2.5.17 캐시 튜닝
      • 2.5.18 마이크로 벤치마킹
    • 2.6 모델링
      • 2.6.1 기업 대 클라우드
      • 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.11 연습문제
    • 2.12 참고문헌
    •  
  • ▣ 03장: 운영체제
    • 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 솔라리스 기반
      • 3.3.3 리눅스 기반
      • 3.3.4 차이점
    • 3.4 연습문제
    • 3.5 참고문헌
    •  
  • ▣ 04장: 관찰도구
    • 4.1 도구 유형
      • 4.1.1 카운터
      • 4.1.2 트레이싱
      • 4.1.3 프로파일링
      • 4.1.4 감시(sar)
    • 4.2 관찰 소스
      • 4.2.1 /proc
      • 4.2.2 /sys
      • 4.2.3 kstat
      • 4.2.4 지연 어카운팅
      • 4.2.5 미세상태 어카운팅
      • 4.2.6 다른 관찰 가능 소스
    • 4.3 DTrace
      • 4.3.1 정적 트레이싱과 동적 트레이싱
      • 4.3.2 프로브
      • 4.3.3 프로바이더
      • 4.3.4 인수
      • 4.3.5 D 언어
      • 4.3.6 내장 변수
      • 4.3.7 액션
      • 4.3.8 변수 타입
      • 4.3.9 한 줄짜리 프로그램
      • 4.3.10 스크립트
      • 4.3.11 부가비용
      • 4.3.12 문서와 자료
    • 4.4 시스템탭
      • 4.4.1 프로브
      • 4.4.2 탭셋
      • 4.4.3 액션과 내장 변수
      • 4.4.5 부가비용
      • 4.4.6 문서와 자료
    • 4.5 리눅스 성능 이벤트(perf)
    • 4.6 관찰 도구 관찰하기
    • 4.7 연습문제
    • 4.8 참고문헌
    •  
  • ▣ 05장: 애플리케이션
    • 5.1 애플리케이션 기초
      • 5.1.1 목표
      • 5.1.2 일반적인 경우 최적화하기
      • 5.1.3 관찰 가능 범위
      • 5.1.4 빅 오 표기법
    • 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.3 프로그래밍 언어
      • 5.3.1 컴파일 언어
      • 5.3.2 인터프리터 언어
      • 5.3.3 가상 머신
      • 5.3.4 쓰레기 수집
    • 5.4 방법론과 분석
      • 5.4.1 스레드 상태 분석
      • 5.4.2 CPU 프로파일링
      • 5.4.3 시스템 콜 분석
      • 5.4.4 I/O 프로파일링
      • 5.4.5 부하 특성 평가
      • 5.4.6 USE 방법론
      • 5.4.7 드릴다운 분석
      • 5.4.8 락 분석
      • 5.4.9 정적 성능 튜닝
    • 5.5 연습문제
    • 5.6 참고문헌
    •  
  • ▣ 06장: 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 CPI, IPC
      • 6.3.6 사용률
      • 6.3.7 사용자 시간/커널 시간 비율
      • 6.3.8 포화
      • 6.3.9 선점
      • 6.3.10 우선순위 역전
      • 6.3.11 다중 프로세스, 다중 스레드
      • 6.3.12 워드 크기
      • 6.3.13 컴파일러 최적화
    • 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.5.12 확장하기
    • 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 prstat
      • 6.6.8 pidstat
      • 6.6.9 time, ptime
      • 6.6.10 DTrace
      • 6.6.11 시스템탭
      • 6.6.12 perf
      • 6.6.13 cpustat
      • 6.6.14 기타 도구
      • 6.6.15 시각화
    • 6.7 실험 과정
      • 6.7.1 임의 시도
      • 6.7.2 시스벤치
    • 6.8 튜닝
      • 6.8.1 컴파일러 옵션
      • 6.8.2 스케줄링 우선순위와 클래스
      • 6.8.3 스케줄러 옵션
      • 6.8.4 프로세스 바인딩
      • 6.8.5 배타적 CPU 집합
      • 6.8.6 자원 제어
      • 6.8.7 프로세서 옵션(BIOS 튜닝)
    • 6.9 연습문제
    • 6.10 참고문헌
    •  
  • ▣ 07장: 메모리
    • 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.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.5 분석
      • 7.5.1 vmstat
      • 7.5.2 sar
      • 7.5.3 slabtop
      • 7.5.4 ::kmastat
      • 7.5.5 ps
      • 7.5.6 top
      • 7.5.7 prstat
      • 7.5.8 pmap
      • 7.5.9 DTrace
      • 7.5.10 시스템탭
      • 7.5.11 기타 도구
    • 7.6 튜닝
      • 7.6.1 변경 가능 파라미터
      • 7.6.2 여러 페이지 크기
      • 7.6.3 할당자
      • 7.6.4 자원 제어
    • 7.7 연습문제
    • 7.8 참고문헌
    •  
  • ▣ 08장: 파일 시스템
    • 8.1 용어
    • 8.2 모델
      • 8.2.1 파일 시스템 인터페이스
      • 8.2.2 파일 시스템 캐시
      • 8.2.3
    • 8.3 개념
      • 8.3.1 파일 시스템 지연시간
      • 8.3.2 캐시
      • 8.3.3 임의 접근 I/O 대 순차 I/O
      • 8.3.4 예비 추출
      • 8.3.5 미리 읽기
      • 8.3.6 라이트 백 캐시
      • 8.3.7 동기적 쓰기
      • 8.3.8 로우 I/O와 직접 I/O
      • 8.3.9 비블로킹 I/O
      • 8.3.10 메모리 맵 파일
      • 8.3.11 메타데이터
      • 8.3.12 논리적 I/O 대 물리적 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.5.9 메모리 기반 파일 시스템
      • 8.5.10 마이크로 벤치마킹
    • 8.6 분석
      • 8.6.1 vfsstat
      • 8.6.2 fsstat
      • 8.6.3 strace, truss
      • 8.6.4 DTrace
      • 8.6.5 시스템탭
      • 8.6.6 LatencyTOP
      • 8.6.7 free
      • 8.6.8 top
      • 8.6.9 vmstat
      • 8.6.10 sar
      • 8.6.11 slabtop
      • 8.6.12 mdb ::kmastat
      • 8.6.13 fcachestat
      • 8.6.14 /proc/meminfo
      • 8.6.15 mdb ::memstat
      • 8.6.16 kstat
      • 8.6.17 다른 도구
      • 8.6.18 시각화
    • 8.7 실험
      • 8.7.1 임의 부하 생성
      • 8.7.2 마이크로 벤치마크 도구
      • 8.7.3 캐시 플러싱
    • 8.8 튜닝
      • 8.8.1 애플리케이션 호출
      • 8.8.2 ext3
      • 8.8.3 ZFS
    • 8.9 연습문제
    • 8.10 참고문헌
    •  
  • ▣ 09장: 디스크
    • 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 대 순차 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 동기 대 비동기
      • 9.3.13 디스크 I/O 대 애플리케이션 I/O
    • 9.4 아키텍처
      • 9.4.1 디스크 유형
      • 9.4.2 인터페이스
      • 9.4.3 저장장치 유형
      • 9.4.4 OS 디스크 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.5.11 확장하기
    • 9.6 분석
      • 9.6.1 iostat
      • 9.6.2 sar
      • 9.6.3 pidstat
      • 9.6.4 DTrace
      • 9.6.5 시스템탭
      • 9.6.6 perf
      • 9.6.7 iotop
      • 9.6.8 iosnoop
      • 9.6.9 blktrace
      • 9.6.10 MegaCli
      • 9.6.11 smartctl
      • 9.6.12 시각화
    • 9.7 실험
      • 9.7.1 임의 부하 생성
      • 9.7.2 커스텀 부하 생성기
      • 9.7.3 마이크로 벤치마크 도구
      • 9.7.4 임의 위치 읽기 예제
    • 9.8 튜닝
      • 9.8.1 운영체제의 변경 가능 파라미터
      • 9.8.2 디스크 장치의 변경 가능 파라미터
      • 9.8.3 디스크 컨트롤러의 변경 가능 파라미터
    • 9.9 연습문제
    • 9.10 참고문헌
    •  
  • ▣ 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.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.5.11 마이크로 벤치마킹
    • 10.6 분석
      • 10.6.1 netstat
      • 10.6.2 sar
      • 10.6.3 ifconfig
      • 10.6.4 ip
      • 10.6.5 nicstat
      • 10.6.6 dladm
      • 10.6.7 ping
      • 10.6.8 traceroute
      • 10.6.9 pathchar
      • 10.6.10 tcpdump
      • 10.6.11 snoop
      • 10.6.12 와이어샤크
      • 10.6.13 DTrace
      • 10.6.14 시스템탭
      • 10.6.15 perf
      • 10.6.16 다른 도구
    • 10.7 실험
      • 10.7.1 iperf
    • 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.2 OS 가상화
      • 11.2.1 부가비용
      • 11.2.2 자원 제어
      • 11.2.3 관찰 도구
    • 11.3 하드웨어 가상화
      • 11.3.1 부가비용
      • 11.3.2 자원제어
      • 11.3.3 관찰 도구
    • 11.4 비교
    • 11.5 연습문제
    • 11.6 참고문헌
    •  
  • ▣ 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.4 벤치마크 질문
    • 12.5 연습문제
    • 12.6 참고문헌
    •  
  • ▣ 13장: 사례연구
    • 13.1 사례 분석: 암막 커튼
      • 13.1.1 문제 기술
      • 13.1.2 지원
      • 13.1.3 시작하기
      • 13.1.4 어떤 모험을 택할 것인가?
      • 13.1.5 USE 방법론
      • 13.1.6 이제 다 끝난 것일까?
      • 13.1.7 두 번째 시도
      • 13.1.8 기본
      • 13.1.9 암막 커튼 제치기
      • 13.1.10 커널 심문하기
      • 13.1.11 왜 그랬을까?
      • 13.1.12 후일담
    • 13.2 해설
    • 13.3 추가 정보
    • 13.4 참고문헌
    •  
  • ▣ 부록 A: USE 방법론 - 리눅스
    • 물리적 자원
    • 소프트웨어 자원
    • 참고문헌
    • 물리적 자원
    • 소프트웨어 자원
    •  
  • ▣ 부록 B: 방법론 - 솔라리스
    • 참고문헌
    • 리눅스
    •  
  • ▣ 부록 C: sar 요약
    • 솔라리스
    • syscall 프로바이더
    •  
  • ▣ 부록 D: 한 줄짜리 DTrace 프로그램 예제
    • proc 프로바이더
    • profile 프로바이더
    • sched 프로바이더
    • fbt 프로바이더
    • pid 프로바이더
    • io 프로바이더
    • sysinfo 프로바이더
    • vminfo 프로바이더
    • ip 프로바이더
    • tcp 프로바이더
    • udp 프로바이더
    • 기능
    •  
  • ▣ 부록 E: DTrace 스크립트를 시스템탭으로 바꾸기
    • 용어
    • 프로브
    • 내장 변수
    • 함수
    • 예제1: 시스템콜 엔트리 프로브 나열하기
    • 예제2: read()가 반환하는 크기 요약하기
    • 예제3: 프로세스 이름별로 시스템 콜 횟수 세기
    • 예제4: 프로세스 ID 123인 프로세스에 대해 시스템콜 이름별로 횟수 세기
    • 예제5: “httpd” 프로세스에 대해 시스템콜 이름별로 시스템콜 횟수 세기
    • 예제6: 프로세스 이름과 파일 경로별로 파일 open() 횟수 세기
    • 예제7: “mysqld” 프로세스의 read() 지연시간 요약하기
    • 예제8: 새로 시작되는 프로세스 이름과 인자를 트레이스하기
    • 예제9: 100Hz로 커널 스택 샘플링하기
    • 참고문헌
    •  
  • ▣ 부록 F: 연습문제 해답
    • 2장 - 방법론
    • 3장 - OS
    • 6장 - CPU
    • 7장 - 메모리
    • 8장 - 파일 시스템
    • 9장 - 디스크
    • 11장 - 클라우드 컴퓨팅
    •  
  • ▣ 부록 G: 시스템 성능 인명록
    •  
  • ▣ 부록 H: 용어
    •  
  • ▣ 부록 I: 참고문헌