소프트웨어 성능의 이해 - 에이콘 소프트웨어 아키텍처 시리즈

소프트웨어 성능의 이해 - 에이콘 소프트웨어 아키텍처 시리즈

$44.89
저자

리처드사이트

저자:리처드사이트

1959년처음으로컴퓨터프로그램을개발했다.커리어의대부분을하드웨어와소프트웨어의극간을연구하며보냈으며,특히CPU/소프트웨어성능의상호작용에관심을가졌다.벡스VAX마이크로코드,DEC알파공동설계자그리고오늘날거의모든프로세서에서볼수있는성능카운터를개발했다.또한DEC,어도비,구글과테슬라에서적은오버헤드만으로마이크로코드와소프트웨어를추적해왔다.1974년스탠포드(Standford)에서박사학위를취득했고66개의특허를보유한미국국립공학아카데미(USNationalAcademyofEngineering)의회원이다.



역자:최왕용

국내퍼블릭클라우드프로바이더에서소프트웨어엔지니어로클라우드상품을개발하고있다.주로로드밸런서와같은네트워크상품을개발하며,소프트웨어아키텍처와시스템구조에관심을두고있다.함께일하고싶은소프트웨어엔지니어가되고자한걸음씩성장하고있다.

목차

1부.측정

1장.너무느린내프로그램
1.1데이터센터의측면
1.2데이터센터하드웨어
1.3데이터센터소프트웨어
1.4긴꼬리지연시간
1.5프레임워크에관한고찰
1.6크기정도산정
1.7트랜잭션이느린이유
1.85가지기본적인자원들
1.9요약

2장.CPU측정
2.1과거에서지금까지의발자취
2.2지금의위치
2.3add명령어의지연시간측정
2.4직선형코드의실수
2.5간단한반복문,반복문오버헤드실수,컴파일러최적화실수
2.6사용되지않는변수로인한실패
2.7향상된반복문
2.8의존적인변수들
2.9실제실행지연시간
2.10몇가지추가차이점
2.11요약
연습

3장.메모리측정
3.1메모리타이밍
3.2메모리
3.3캐시구조
3.4데이터정렬
3.5변환색인버퍼구조
3.6측정
3.7캐시라인크기측정
3.8문제:N+1프리패칭
3.9종속적인로드
3.10무작위가아닌DRAM
3.11캐시계층별크기측정
3.12캐시계층별접근도측정
3.13변환버퍼시간
3.14활용도낮은캐시
3.15요약
연습

4장.CPU와메모리의상호작용
4.1캐시상호작용
4.2간단한행렬곱셈의다양성
4.3예측
4.4초기화,크로스체크그리고관찰
4.5초기의결과
4.6더빠른행렬곱셈,전치방법
4.7더빠른행렬곱셈과하위블록방법
4.8캐시인지계산
4.9요약
연습

5장.디스크/SSD측정
5.1하드디스크
5.2SSD
5.3소프트웨어디스크접근과디스크버퍼링
5.4디스크를빠르게읽는방법
5.5대략적인계산
5.6디스크쓰기는얼마나빠른가
5.7결과
5.8디스크읽기
5.9디스크에쓰기
5.10SSD읽기
5.11SSD에쓰기
5.12다중전송
5.13요약
연습

6장.네트워크측정
6.1이더넷
6.2허브,스위치,라우터
6.3TCP/IP
6.4패킷
6.5원격프로시저호출(RPC)
6.6슬롭
6.7네트워크트래픽관찰
6.8간단한RPC메시지정의
6.9샘플로깅설계
6.10샘플RPC를이용한클라이언트서버시스템
6.11간단한서버프로그램
6.12스핀락
6.13샘플클라이언트프로그램
6.14하나의샘플클라이언트서버RPC측정
6.15RPC로그후처리
6.16관찰
6.17요약
연습

7장.디스크와네트워크데이터베이스의상호작용
7.1시간정렬
7.2다중클라이언트
7.3스핀락
7.4실험1
7.5디스크기반데이터베이스
7.6실험2
7.7실험3
7.8로깅
7.9트랜잭션지연시간의다양성이해
7.10요약
연습

