책표지

책의 핵심

  1. 시스템 관리자로서 리눅스 시스템의 자원을 탐색하는 방법을 소개
  2. 커널이 자원을 이용하는 방법에 관해 소개
  3. 커널의 커스터마이징을 위해 제공되는 매개변수 설명
  4. TCP 프로토콜의 특성때문에 생길 수 있는 백엔드의 애로사항
  5. 커널 소스를 보면서 디버깅하고 성능 최적화

책을 읽기 위한 준비

이 책은 초심자를 위한 책은 아니다. 컴퓨터의 자원이 뭔지는 이해하는 중급 엔지니어를 위한 책이다. 그렇다고 너무 어려운 것도 아니다. 운영체제 개론을 읽어봤고 리눅스 환경에서 네트워크 문제로 하루 정도 뒹굴어본 경험, C와 파이선 코드의 플로우를 이해할 수준이면 된다.

만족스러운 점

  1. 컴퓨터 과학의 기초를 배울 때 이걸 어디다 써먹나 할 때가 많았다. 하지만 이 책에선 그걸 구체적으로 문제해결이나 커스터마이징에서 활용하는걸 잘 보여주어 흥미로웠다. 마지막으로 남은 퍼즐조각이 마침내 맞춰진 느낌.
  2. 저자가 수정하는 파라미터가 커널 어디서 동작하는지 알려주기 위해 부단히 코드를 보여주는데 그걸 보고 있으면 응용만 다루느라 신경쓰지 못했던 OS 자원들의 라이프사이클이 적나라하게 느껴지는 게 좋았다. 더 이상 커널의 동작이 미지의 세계가 아니게 된다.

어떻게 응용할것인가

책에서 자원을 탐색하고 트러블슈팅을 하는 방법은 곧바로 써먹을 수 있으니까 문제가 없다. 그런데 커널 파라미터가 문제다. 기본값이 통상적인 활용에서 최적화된 경우거나 배드케이스에서도 괜찮은 퍼포먼스를 보여주기 때문에 설정되었을텐데 과연 그걸 수정해서 얻는 이익은 얼마나 될까.

이 책에서도 그런 염려 하는지 퍼포먼스를 떨어트릴 위험에 대해 꾸준히 경고하면서 잘 사용하는 방법에 대해 이야기를 하고 있다. 이런 염려가 없이 확실하게 선택할 수 있는 값들도 있다. 예를 들어 I/O 스케쥴러를 데드라인으로 쓸지 cfq로 쓸지는 서버의 기능에 따라 확실하고 쉽게 갈린다. 하지만 그 이상으로 NUMA, SWAPE 이런 것들은 변경에 대한 확실한 리턴이 있을 때 접근해야겠다는게 내 결론이다. (소규모 환경에선 이것까지 건드릴 여유도 없을것이다)

Categories:

Updated:

Leave a comment