도서명 : 리눅스 커널 HACKS: 퍼포먼스 개선, 개발효율 향상, 저전력화를 위한 테크닉
저자 : 이케다 무네히로 외 공저 / 진명조 역
발행일 : 2014년 4월 10일
ISBN : 9788994405186
정가 : 29,000 원
구매하기 : 강컴닷컴 | 인터파크 | YES24


 



책 소개

 인터넷상에는 리눅스에 관한 정보가 넘쳐나고 있지만, 대단히 복잡하게 진화한 리눅스 커널을 능숙하게 사용하거나 리눅스 커널 개발에 참가하는 데 필요한 정보는 충분히 얻을 수 없는 현실에서 리눅스 기술자가 특히 흥미를 가지는 항목을 선택해서 한 권의 책으로 정리했다. 저전력화나 가상화에 관한 설명은 현재 시장의 요구에 맞으며, 고도화된 커널의 프로파일링 기능도 커널개발자의 필수 도구가 될 것이다.

  이 책은 진화된 리눅스 커널의 많은 기능 중에서 수요가 있는 것, 매우 흥미로운 주제를 선 정해서 이것들에 대해 설명함과 동시에, 내부 동작이나 원리에 대해서도 해설하고 있다. 이를 능숙하게 다루기 위한 툴이나 설정방법, 튜닝에 대해서도 폭넓게 설명한다.

 리눅스 커널은 오픈소스 소프트웨어이며 누구라도 개발에 참가할 수가 있다. 리눅스 커널의 코드는 수많은 노력과 시간이 깃들여있다. 각 분야에 대해서는 전문지식을 가진 메인테이너가 오랜 기간에 걸쳐 관리함으로써 계속해서 세련되어져 가고 있다. 메일 기반으로 개발이 이루어지고 있으므로 논의를 주고받거나 현재 코드에 이르게 된 경위를 볼 수도 있다. 리눅스 커널 코드를 봤을 때 그 지혜나 연구에 감탄함과 동시에 그 당시의 노고가 전해져 오는 듯할 때가 있다. 이 책을 계기로 꼭 그 훌륭한 세계에 이르러서 많은 커널 해커가 탄생하기를 기원한다.

 

도서 특징 

 기능을 능숙하게 다루는 데 있어 필요한 정보나 명령도 다루고 있다. 커널 이외의 것이라도 관련된 것이라면 애플리 케이션에 대해서도 다루고 있다. 기본적으로는 TUI를 기반으로 설명하고 있지만, 일부는 GUI 해설도 포함하고 있다.버전은 주로 리눅스 커널 2.6.18부터 집필 시점에서 최신인 리눅스 커널 3.0까지의 정보를 싣고 있다. 일부에서는 Red Hat Enterprise Linux 4(RHEL4 : 리눅스 커널 2.6.9 기반)의 기능도 싣고 있다. 동작 확인은 업무에서도 많이 이용되고 있는 RHEL이나 누구나 이용할 수 있는 Fedora, CentOS 등으로 시행하고 있다.

1장 『커널 입문』에서는 커널 Hack을 향해 내딛는 첫걸음으로써 필요한 이러한 사항들과 함께 리눅스 커널 특유의 기법에 대해서도 설명하도록 한다.

2장 『리소스 관리』에서는 리눅스 커널에서의 리소스 관리 기능에 대해 몇 가지를 설명하게 된다. 특히 리눅스 커널 특유의 Cgroup에 의한 리소스 제어는 가상화에서의 리소스 제어도 담당하고 있는 중요한 기능이다.

3장 『파일시스템』에서는 RHEL6 등에서 표준 파일시스템으로 채택된 ext4의 사용방법 및 튜닝, ext2/ext3로부터의 이행방법에 대해서 적고 있다. 또한, I/O의 벤치마크를 수행하기 위한 fio 및 유저 공간의 파일시스템 FUSE를 소개한다.

4장 『네트워크』에서는 네트워크에 관한 커널의 기능에 대해 설명한다. TUN/TAP 디바이스, 브리지 디바이스, VLAN 디바이스, Bonding 드라이버와 네트워크 스케줄러, dropwatch에 대해 다루고 있다.

5장 『가상화』에서는 KVM 및 Xen을 이용한 가상화 기술에 대해 설명한다. 컴퓨터의 역사를 살펴보면 다양한 것에 대한 가상화가 이루어져 왔다. 스케줄러에 의한 CPU 리소스 가상화나 메모리 관리에 의한 가상 메모리 등도 가상화의 일종이다. 여기서 다룰 가상머신 기술은 CPU, 메모리, I/O 디바이스를 포함한 시스템 전체를 가상화하는 기술이다. 저전력화 등을 목적으로 한 시스템 리소스 통합뿐만 아니라 레거시 OS 이용이나 동적 리소스 생성을 위해서도 이용된다. 여기서는 가상머신을 최대한 이용하기 위한 테크닉을 소개한다.