2부.관찰

8장.로깅
8.1관찰도구
8.2로깅
8.3기본적인로깅
8.4확장된로깅
8.5타임스탬프
8.6RPCID
8.7로그파일포맷
8.8로그파일관리
8.9요약

9장.측정결과의통합
9.1균일한속도와버스트이벤트
9.2측정간격
9.3타임라인
9.4타임라인의더많은요약
9.5시간규모히스토그램
9.6이벤트별측정집계
9.7시간에따른값의패턴
9.8시간간격업데이트
9.9트랜잭션예제
9.10결론

10장.대시보드
10.1샘플서비스
10.2샘플대시보드
10.3마스터대시보드
10.4인스턴스별대시보드
10.5서버별대시보드
10.6정상상태검사
10.7요약
연습

11장.다른도구들
11.1관찰도구의종류
11.2관찰데이터
11.3top명령어
11.4/proc과/sys수도파일
11.5time명령어
11.6perf명령어
11.7oprofile,CPU프로파일러
11.8strace,시스템콜
11.9ltrace,CPUC라이브러리호출
11.10ftrace,CPU추적
11.11mtrace,메모리할당/해제
11.12blktrace,디스크추적
11.13tcpdump와와이어샤크,네트워크추적
11.14locktrace,임계구역락
11.15부하,외부호출,그리고트랜잭션지연시간
11.16요약
연습

12장.추적
12.1추적의장점
12.2추적의단점
12.3시작하며묻는세가지질문
12.4예제:초기의프로그램카운터추적
12.5예제:함수별카운트와시간
12.6사례연구:지메일의함수별추적
12.7요약

13장.관찰도구설계원칙
13.1관찰의대상
13.2관찰의정도
13.3오버헤드의정도
13.4설계결과
13.5사례연구:히스토그램버킷
13.6데이터디스플레이설계
13.7요약

3부.커널-사용자추적

14장.KUtrace:목적,설계,구현
14.1개요
14.2목표
14.3설계
14.4구현
14.5커널패치와모듈
14.6컨트롤프로그램
14.7후처리
14.8보안
14.9요약

15장.KUtrace:리눅스커널패치
15.1추적버퍼데이터구조
15.2가공되지않은추적블록형태
15.3추적항목
15.4IPC추적항목
15.5타임스탬프
15.6이벤트번호
15.7중첩된추적항목
15.8코드
15.9패킷추적
15.10AMD/인텔x86-64패치
15.11요약
연습

16장.KUtrace:리눅스커널모듈
16.1커널인터페이스데이터구조
16.2모듈로드/언로드
16.3초기화와추적제어
16.4추적요청구현
16.5Insert1
16.6InsertN
16.7새로운커널블록으로전환
16.8요약

17장.KUtrace:사용자모드런타임제어
17.1추적제어
17.2홀로동작하는kutrace_control프로그램
17.3kutrace_lib라이브러리
17.4커널모듈을제어하는인터페이스
17.5요약

18장.KUtrace:후처리
18.1후처리상세보기
18.2rawtoevent프로그램
18.3eventtospan프로그램
18.4spantotrim프로그램
18.5spantospan프로그램
18.6samptoname_k와samptoname_u프로그램
18.7makeself프로그램
18.8KUtraceJSON형태
18.9요약

19장.KUtrace:소프트웨어역동성디스플레이
19.1개요
19.21구역,제어
19.32구역,Y축
19.43구역,타임라인
19.54구역,IPC범례
19.65구역,X축
19.76구역,저장/복구
19.8보조제어
19.9요약

4부.추론

20장.찾고자하는것
20.1개요

21장.너무많은실행
21.1개요
21.2프로그램
21.3미스터리
21.4탐구및추론
21.5미스터리이해
21.6요약

22장.느린실행
22.1개요
22.2프로그램
22.3미스터리
22.4부동소수점방해프로그램
22.5메모리방해프로그램
22.6미스터리의이해
22.7요약

