FUSE & CPUSETS

Linux Kernelの2.6.11がリリースされた*1.Slashdotの記事によると,次の2.6.12は,FUSECPUSETSが目玉機能なんだそうな.それぞれを簡単に調べてみた.

FUSE

FUSE(Filesystem in USErspace)*2は,Gmailファイルシステムとして利用してしまおうという,GmailFS*3で利用されていた技術のようだ.通常のファイルシステムは,カーネルの一部として実装されているが,FUSEというカーネルモジュールを利用すると,その名の通り,ファイルシステムユーザランドで実装することができる.

ユーザランドでの実装を可能とすることで,若干のオーバーヘッドと引き換えにファイルシステムの実装が容易になり,実験的なファイルシステムを簡単に実装することができるようになる.実際,GmailFSの作者は,Pythonベースで2,3日で作ってしまったらしい.FUSEを利用した他のファイルシステムには,EncFS - Encrypted Filesystem module for Linux*4という暗号化ファイルシステムもある.

UNIXの世界がファイルシステムを中心に回っているところがあるので,面白いファイルシステムを構築すると,GmailFSのように簡単に様々な用途で使うことができるようになる.分散ファイルシステムや暗号化ファイルシステムなどで,面白いことがいろいろできそうだ.

CPUSETS

CPUSETS*5とは,

A cpuset is a kernel object to which can be assigned a set of CPUs, and that can be attached to processes. When a cpuset is attached to a process, the latter will run only on the CPUs that have been attached to the cpuset. This page describes the BULL CPUSETS: i.e CPUSETS with added migration and virtualization patches.

ということで,要するに,あるプロセスを特定のCPUにアタッチすることができるようにする機能のようだ.普通のSMPのようなモデルでは,機能分散してもあまり意味はないんじゃないかな?と思ったが,公式ページや,SGIの資料「スケーラブル Linux? の開発と実現」をよく見ると,NUMA*6向けの機能のようだ.

確かにNUMAのようなモデルでは,プロセス間の関係によって,CPUの割当てを調整したいことは発生するだろうけど,かなり綿密な設計が必要となるだろうし,数値計算屋さんにしか縁がなさそうな機能だ.普通のサーバ屋がNUMAのハードを触る日はやってくるのだろうか?