6장 『저전력화』에서는 요즘의 컴퓨터는 다양한 저전력화 기능이 탑재되어 있지만, 어디를 어떻게 손대야 저전력화인지 잘 모르는 때도 많이 있다. 여기서는 저전력화 지식을 높이기 위해 리눅스의 저전력화에 대해 소개한다.

7장 『디버그』에서는 커널 디버그 기능에 대해 설명한다. 주로 freeze를 검출하는 watchdog과 커널 크래시 덤프 기능에 대해 기술하고 있다.

8장 『프로파일링, 트레이스』에서는 perf tools를 통한 성능분석, ftrace를 사용한 동작분석, SystemTap을 이용한 프로그래밍 가능한 트레이싱(programmable tracing) 등을 설명한다. 물론 이러한 기능은 커널 성능분석만이 아니라 유저 프로그램 분석이나 시스템 트러블슈팅에도 유용하다.

 

저자 소개

『감수자』 다카하시 히로카즈(高橋浩和)

홋카이도 대학 전자공학과 졸. VAX 전성시대부터 각종 UNIX 계열 운영체제의 기능 강화/커널 튜닝, 대규모 시스템용 리얼타임 OS 설계 등에 몰두. ISP의 서버 구축을 계기로 리눅스에도 본격적으로 몰두하기 시작했다. 아직도 소스가 없는 프로그램(OS도 포함)은 믿음을 갖지 못한다.

이케다 무네히로(Munehiro IKEDA)

대학생 무렵, X68000의 gcc가 순정 컴파일러보다도 몇 배 빠른 코드를 생성하는 것을 목격한 뒤에 자유 소프트웨어/오픈소스 소프트웨어의 가능성을 확신한다. 그 후 찻집 점원, 생산기술자, 하드웨어 엔지니어 등 우여곡절을 겪은 후에 리눅스 커널 개발에 관여하게 된다. 회사도 국가도 뛰어넘어 세계 최고의 기술자와 경쟁하는 것이 이 세계의 가장 매력적인 부분이라고 느끼고 있다. 현재 미국거주. 취미는 음악연주. 드러머이자 보컬리스트지만 최근 몇 년은 베이스에 몰두하고 있다. 기술자로서의 실력과 마찬가지로 아직은 잘 나가고 있지 않지만, 본래 포기하지 않는 타입.

오오이와 나오히로(Naohiro Ooiwa)

미라클 리눅스 주식회사 소속의 소프트웨어 엔지니어. 대학에서는 휴대전화 등 안테나로 수신하는 무선 고주파수를 다루는 아날로그 회로를 연구했으며 소프트웨어를 전혀 모른 채 리눅스 업무에 종사함. 사회인이 되기까지 거의 책을 읽은 적이 없지만, 최근에는 잡지도 집필하고 있다.『Debug Hacks』저자로, 오라일리 재팬에서 Hacks 시리즈 두 권째 집필.

시마모토 히로시(Hiroshi Shimamoto)

자칭 소프트웨어 엔지니어. 문제 분석이나 디버그를 전문으로 하고 있다. 트러블슈팅에 있어서 로그나 코어덤프로부터 소프트웨어의 오류를 찾아내는 것이 주된 업무라고 말할 수 없는 것은 아니다. 필연적으로 바이너리나 CPU 동작까지 고려한 작업이 많고 x86 아키텍처나 스케줄러 관련된 커뮤니티 활동을 하고 있다. 그러나 최근에는 커뮤니티 활동을 그다지 많이 하지 않고 현재는 가상화 관련된 활동을 계획하고 있다.

다케베 아키오(Akio Takabe)

Xen, KVM 등 가상화 관련 오픈소스 커뮤니티에서 개발에 참가. 주로 IA64 아키텍처나 RAS 계열, PCI path-through 개발을 담당. 오픈소스 커뮤니티에서 친해진 엔지니어가 저전력화 기술을 잘 아는 엔지니어여서 저전력화에도 관심을 두고 있다. 현재는 Ruby on Rails로 클라우드 관련 소프트웨어를 개발 중. 완성되지 않은 프로그램을 손대는 것이 취미.

히라마츠 마사미(Masami Hiramatsu)