23장.CPU대기
23.1프로그램
23.2미스터리
23.3탐구와추론
23.4미스터리2
23.5미스터리2의이해
23.6보너스미스터리
23.7요약
연습

24장.메모리대기
24.1프로그램
24.2미스터리
24.3탐구와추론
24.4미스터리2:페이지테이블접근
24.5미스터리2의이해
24.6요약
연습

25장.디스크대기
25.1프로그램
25.2미스터리
25.3탐구와추론
25.440MB읽기
25.5순차적4KB블록읽기
25.6임의의4KB블록읽기
25.7SSD의40MB쓰기와동기화
25.8SSD의40MB읽기
25.9한번에두파일에접근하는두프로그램
25.10미스터리의이해
25.11요약
연습

26장.네트워크대기
26.1개요
26.2프로그램
26.3실험1
26.4실험1의미스터리
26.5실험1탐구와추론
26.6실험1의RPC소요시간
26.7실험2
26.8실험3
26.9실험4
26.10미스터리의이해
26.11추가이상현상
26.12요약

27장.락대기
27.1개요
27.2프로그램
27.3실험1:오랜락유지시간
27.3.1간단한락
27.3.2락포화
27.4실험1의미스터리
27.5실험1의탐구와추론
27.5.1락캡처
27.5.2락기아
27.6실험2:락캡처수정
27.7실험3:다중락에의한락경합수정
27.8실험4:더적은락을통한락경합수정
27.9실험5:대시보드를위한RCU를이용한락경합수정
27.10요약

28장.시간대기
28.1주기적인작업
28.2타임아웃
28.3타임슬라이싱
28.4인라인실행지연
28.5요약

29장.큐지연
29.1개요
29.2요청분포
29.3큐구조
29.4작업테스크
29.5프라이머리테스크
29.6디큐
29.7인큐
29.8스핀락
29.9“작업”루틴
29.10간단한예제
29.11가능성있는문제
29.12CPU빈도수
29.13복잡한예제
29.14CPU대기:RPC로그
29.15CPU대기:KUtrace
29.16PlainSpinLock결함
29.17근본원인
29.18PlainSpinLock수정:가시성
29.19부하분산
29.20큐길이:가시성
29.21마지막스핀
29.22추가결함
29.23크로스체크
29.24요약
연습

30장.정리
30.1배운것
30.2배우지못한것
30.3다음단계
30.4전체책요약

부록A.샘플서버
A.1샘플서버하드웨어
A.2서버연결

부록B.추적항목
B.1고정길이의추적항목
B.2가변길이의추적항목
B.3이벤트번호
B.3.1커널모드KUtrace패치로삽입된이벤트
B.3.2유저모드코드로삽입된이벤트
B.3.3후처리코드로삽입된이벤트

출판사 서평

이책에서다루는내용

*CPU와메모리,디스크/SSD,네트워크그리고자원들간의간섭과관련된문제를측정하고해결한다.
*항상느리게동작하는프로그램을수정하고뚜렷한이유없이간헐적으로지연되는프로그램을수정한다.
*기대치와성능데이터의차이가발생하는이유를확인한다.
*과도한실행과느린명령어의실행,자원사용을대기하고소프트웨어락등으로발생한문제를규명한다.

이책의대상독자

프로그래밍과제를수행하며설명된소프트웨어관찰도구를구현하고자하는독자에게특히권장되는책이다.
이책전반에걸쳐현대의복잡한프로세서와성능향상메커니즘에관한설명이등장한다.실수로이런메커니즘을무력화한다면더큰지연이발생할수있다.독자는이모든것과함께컴퓨터아키텍처와마이크로아키텍처에대해더깊이이해할수있을것이다.
이책은소프트웨어전문가와수준높은학생을위한교과서다.뿐만아니라컴퓨터하드웨어설계자,운영체제개발자,시스템아키텍처IT전문가,실시간시스템설계자및게임개발자가관심을가질만한내용도다룬다.사용자가직면한대기시간에집중해서모든프로그래머의경력을향상할수있는기술을얻게될것이다.