UNIX系OSでプログラミングをしていて、性能面で悩んだときには、gprofというプロファイラを使うと、簡単にプログラム中の関数呼び出し回数や関数実行時間などを測定することができます。gccのオプションに-pgをつければ良いだけということでとても簡単で便利です。 ところが、gprofで測定できるのは、あくまでもプログラム自体の処理だけで、カーネルやドライバまで含めた測定はできません。 このところ、ネットワークプログラムの10Gイーサーでの性能向上をしているのですが、10Gクラスになるとプログラム自体の処理はもちろんですが、カーネル内の処理やデバイスドライバでの処理もかなり大きな影響がでてきます。特に、ネットワークでの通信は、ネットワークデバイスでの出入りは並列化できなかったり、パケットの順序を入れ替えられないことがほとんどなど、どれだけCPUが並列処理に強くなっても、ネットワーク関連の処理
![Linux:カーネルまで含めたプロファイルの取り方:プログラマー社長のブログ:オルタナティブ・ブログ](https://cdn-ak-scissors.b.st-hatena.com/image/square/3d9067259b8b59a616222befed3d2e6edc79ae85/height=288;version=1;width=512/https%3A%2F%2Fblogs.itmedia.co.jp%2Fmt-static%2Fsupport%2Fassets_c%2Fuserpics%2Fuserpic-122-100x100.png)