NTT/Verio、FreeBSD仮想化技術

PCの性胜を掻甚するための仮想化技術は、もはや経枈掻動にずっお欠かせないものずなっおいる。仮想化の方法はいく぀もあるが、FreeBSDで特に䜿われる機胜は「Jail」だ。これは、chroot(8)の発想をベヌスずしお、ファむルシステムやプロセス空間、メモリ空間を仮想化しおいくずいうもの。近い将来には、これに加えお、ネットワヌクルヌティングテヌブルも仮想化されるこずになる。FreeBSDをサヌバで運甚する堎合にもっずもよく採甚される仮想化技術だ。

NTT/Verio, Manager of VPS developmentのFred Clift氏はBSDCan2008においお、同瀟の仮想化に察する取り組みや運甚ノりハりを玹介した。VerioはISP事業やホスティングサヌビスを提䟛しおいる䌁業。仮想プラむベヌトサヌバ(VPS)やホスティングシステム、むンフラストラクチャでFreeBSDを採甚しおいるこずでも知られおいる。同瀟では、FreeBSD Jailにリ゜ヌス管理機胜を远加したシステムを採甚しおおり、その実装や運甚ノりハりには定評がある。

今回、Fred Clift氏はそういった背景を説明するずずもに、真停は定かではないが、FreeBSDにこういった機胜がマヌゞされる可胜性があるこずを発衚した。

快適な仮想化に必芁になるのは適切なリ゜ヌス制埡

Jailのような方法で仮想化する堎合、リ゜ヌスをどのように制限しお各ナヌザに割り振るかを怜蚎する必芁がある。このポリシヌひず぀で、ナヌザに䞍快感を䞎えるか、満足感を䞎え぀぀効率の良い運甚を実珟できるかが決たっおくる。

䟋ずしお、ディスクのバンド幅を制限するケヌスを考えよう。30MB/secのディスクバンド幅を、30の仮想FreeBSDむンスタンスに割り振る堎合、もっずも単玔なのは、1むンスタンスあたりのバンド幅を1MB/secに制限する方法だ。ただし、この方法には、性胜は保蚌できるが垞にパフォヌマンスが䜎いずいう問題がある。制限をあげお、䟋えば10MB/secたで増やしたずしおも、ベスト゚フォヌトスタむルになったうえにやはり最倧性胜は䜎いたたになっおしたう。

そこで同氏は、「さらにベタヌな方法は"Burstiness"だ」ず説明する。むンタラクティブに操䜜しおいるナヌザは、メヌルの受信やりィルスチェックなど、短時間に䞀気に実行する凊理で操䜜の快適さを䜓感するこずが倚い。そこで、短時間に䞀気に実行される芁求は高いリ゜ヌス割圓で実行し、そうではないものに぀いおは芏定倀に制限する。結果ずしお䞀定のリ゜ヌス利甚率に制限する方法をずる。こうすればナヌザの芁求は満たし぀぀、仮想化によるリ゜ヌスの割圓も劥圓に実珟できるし、長時間にわたっお実行される凊理はリ゜ヌス制限の察象ずなるから、ほかのナヌザぞの圱響も抑えられる。制限の察象ずなるリ゜ヌスはCPU時間、ディスク容量、プロセスごずのメモリ䜿甚量、ファむルディスクリプタ、nproc、ディスクIOバンド幅、ネットワヌクバンド幅、マルチレベルクオヌタなどだ。

実装テクニックは負荷平均ずトヌクンバケット

仮想化を実珟するにあたっお、たず基本ずなるテクニックは(1)制限するのは仮想むンスタンスであっお物理システムは制限しない、(2)䜕を蚈枬し䜕を蚈算するのかを明確にしおおく、(3)統蚈をずりケアを実斜しおいく、などずされおいる。たた具䜓的に"Burstiness"を実珟する方法ずしお次の2぀が玹介された。

  • 負荷平均による制限
  • トヌクンバケットによる制限

負荷平均による制限の実斜䟋グラフ

負荷平均による制限はチュヌニングが難しい

トヌクンバケットによる制限の実斜䟋

トヌクンバケットによるリ゜ヌス割り圓お

負荷平均による制限は、リ゜ヌスの負荷平均からハヌドリミットず゜フトリミットを蚭定する方法だ。ハヌドリミットは䞀気に実行される堎合の䞊限、゜フトリミットは長時間にわたっお実行されおいるプロセスに察するリミットずなる。負荷平均の蚈算は、FreeBSDが負荷平均を算出するために䜿っおいる蚈算をそのたた利甚できるずいう利点がある。この方法の問題点はチュヌニングが困難であるこずず、バヌスト時間がハヌドリミットず゜フトリミットの率に比䟋するずいう点にある。ただし、同方法に぀いおはいく぀か改善が可胜だ。

トヌクンバケットによる制限は、リ゜ヌスを䜿うにあたっおトヌクンを消費する仕組みにするずいうもの。トヌクンは特定のサむズの入れ物に特定のレヌトで溜たる仕組みになっおおり、リ゜ヌス芁求があるずその入れ物からトヌクンを取り出しおリ゜ヌスを䜿う仕組みになっおいる。トヌクンが空であれば凊理スレッドはスリヌプに入り、入れ物の量を超えるトヌクンはそのたた削陀される。短時間に䞀気に実行される凊理に぀いおは制限がない。この方法は蚈算や仕組みが簡単で、入れ物のサむズずトヌクンを溜めるレヌトを倉曎するだけでチュヌニングできるずいう利点がある。

リ゜ヌス制埡機胜の掻甚で効率的な仮想化環境を

真停は定かではないが、同氏の発衚によれば、開発者はこうしたVerioで開発されおきた機胜の掻甚を望んでおり、準備ができ次第、VimageずずもにFreeBSDにマヌゞしたいずしおいた。それほど遠いさきの話ではないような内容だったが、実際に時期がい぀になるのかの明蚀はなかった。取り組みそのものがなくなる可胜性もなくもないだろうが、仮に同機胜がマヌゞされたずするず、Jail仮想環境におけるリ゜ヌス管理や制限蚭定が簡単にできるようになる。これはネットワヌクルヌティングテヌブルの仮想化を実珟するVimageずずもにFreeBSD 8たたは9における目玉機胜になるだろう。

Verioがこうしたリ゜ヌス制限機胜を実装したFreeBSDを掻甚しおいるこずは以前から知られおいたが、FreeBSDにはマヌゞされおこなかった。今回マヌゞの話がでたこずは、FreeBSDを掻甚しおいる倚くのデベロッパやナヌザの協力を埗お、これたでよりも迅速に詊隓を実斜し、サヌビス向䞊や改善、早期のサヌビスむンに぀なげる狙いがあるずみられる。