리눅스 커널트레이스 관련 메인테이너. perf나 ftrace의 동적 이벤트를 유지보수하고 있다. SystemTap 개발에도 참가하고 있는데 최근에는 게임 프로그래밍 등 전적으로 트레이스 이외에 시스템SystemTap 용도를 넓히는 데 열심이다. 주로 사용하는 것은 bash와 vim이지만 hjkl로 커서를 움직이지는 못하는 vim 유저. Ubuntu와 Fedora를 애용하고 있다. 현재 관심분야는 ARM Linux, Btrfs 등.

 

역자 소개

진명조

현재 씨디네트웍스에 근무 중이며, IT 산업의 미시적인 영역과 거시적인 영역을 아우르는 통찰력을 갖게 되기를 꿈꾸고 있고, 최근 모바일 생태계를 향해 작은 보폭으로 한걸음씩 내딛고 있다.

옮긴 책으로는 『DEBUG HACKS』(와우북스)를 비롯해 『프로세서를 지탱하는 기술』 『대규모 서비스를 지탱하는 기술』 『클라우드의 충격』 『서버/인프라를 지탱하는 기술』 등이 있다.

 

차례

1장 커널 입문

01. 리눅스 커널 구하기

02. 리눅스 커널 컴파일

03. 커널 모듈 작성법

04. Git 사용하기

05. checkpatch.pl로 패치의 서식 체크

06. localmodconfig로 커널 컴파일 시간 단축

2장 리소스 관리

07. Cgroup, Namespace, Linux 컨테이너

08. 스케줄링 정책

09. RT Group Scheduling과 RT Throttling

10. Fair Group Scheduling

11. cpuset

12. Memory Cgroup으로 메모리 사용량 제한

13. Block I/O 컨트롤러로 I/O 우선순위 설정

14. 가상기억 서브시스템 튜닝

15. ramzswap

16. OOM Killer의 동작과 원리

3장 파일시스템

17. ext4 이용하기

18. ext4로의 이행

19. ext4 튜닝

20. fio를 이용한 I/O 벤치마크

21. FUSE

4장 네트워크

22. 네트워크 대역제어

23. TUN/TAP 디바이스

24. 브리지 디바이스

25. VLAN

26. bonding 드라이버

27. Network Drop Monitor

5장 가상화

28. Xen 사용하기

29. KVM 이용하기

30. DVD를 사용하지 않고 OS 인스톨하기

31. 가상 CPU 할당방법을 변경해서 성능 높이기

32. Extended Page Tables(EPT)를 이용해서 게스트OS 성능 높이기

33. IOMMU로 게스트OS 고속화

34. IOMMU+SR-IOV로 게스트OS 고속화

35. SR-IOV로 대역제어

36. KSM으로 메모리 절약하기

37. 게스트OS의 디스크 마운트

38. 게스트OS에서 가상머신 환경 식별하기

39. 게스트OS 디버그하기

6장 저전력화

40. ACPI

41. ACPI S state 이용하기

42. CPU에 의한 저전력화(C, P state) 이용하기

43. PCI 디바이스의 Hot-Plug

44. 가상화 환경에서의 저전력화

45. 원격에서 머신 전원 관리

46. USB 전력관리

47. 디스플레이의 저전력화

48. 네트워크 디바이스에 의한 전력감소

49. 키보드의 LED를 꺼서 전력감소?

50. PowerTOP

51. 하드디스크의 저전력화

7장 디버그

52. SysRq키(Magic System Request Key)

53. diskdump를 사용해서 커널 크래시 덤프 얻기

54. Kdump를 사용해서 커널 크래시 덤프 얻기

55. 크래시 테스트

56. IPMI watchdog timer

57. NMI watchdog timer

58. soft lockup

59. crash 명령

60. 코어덤프 필터

61. 커널 크래시 덤프에 포함된 유저모드 프로세스의 프로세스 코어덤프 생성

62. lockdep으로 시스템 데드락 확인

63. 커널의 메모리해제 누수 검출

8장 프로파일링, 트레이스

64. perf tools를 사용한 프로파일링 #1

65. perf tools를 사용한 프로파일링 #2

66. 커널 및 프로세스의 다양한 프로파일링

67. 커널의 함수호출 트레이스

68. ftrace의 플러그인 트레이서

69. 커널의 동작 이벤트 기록

70. trace-cmd를 이용한 커널 트레이스

71. 동적 트레이스 이벤트를 커널에 추가하기

72. SystemTap을 사용한 커널 트레이싱

73. SystemTap으로 대화형 프로그램 작성

74. SystemTap의 스크립트 재이용

75. SystemTap 운용

색인