最終回 メインフレームLinuxの今後


日本アイ・ビー・エム株式会社
システムズ&テクノロジー・エバンジェリスト
北沢 強
2009/2/16

アイコン 最近のメインフレームLinuxの機能強化(続き)

ゲストOSとホストOSのメモリ連携

 z/VMのような仮想OSも、実際のOS同様、仮想メモリが実装されておりページング処理を行います。その上でゲストOSとして稼働するLinuxにも仮想メモリが実装されており、ページング処理を行っています。このような仮想化環境で起こる問題に「ダブルページング」があり、以下のような症状が挙げられます。

  • Linuxはアクセスされないメモリだと思ってページアウトしているが、z/VMはそのことを知らないので実メモリに常駐している(メモリ効率の悪化
  • Linuxにとって、アクセス頻度は低いが重要なデータがあるメモリページなので常駐しておきたい部分が、z/VMはその重要性を知らず、アクセスされないメモリだと思ってページアウトしてしまう(システムの不安定要因

 ホストOSであるz/VMからは、ゲストOSであるLinuxの中のメモリ管理がどういう状況なのか見えていないため、お互いに勝手にメモリ管理を行います。こうした現象は、その結果引き起こされるものです。

 Linuxカーネルにとっては重要なメモリページなのに、アクセス頻度が低いからといってz/VMがページアウトしてしまうと、ページ不在によってページインするまで数ミリ秒(ディスク速度)の遅延が生じ、それがLinuxカーネルを不安定にさせる要因になりかねません。

 このダブルページング問題は、メインフレームでは「ページハンドシェイク(Page hand shaking)」という手法を使って1970年代に解決しています。ホストOSとゲストOSの間で「握手」して、互いの無駄を省くように連携しようというものです。

 実装としては、z/VM側とLinux側の両方で対応機能が必要になります。さらに処理を効率化するには、ハードウェア命令で実装することが有効です。

 ここで、ページハンドシェイクに関連して、メインフレームLinuxに実装された機能を紹介しておきましょう。

・疑似ページ不在(pseudo page fault)の処理

 Linuxメモリでページ不在(page fault)が起きたとき、z/VMは該当するページを実メモリに読み込むまでLinux全体をウェイト状態にしてしまいます。しかしながら、ページ不在を起こしたプロセス以外は動き続けられるべきなので、ハンドシェイクによって、Linux全体を停止させずに特定プロセスだけウェイト状態にし、この問題を解決します。

・ページ固定(page fix)の処理

 Linuxの中でページアウトしたくないメモリに対してページを固定(page fix)しますが、それをz/VMにも知らせることで、z/VMとしても当該空間をページアウトしないようにページ固定します。

・CMM(Collaborative Memory Management)

 z/VMとLinuxの間でページ属性情報を交換して、ゲストとホストの全体でのメモリ最適化を行う仕組みがCMMです(図2)。例えば、Linux上のあるプロセスが終了してメモリが開放されたらz/VM側でも該当ページを開放し、優先的に再利用できるようにすることでメモリ効率を高めます。また、Linuxのファイルキャッシュのように開放可能なメモリについてもz/VM側で認識し、z/VMではその領域のページアウトを省略することでページングI/Oを減らすことができます。

 CMMは、処理ロジックは単純ですが、メモリ管理の処理であるため頻繁に実行されます。アセンブラで記述しても負荷が無視できないため、SIE命令と同様にハードウェアで実装することで高速化されています。System z10ではCMMA(Collaborative Memory Management Assist)というハードウェア命令により実装されています。

図2
図2 CMMの仕組み(クリックすると拡大します)

CPU時間の計算(CPU time accounting)

 Linuxでは、カーネル内でカウントしている100Hz(10ミリ秒)のタイマー刻時(Timer Ticks)を用いて、さまざまな計数や計算を行っています。分かりやすい例としては、CPU使用率の計算が挙げられます。

 ところが、複数のLinuxでプロセッサを共有している仮想化環境では、CPU時間が別のLinuxやハイパーバイザに奪われたりします。そのためタイマー刻時が不正確になってしまい、CPU使用率などの計算値が不正確になることが問題になっていました。

 そこでメインフレームLinuxでは、カーネル 2.6.16から、ハードウェアが持っているTODクロック(Time-of-date)を用いて時刻補正を行うように実装を変更しました。TODクロックは1マイクロ秒の精度があり、メインフレーム筐体(きょうたい)内で唯一の時間として使用できます。

 この実装により、仮想化共有環境においてもCPU使用率などの計算値が正確になるとともに、steal(別のOSシステムにCPU時間が盗まれている割合)も表示できるようになりました。これにはカーネルのみならず、vmstatやtop、それからsysstatに含まれるsar、iostat、mpstatなどのコマンドでも対応が必要でした(リスト2)。

procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------
r b   swpd   free   buff    cache   si   so    bi    bo   in   cs us sy id wa st
2 0      0   6428   9824   189868   0    0     0     0  101    8  6 42  0  0 52
1 0      0   6428   9824   189868   0    0     0     0   98    7  5 40  0  0 55
1 0      0   6428   9824   189868   0    0     0     4  102    7  4 37  0  0 59
                                                                              ↑
                                                                        他区画が使用した分
リスト2 vmstatの出力例

共有メモリのサポート

 z/VMにはDCSS(Discontinuous Saved Segment)という共有メモリ機能があります(図3)。固定アドレスを持ったメモリ領域ですので、z/VM上の複数のLinuxの間でメモリ共有をすることができます。

図3
図3 DCSSの仕組み

 そこをファイルシステムとして利用すれば、高速な共有RAMディスクとして使用できます。またそこにカーネルを置けば、ディスクにI/Oせずに高速にブートできるうえに、カーネル1つ分のメモリ使用量で、100個でも1000個でもLinuxをブートできますから、メモリ効率の改善にも使えます。

 カーネルの実体は1つなので、保守の観点からいっても容易になるかもしれません。DCSSセグメントは複数定義できますが、NSS(Named Shared Segment)としてセグメントに名前を付ければ、アドレスを指定しなくても名前で管理することもできます(図4)。

図4
図4 NSSの仕組み

 また、DCSSをRAMディスクとして使用する場合は、XIP(eXecute-in-place)を併用することで、ページキャッシュを使用せずにmmap()によって直接実行できるようになります。XIPには、ファイルのロード時間とページキャッシュ使用率の削減効果がありますから、/usr下のファイルをすべてDCSSに置いて数十〜数百個のLinuxで共有すれば、メモリ効率は格段に高まり、ディスクI/Oも大幅削減ができるかもしれません。

 固定アドレスを持ったLinux間のメモリ共有という技術はまだ未開拓の領域でもあり、今後の発展に期待するところが大きいと考えられます。

 以上、メインフレームLinuxに最近追加された機能について、いくつか紹介しました。これらは仮想化サーバ統合環境におけるさまざまな課題を解決するものです。このほかに、メインフレームで重視される運用管理面での機能追加も多く、FCP(Fiber-channel Protocol)における統計情報の取得やz/VMモニタ情報の処理など、監視や問題判別に必要な機能が追加されています。

 Linuxそのものとの互換性を保持しながらも、「メインフレーム品質」を目指してハードウェア部分で独自実装を行い、RAS向上やスケーラビリティ・効率性改善に向けた努力を続けています。

前のページ
2/3

Index
あなたの知らないメインフレームLinuxの世界
 最終回 メインフレームLinuxの今後
  Page 1
最近のメインフレームLinuxの機能強化
  Page 2
最近のメインフレームLinuxの機能強化(続き)
  Page 3
データセンターが抱えるさまざまな課題と解決策
クラウド・コンピューティングへの方向性
メインフレームが向かう道
まとめに代えて
コラム メインフレームLinuxが動くのはIBMだけ?


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間