리눅스 디버깅과 성능 튜닝 [오픈소스 도구를 사용한 문제 진단 분석과 해결]
- 원서명Linux Debugging and Performance Tuning (ISBN 9780131492479)
- 지은이Steve Best
- 옮긴이이해영, 박재호
- 감수자신재훈
- ISBN : 8989975867
- 25,000원
- 2006년 02월 14일 펴냄 (절판)
- 페이퍼백 | 468쪽 | 190*250mm
- 시리즈 : 오픈소스 프로그래밍
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
커널과 응용 프로그램 모두에 적용할 수 있는 리눅스 소프트웨어 디버깅과 성능 최적화를 다루는 리눅스 문제해결 실전서의 결정판!
리눅스 커널과 응용 프로그램 생산성을 극대화하려는 모든 개발자는 물론이고, 리눅스 안정성과 성능 문제를 해결해야 하는 시스템 관리자와 지원 전문가를 위한 필독서!
이 책은 커널과 응용 프로그램 모두에 적용할 수 있는 리눅스 소프트웨어 디버깅과 성능 최적화를 다루는 결정판이다. 리눅스 코드 예제를 광범위하게 사용함으로써, 버그가 없고 튜닝이 제대로 된 코드를 만들기 위해 오픈소스 도구와 우수 개발기법을 체계적으로 소개한다.
IBM에서 보여준 뛰어난 리눅스 시스템 최적화 경험을 토대로 저자는 메모리 관리와 I/O에서 시작해 시스템 프로세스와 커널 버그 메시지에 이르기까지 다양한 분야에 걸친 실전 기법을 소개한다. 실제 디버깅 세션을 통해 가장 복잡한 응용 프로그램과 커널 관련 문제점을 디버깅하기 위한 저자의 전문가적인 노력을 느낄 수 있다. 이 책을 통해 더 빨리 병목을 찾아서 해결하기 위한 복잡한 프로파일링 기법을 익히고, 문제가 발생했을 때 올바른 자료를 찾아내는 방법을 터득하게 될 것이다.
[ 이 책에서 다루는 내용 ]
* 병목 파악 * syslog와 사건 기록
* 코드 커버리지 * 실행 추적
* 디버거: gdb, kgdb, KDB * 커널 동작 프로파일
* 메모리 관리 * 캐시 실패
* /proc 커널 자료 분석 * 사용자 모드 리눅스
* 시스템 프로세스 감시 * 동적 탐색
* 네트워크 성능 * 충돌 덤프 분석
* 웁스 버그 메시지
리눅스 커널과 응용 프로그램 생산성을 극대화하려는 모든 개발자는 물론이고, 리눅스 안정성과 성능 문제를 해결해야 하는 시스템 관리자와 지원 전문가를 위한 필독서!
이 책은 커널과 응용 프로그램 모두에 적용할 수 있는 리눅스 소프트웨어 디버깅과 성능 최적화를 다루는 결정판이다. 리눅스 코드 예제를 광범위하게 사용함으로써, 버그가 없고 튜닝이 제대로 된 코드를 만들기 위해 오픈소스 도구와 우수 개발기법을 체계적으로 소개한다.
IBM에서 보여준 뛰어난 리눅스 시스템 최적화 경험을 토대로 저자는 메모리 관리와 I/O에서 시작해 시스템 프로세스와 커널 버그 메시지에 이르기까지 다양한 분야에 걸친 실전 기법을 소개한다. 실제 디버깅 세션을 통해 가장 복잡한 응용 프로그램과 커널 관련 문제점을 디버깅하기 위한 저자의 전문가적인 노력을 느낄 수 있다. 이 책을 통해 더 빨리 병목을 찾아서 해결하기 위한 복잡한 프로파일링 기법을 익히고, 문제가 발생했을 때 올바른 자료를 찾아내는 방법을 터득하게 될 것이다.
[ 이 책에서 다루는 내용 ]
* 병목 파악 * syslog와 사건 기록
* 코드 커버리지 * 실행 추적
* 디버거: gdb, kgdb, KDB * 커널 동작 프로파일
* 메모리 관리 * 캐시 실패
* /proc 커널 자료 분석 * 사용자 모드 리눅스
* 시스템 프로세스 감시 * 동적 탐색
* 네트워크 성능 * 충돌 덤프 분석
* 웁스 버그 메시지
목차
목차
- 1장. 프로파일링
- 스톱워치
- date
- time
- clock
- gettimeofday
- GNU gprof를 이용한 성능 튜닝
- gprof 사용에 필요한 gcc 옵션
- kprof
- 2장. 코드 커버리지
- 코드 커버리지 분석이란?
- gcov와 논리 오류
- 코드 커버리지 유형
- gcov 사용에 필요한 gcc 옵션
- 3장. GNU 디버거
- gdb 설치
- gdb 명령
- gdb로 디버깅할 프로그램 컴파일 방법
- 전형적인 gdb 세션
- 코어(core) 파일로 디버깅하기
- 프로그램 실행과 코어 덤프 얻기
- 그래픽 gdb 인터페이스
- DDD(Data Display Debugger)
- 인사이트(Insight)
- 디버깅 심볼과 실행 파일 크기
- 디버깅 기술
- 4장. 메모리 관리 디버깅
- 동적 메모리 함수
- MEMWATCH
- YAMD
- Electric Fence
- Valgrind
- 5장. 시스템 정보
- /proc이란?
- 관리자 관점에서 /proc 사용하기
- /proc 구조
- 6장. 시스템 도구
- 프로세스
- 태스크 상태
- 프로세스 디버깅 도구
- strace로 시스템 호출 추적하기
- 마법 키 조합으로 역추적하기
- lsof로 열린 파일 살펴보기
- 네크워크 디버깅 도구
- 7장. 시스템 오류 메시지
- 커널 파일
- 웁스(Oops) 분석
- ksymoops로 웁스 처리
- gdb로 jfs_mount 보기
- gcc –S 옵션으로 생성하는 어셈블리 코드
- 커널 메일링 리스트 웁스
- perror로 시스템 또는 MySQL 오류 코드 확인
- 8장. 이벤트 로그
- syslogd
- 이벤트 로그
- 이벤트 통합기 설정
- 9장. LTT
- 아키텍처 컴포넌트 태스크
- 패키지와 설치
- 커널 빌드
- LTT 사용자-단계 도구 빌드
- 자료 수집
- 자료 수집 중지
- 추적 프로세스 분석 방법
- 자료 해석
- 하위 디렉토리를 묶는(tar) 추적 예제
- 자료 검토용 텍스트 도구
- 10장. 커널이 지원하는 프로파일러 oprofile
- 측정형 프로파일러
- 샘플링형 프로파일러
- 시스템 프로파일러 oprofile
- oprofile을 위한 유틸리티
- 일반적인 프로파일 단계
- 단일 실행 파일의 프로파일 검토
- 보고서 예제
- 프로파일 자료 저장
- 하드웨어 카운터
- Prospect 프로파일러
- 11장. UML
- UML: 커널과 루트 파일 시스템 소개
- 커널 패치와 빌드
- 커널 빌드
- 루트 이미지
- 파일 시스템
- gdb 세션 설정
- UML 시작
- 일반적인 gdb 세션
- GDB 스레드 분석
- 참고 사항
- UML 유틸리티
- 12장. 동적 프로브
- Dprobes의 독특한 특징
- 프로브를 사용하기 위한 일반적인 단계
- Kprobes: 커널 동적 프로브
- sys_open을 사용한 프로브 예제
- 기본 커널 모듈을 위한 Makefile
- 시스템에서 활동 중인 Kprobes 찾기
- sys_open에서 오프셋 찾기
- 점퍼 프로브
- Kprobes 활용
- 성공적인 Dprobes 적용 예
- 13장. 커널 디버거
- kgdb
- kdb
- 14장. 충돌 덤프
- 커널 환경 설정
- 커널 패치와 빌드
- 일반적인 충돌 덤프 단계
- LKCD 명령어
- 시스템 패닉과 충돌 덤프 확보
- Netdump: 클라이언트-서버 방식으로 동작하는 네트워크 충돌 덤프 기능
- diskdump: 충돌 덤프 기능
도서 오류 신고
정오표
1쇄 오류/오탈자
[ p140 아래에서 6행, 7행 ]
dev/fs → sys/fs
[ p142 3행, 4행 ]
/sys/kernel → sys/kernel
[ p143 7행 ]
/sys/kernel → sys/kernel
[ p144 4행 ]
/sys/kernel → sys/kernel
[ p145 1행 ]
/sys/vm → sys/vm
[ p180 5행 ]
arp명령으로 ARP(Address Resoultion Table)를 보고 변경할 수 있다.
→ arp명령으로 ARP(Address Resoultion Protocol) 테이블을 보고 변경할 수 있다.
[ p180 5-6행 ]
ARP 캐시로도 불리는 ARP는 → ARP 캐시로도 불리는 ARP 테이블은
[ p189 아래에서 5행 ]
역자주 '07_3' 삭제
[ p191 아래에서 5행 ]
/usr/src/linux/Documentation/Oops-tracing.txt
→ /usr/src/linux/Documentation/oops-tracing.txt
[ p198 아래에서 6행 ]
07_3 → 07_7
[ p210 표 ]
07_7 → 07_8
07_8 → 07_9
[ p415~416 ]
07_3 → 07_7
07_7 → 07_8
07_8 → 07_9
[ p140 아래에서 6행, 7행 ]
dev/fs → sys/fs
[ p142 3행, 4행 ]
/sys/kernel → sys/kernel
[ p143 7행 ]
/sys/kernel → sys/kernel
[ p144 4행 ]
/sys/kernel → sys/kernel
[ p145 1행 ]
/sys/vm → sys/vm
[ p180 5행 ]
arp명령으로 ARP(Address Resoultion Table)를 보고 변경할 수 있다.
→ arp명령으로 ARP(Address Resoultion Protocol) 테이블을 보고 변경할 수 있다.
[ p180 5-6행 ]
ARP 캐시로도 불리는 ARP는 → ARP 캐시로도 불리는 ARP 테이블은
[ p189 아래에서 5행 ]
역자주 '07_3' 삭제
[ p191 아래에서 5행 ]
/usr/src/linux/Documentation/Oops-tracing.txt
→ /usr/src/linux/Documentation/oops-tracing.txt
[ p198 아래에서 6행 ]
07_3 → 07_7
[ p210 표 ]
07_7 → 07_8
07_8 → 07_9
[ p415~416 ]
07_3 → 07_7
07_7 → 07_8
07_8 → 07_9