上川純一
日本ヒューレット・パッカード株式会社
コンサルティング・インテグレーション統括本部
2005/10/25
RCU導入でファイルアクセスにロックが不要に?
Linusが発表した2.6.14-rc1でのもう1つの大きな変更は、read/writeのシステムコールを処理する際にロックを必要としなくなったことではないでしょうか。
従来は、ファイルディスクリプタを利用する際に、毎回ロックが必要だったそうです。VFSの改良で、read/writeがspinlockを必要としなくなりました。この影響により、CPU数が多いシステムで複数のCPUを利用したプログラムが大量にファイルシステムI/Oを発行するような事態の改善が期待できるようです。
RCU(Read-Copy Update)機構は、2.6系列でLinuxカーネルに新しく導入された機能です。従来spinlockを使っていたような場面で、メモリの参照処理が書き込み処理より大幅に多いような場合に、うまく連結リストとガベージコレクションの原理を利用してspinlockを不要にし、メモリ参照処理の速度を高速化するものです。
編注:RCUについては、「全貌を現したLinuxカーネル2.6[第1章]」も参照。 |
RCUは、少しずついろいろな部分で採用が進んでいますが、単純にspinlockを利用する場合よりもメモリリークを含んだコードを書きやすいため、慎重なデバッグが必要です。
参考(カーネルツリー内): | ||
ファイルのロック方法についてのドキュメント | Documentation/filesystems/files.txt | |
RCUについてのドキュメント | Documentation/RCU/以下 |
gitのコマンドの一部がリネームされる
Linuxカーネルのソースコード管理ツールgitの開発は、相変わらず活発に続いています。gitのメンテナであるJunio C. Hamanoは、9月中旬にgitのコア部分の0.99.7をリリースしました。このリリースで、gitの一部のコマンドの名前がまた変更になりました。
今回の発表の内容で特に気になるのは次の2つです。
用語を整理して用語集を作りました。いままでcacheと呼んでいたものは、今後indexと呼ぶことにします。一部のコマンドは-cacheという名前が付いていましたが、今後は-indexという名前にします(git-checkout-indexなど)。また、今後は-pullではなく-fetchと呼びます。 |
注:iノードばかりいじっているカーネル開発者にとって、ディレクトリのファイル一覧はキャッシュかもしれませんが、一般的なユーザーの感覚では、それは索引です。 |
また、一部のシェルスクリプトとして実装されているコマンドは-scriptという名前で終わっていましたが、今後は-scriptを付けない名前に変更します。 |
相変わらずインターフェイスが安定しませんが、それに追い付くようにJeff Garzikが利用手順を丁寧にまとめています。彼がまとめてくれているおかげで、かろうじてみんなgitが使えるのではないでしょうか。
ただ、git grepなどの便利そうなコマンドが追加されていたりもするので、たまには腰を据えてマニュアルページをじっくり読んでみるのもよいのかもしれませんね。
参考リンク: | ||
Jeff Garzik 「カーネルハッカーのためのgit howto」 |
http://linux.yyz.us/git-howto.html |
Serial Attached SCSI対応をめぐる攻防
Luben Tuikovは、「I request inclusion of SAS Transport Layer and AIC-94xx into the kernel」というスレッドで、SAS(Serial Attached SCSI)の機構をカーネルにマージするように要求しました。既存のSCSIの「HCIL」(Host/Channel/ID/LUN)機構は時代遅れでSASを十分に表現できていない。だから書き直す必要があるだろう、と彼は主張しました。
ただ、彼のパッチは「既存のSCSI coreの修正ではなく、SCSI coreを一部独自に実装するような内容になっている」と既存のSCSI coreのメンテナたちが反論しました。
うまいことマージができる仲介役がいればうまく治まりそうなのですが、今後の動きに期待です。
-stableのアップデート
今月も順調に-stableアップデートが出ていました。カーネル2.6.13で大幅に変更になったPCI関連のコード修正とセキュリティアップデートが主な内容だったようです。
- 2.6.13.1(9月10日) 11パッチ
- raw_sendmsg DoS、sendmsg()のセキュリティ、オーバーフローの修正とそのほかの簡単な修正
- 2.6.13でlibpcapが動作せず、tcpdumpが動かなくなったことに関する修正
- PCIの初期化関連の修正
- 2.6.13.2(9月17日) 12パッチ
- fputに関するセキュリティ修正
- USBのftdi_sioのボーレートの修正
- PCI初期化関連の修正
- VMAの修正
- JFS関連のoopsの修正
- Masqueradeの変更によりDHCPが動作しなくなったことについての修正
- ネットワークドライバの修正など
参考リンク: | ||
2.6.13.yの gitツリー |
http://www.kernel.org/git/?p=linux/kernel/git/chrisw/linux-2.6.13.y.git;a=summary |
DynTicksの続報
先月お伝えしたDynTicksの開発はまだ続いているようです。Srivatsa Vaddagiriたちがx86用のパッチを改良して投稿しました。
Russel Kingは、「各アーキテクチャで内容を同期した方が良い」と主張しました。Srivatsa Vaddagiriはそれに対して「現在、x86用、s390用、arm用の3つの実装が存在するがまだ見ていないし、内容を同期するのは少なくとも1つのアーキテクチャでそれなりにまともに動くところまで開発してからでよいのではないか」と答えました。
しかし、どちらにしても調整は必要だろうということで、実装の比較などが始まりました。ただ、ARM用のSMP対応はまだRussel Kingの手元にあるだけで本流にマージされていないなどの状況もあり、簡単にはいかなかったようです。
果たして、x86、ARM、S390を含む全アーキテクチャで同じように動くDynTicksのインターフェイスは作成できるのでしょうか?
devfs削除との戦い
Greg Kroah-Hartman(以下Greg K-H)は、devfsを削除するための新しいパッチを投稿しました。
2.6.13ではdevfsが利用できなくなっていました(編注)が、実はカーネルの設定を行うmake menuconfigなどで利用する制御ファイル(Kconfigファイル)から関連個所を削除しただけでした。これによりdevfsを有効化できなくしていただけで、ソースコード自体にはdevfs対応部分が残っていたのです。
編注:devfsの削除については、Linux Kernel Watchの 「8月版 割り込み頻度変更で消費電力は低下するか?」 も参照。 |
ただ、2.6.13がそのような状態でリリースされたにもかかわらずあまり苦情は出なかったので、本格的にソースコードから削除する目的で登場したのがGreg K-Hの新しいパッチというわけです。devfsを利用しているユーザーから見ると、ndevfsは仕様が違い過ぎ、またudevは動作にユーザーランドを必要とするうえに動作負荷が高いといった問題があります。
devfsの削除に不満を持っている人はたくさんいるようですが、「消さない方がよい」とGreg K-Hを納得させるまでには至っていません。今後もdevfs愛用者たちの苦難は続きそうです。
(以上、敬称略)
2/2
|
|
|
||||
|
連載 Linux Kernel Watch |
Linux Squareフォーラム Linuxカーネル関連記事 |
連載:Linux Kernel Watch(連載中) Linuxカーネル開発の現場ではさまざまな提案や議論が交わされています。その中からいくつかのトピックをピックアップしてお伝えします |
|
連載:Linuxファイルシステム技術解説 ファイルシステムにはそれぞれ特性がある。本連載では、基礎技術から各ファイルシステムの特徴、パフォーマンスを検証する |
|
特集:全貌を現したLinuxカーネル2.6[第1章] エンタープライズ向けに刷新されたカーネル・コア ついに全貌が明らかになったカーネル2.6。6月に正式リリースされる予定の次期安定版カーネルの改良点や新機能を詳しく解説する |
|
特集:/procによるLinuxチューニング[前編] /procで理解するOSの状態 Linuxの状態確認や挙動の変更で重要なのが/procファイルシステムである。/procの概念や/procを利用したOSの状態確認方法を解説する |
|
特集:仮想OS「User
Mode Linux」活用法 Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説 |
|
Linuxのカーネルメンテナは柔軟なシステム カーネルメンテナが語るコミュニティとIA-64 Linux IA-64 LinuxのカーネルメンテナであるBjorn Helgaas氏。同氏にLinuxカーネルの開発体制などについて伺った |
|
|
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|