서브메뉴

본문

시스템 성능 분석과 최적화 (엔터프라이즈에서 클라우드 환경까지 아우르는)
시스템 성능 분석과 최적화 (엔터프라이즈에서 클라우드 환경까지 아우르는)
저자 : 브렌든 그레그
출판사 : 위키북스
출판년 : 2015
ISBN : 9791158390181

책소개

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

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

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

출판사 서평

★ 이 책에서 다루는 내용 ★

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

목차정보

▣ 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: 참고문헌
[교보문고에서 제공한 정보입니다.]