2012年12月18日火曜日

Oracle Linux 第5回 Unbreakable Enterprise Kernel (UEK)

Oracle Linux の主な特徴として、「ダウンタイムゼロでパッチの適用ができる Ksplice」を紹介しましたが、今回はもう一つの大きな特徴である、Unbreakable Enterprise Kernel (UEK) についてご紹介したいと思います。

Oracle Linux は Red Hat Enterprise Linux (RHEL) 互換 OS ですが、RHEL 互換 kernel とは別に Oracle 社が独自に改良を加えた Unbreakable Enterprise Kernel (UEK) が含まれています。

この 2つは両者共に標準でインストールされますが、別々に独立しており、OS Boot 時にいずれかを選択する、いわゆるデュアルブートの状態になっています。

GRUB 画面でいずれかを選択可能



UEK の大きな特徴としては、RHEL 互換 kernel 上で作成された既存アプリケーション資産のバイナリの互換性はそのままに、RHEL よりも新しいメインライン kernel の機能を利用できることが上げられます。

RHEL6 の kernel ベースが 2.6.32 系であるのに対し、UEK では 3.0.16 をベースとしており、例えば以下の様な 最新の機能を活用することが可能です。 (便宜上 uname などの表示は 2.6.39 と表示される)

  • Btrfs
  • Cgroups
  • Linux Containers(LXC)
  • Transcendent Memory
  • Ksplice
  • DTrace for Linux


また、UEK は別途、様々なネットワークドライバやストレージドライバの更新が行われています。

参考: Oracle Linux Release Notes
Unbreakable Enterprise Kernel Release 2 Driver Updates from Update 2

さらに UEK では、デフォルトで kernel にロードされるモジュールが異なることや、RHEL 互換 kernel とは異なるチューニングが施されている点にも注目です。

例えば、UEK は Oracle Database をはじめとする Oracle 製品 (Linux) の開発プラットフォームになっていることもあり、標準で OCFS2 や OracleASM、Network Block Device (NBD) のモジュールが読み込まれ、OracleVM の基板となっている Xen 関連のモジュールも、より多くロードされます。

※ OCFS2 や NBD に関しては、既に Linux kernel に取り込まれていますが、RHEL および RHEL 互換 kernel では明示的に無効化されています。

RHEL kernel(左) と UEK (右) の modprobe 結果の diff


Kernel I/O スケジューラに関しても初期値が異なります。

RHEL および RHEL 互換 kernel では cfq がデフォルトであるのに対して、UEK では deadline がデフォルトで選択されます。

Completely Fair Queuing (cfq) は公平性を目指したスケジューラ です。 このアルゴリズムは各スレッドに対し、 I/O リクエストを送信できる時間間隔 (タイムスライス) を付与します。この方法 により、各スレッドは I/O スループットを公平に共有することができるようになっています。
deadline は遅延回避を重視する I/O スケジューラです。それぞれの I/O 要求には期限が設定され、通常は セクタ番号を基準にしてキュー (読み込みおよび書き込み) 内の並べ替えが 行なわれます。要求が期限切れにならない限り、このような 「sector」 キューを使用します。期限切れになるものが発生すると、期限切れの要求が なくなるまで 「deadline」 キューからの処理を実施します。 一般的に、このアルゴリズムでは、書き込みよりも読み込みを優先して処理します。 また、この I/O スケジューラは、複数のスレッドが読み書きを行なう種類の処理で、 公平性が必要とされない処理の場合に、 CFQ よりも優れた性能を提供します。たとえば SAN から変更処理で読み出しを行なうような 場合や、データベース (特に 「TCQ」 と呼ばれる機能を使用するディスク) などで有効です。

上記の様な特性から、ハイパフォーマンスを求められるデータベースや仮想化のチューニングをする際、真っ先に検討されるのが、この I/O スケジューラの変更です。


このように、UEK は単に新しいだけでなく、データベースを知り尽くした Oracle による細かいチューニングや、便利なモジュールが標準で含まれております。

UEK は、バイナリの互換性もあることから、パッと見、通常の RHEL 互換 kernel とあまり変わり映えがないように思われがちですが、掘り下げていくと Oracle Linux ならではの機能やチューニングがなされていることがわかります。

0 件のコメント:

コメントを投稿