3月版 カーネルが無実のプロセスをkillし始めるとき
上川純一
日本ヒューレット・パッカード株式会社
コンサルティング・インテグレーション統括本部
2006/3/28
linux-kernelメーリングリスト(以下LKML)かいわいで起きるイベントを毎月お伝えする、Linux Kernel Watch。2006年2月はどのようなことが起きたのか、見てみましょう。
カーネル2.6.16でglibc 2.4対応
カーネル2.6.16のリリースへ向けて、Linusは-rc版を毎週出していました。その中で、*at関数やunshareシステムコールの追加が行われました。これらは、glibc 2.4のリリースに対応したもののようです。
openat、fstatatなどの関数は、ファイルディスクリプタをカレントディレクトリとし、ディレクトリの相対指定によるファイル操作を実現します。例えば、下記のようなフローで「directory/name」にあるファイルをオープンできるようになります。
fd = open ("directory", O_RDONLY); |
従来のopenのみしか使えない場合と比較すると、ルートディレクトリから順番にディレクトリをたどってパスを確認することが不要になり、処理が効率化します。これは、パス名が長大な場合に特に有効です。また、statしてからopenする間に起き得る競合を避けることができるなどの利点があるようです。Solarisに存在する同名のインターフェイスを参考にしたもののようです。
unshareシステムコールはcloneシステムコールと対を成し、プロセス間で共有しているリソースを共有しないようにできるものです。スレッドで共有しているメモリ空間や、通常forkしても共有されたままになるファイルシステムの名前空間などを分離できるようです。
これらの機能を利用するには、3月に入ってからリリースされたglibc 2.4への移行が必要です。そのため一般的に利用できるようになるまでには、まだしばらく時間がかかりそうです。
参考: | |
Linuxカーネル内のunshareのドキュメント Documentation/unshare.txt |
デバイスを管理するhaldがCD-Rの邪魔をする
2月もJoerg Schillingたちの議論は継続していました(編注)。あまり技術的な問題ではない話を中心に展開していますが、現状への不満や今後の解決方法といった趣旨の議論も含まれています。
編注:cdrecordの開発者Joerg Schillingが巻き起こしたSCSIの実装に関する議論。「Joerg Schilling大いに暴れる」(2月版 紛糾! 安定版カーネルの「あるべき姿」とは?)参照。 |
「システムに接続しているCD-Rデバイスすべてに関して“bus:target:lun”形式で一覧を確認する方法が必要だ」と強硬に主張するJoergですが、そこまでこだわっていない人たちは、Linux上ですべてのCD-Rデバイスを確認する別の方法を模索しています。
実は、既存の機構でCD-ROMデバイスの一覧を取得することが可能です。/proc/sys/dev/cdrom/infoファイルを確認すると、カーネルが把握しているCD-ROMデバイスの一覧が出力されます。ただし、この出力フォーマットがあまり機械処理しやすい形式でなく、また最近は「sysfsへ移行する」という流れがあるため、新しいインターフェイスが必要であるという方向に議論が展開しました。
最近発生している問題として、halとの関係があります。halは比較的新しい機構で、Linuxカーネルはこの仕組みを使ってデバイスを管理できるようになっています。しかし、haldが定期的にデバイスに対してポーリングを実施する影響で、CD-Rデバイスの書き込み失敗が発生しているようです。この問題は、haldを停止することで暫定的には解決するようです。
ただそうなると、haldを停止した状態でSCSIデバイスのデバイス名情報をどうやって取得したらよいのか、ということになります。この疑問に対してKay Sieversは、sysfsから情報を取得できることを例示しながら説明していました。
$ udevinfo -r -q name -p /block/sr0 |
1/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」コマンドです。
|
|