第67回カーネル読書会、ビデオ公開
第67回カーネル読書会のセミナー部分のビデオを公開した。今回は
お題: glibc malloc について
発表者:小崎さんmalloc関数はlibcの中でもっとも使用頻度が高い関数の一つでありながら、そ
の実装の詳細は意外なほど知られていません。Unix誕生当初のプログラミングスタイルでは、ほとんどのデータはスタックと
グローバル変数に格納されており、mallocの使用頻度は低かったようです。し
かし、今日ではGUI、スクリプト言語、C++といったmallocを多発するソフトウェ
アが極めて一般的になり、mallocの性能の重要度は増しています。こうした点に注目して、素朴な malloc では何が問題だったのか。また、
glibc malloc がどういった点に注力してチューニングされているのか。といっ
た点を説明できれば。と思います。
資料はYLUGのホームページからダウンロードできる。
ビデオ撮影、編集、Googleへのアップロードはびぎねっとの伊藤さんのご尽力による。どうもありがとうございました。
梅田望夫氏との対談イベントもそうだったのだが、こうやってカーネル読書会とか各種勉強会、セミナーとかをどんどん無償でネットワークにアップロードするというスタイルが一般化するとまた違った可能性が広がっていくようでいて大変面白い。
内容はmallocに関する技術的な詳細の説明である。mallocという関数は厳密にいえばCのライブラリ関数なので、カーネルのシステムコールではないのだが、一般アプリケーションから非常によく使う関数の一つであり、カーネル読書会の題材としてはぴったりのものである。メモリ管理というのはまさにカーネルの最も重要な機能の一つなので、カーネルやライブラリがそれをどのように実装しているかを理解することは大切である。
オープンソースなので実装の隅々までオープンに議論できるのがうれしい。カーネルの専門家ではなくても、アプリケーション開発者の立場から、いろいろ質問したり、突っ込みを入れたりできるのがうれしい。カーネル開発者(ライブラリ開発者)にとってみれば自分が提供するサービスがどのように利用されているかの声を聞けて双方にとって有益な情報交換になる。
今回もmalloc/freeのコストについてRubyの笹田さんがRubyでのメモリ管理の観点から細かい突込みを入れていたが、OSとアプリケーション(この場合はプログラミング言語の実装)の境界を越えて、いろいろ議論できるのが楽しい。
いっそのこと、カーネルやライブラリのレイヤではなく、もう少し上のレイヤ(例えばスクリプト言語とかRDBMSとか)で自前のメモリ管理機能を持ってがしがし最適化するのもありなんではないかというような議論も当然でる。ライブラリは汎用化しなくてはいけないので、ある用途に徹底的に最適化することはできないがRubyならRuby、PerlならPerl、あるいはPostgreSQLならPostgreSQLなりのメモリ管理システムを持ち、カーネルに独立して徹底的にメモリ管理を最適化する。キャッシュミスを削減したりマルチコア、マルチスレッドに最適化するなどいろいろなアイデアが出てきそうである。
このような議論は、カーネル、ミドルウェア、スクリプト言語といった縦串をまたがった議論になる。オープンソースなので自由にその境界線を設定できる。一つの場所に集い自由に議論をする。そこにソースコードがあるからこそそれが自由にできるのである。
小崎さんのブログ、
革命の日々!
カーネル読書会で講演してきました
未来のいつか/hyoshiokの日記
第67回カーネル読書会




コメント