動画:Linuxカーネルの読み方

昨日に引き続き、TechTalk.jpの載っていた、Linuxカーネルの読み方の動画を見てみました。

個人的には、仕事でLinuxを使うことはあっても単純にプラットフォームとして使っているだけですし、Linuxカーネルを読む気もなかったのですが、聞いてみると色々と参考になることがありました。

カーネルの読み方のポイントとして

  • やみくもに端から全部読もうとするのでなくて、何か目的を決めて読む
  • 目的に沿って読むポイントを検索ツールなどで絞れば、予想していたよりも簡単に読める
  • 最初は読んでいる部分の全体像を把握しながら、次第に深く読んでいく
  • 主要なデータ構造(構造体など)を先に把握しておく
  • ソースを読む前に、書籍や資料で該当機能の概要を把握する

などがあげられています。これらは、先日からやっているFreeMindのソース読みでも共感できるところがありました。

あと、カーネルを読むと負荷分散に強くなるという話の中で、システムの性能問題に対処するときには、その原因をちゃんと特定した上で対処を決定する必要があると言われていましたが、これも同感です。

世の中、自分の経験側などから、原因がよくわからないのに問題だと騒いだり、対処しようととしたりする人が結構います。たとえば、システムが重いからといって闇雲にメモリやディスクを増設しようとしたり、CPUの使用率が高いだけで即対策を要求する人など。

うちの職場でも、以前にサーバーの稼動監視を委託していた会社の人が、Linuxサーバーのメモリーが足りなくなっているとアラートを上げてきたのですが、よく話を聞いてみるとfreeコマンドのfreeの表示量が減っているだけだったなんてことがありました(Linuxってメモリーをディスクキャッシュにどんどん使うので、ある程度負荷のかかるシステムではメモリー的な問題が無くてもfreeの値ってすぐに減ってしまうんですよね)。

こういうときにカーネル読んだりして、OSの構造に関するある程度深い知識を習得していると、ちゃんと根本的な原因を捕らえて適切な手が打てるということですね。