2012年7月2日月曜日

【技術情報・翻訳記事】アバターとオブジェクトの転送速度を改善する「煌(きらめき)プロジェクト」


昨日はファイアーストームチームの近況について書きましたが、
近頃、リンデンのブログが久しぶりに更新されましたのでその記事を。

Project Shining to Improve Avatar and Object Streaming Speeds

昨日の記事では、サードパーティ、公式ともに
ビューワはほぼ完成の域に近付いたかな、なんて書いたけれども、
今年はリンデンもインフラ面に力を入れるようです。
インフラというのは僕らユーザには見えにくい部分であり、
以下の記事も技術的な内容を含むもので読みにくいですが、
要するにそういう見えない部分を改善することで
よりSLが軽くなる、ということですな。w

これは、たくさんの小さな改善が積み重なったプロジェクトであり、
どの部分の改善が自分にとって大きな改善になるかは、
その人その人のPCやネットワークの環境によるみたいですね。
今すぐ改善されなくても、リンデンさんもこういう努力をしている
ということだけ頭の片隅にでも入れておきましょうか。

     *   *   *

アバターとオブジェクトの転送速度を改善する「煌(きらめき)プロジェクト」

リンデンラボの秘密の月面基地の地表深いところで、ラボの中でもトップクラスの頭脳を持つメンバーがセカンドライフの性能に関する問題に取り組んでいます。課題の中心は、基盤の改善からサーバー側のテクスチャ合成やオブジェクトをキャッシュする方法まで多岐にわたっています。

今年リンデンラボは、会社始まって以来最大規模の資本投資を行い、新しいサーバ・ハードウェアの更改を進めているところです。この新しいハードウェアの投入によって、住民のみなさんはより高い性能と信頼性を享受できるようになるでしょう。更に、こうしたサーバの拠点がこれまで3箇所あったのを2箇所に集約しようとしているところです。これにより、拠点間のデータのやりとりで発生する遅れを大幅に縮小することができ、SIMの性能を更に高めることができるようになるのです。

「煌(きらめき)プロジェクト」というのが、アバターやオブジェクトのデータを転送する際に発生する遅延やその他の問題について明らかにし、これを測定し、具体的な解決策を提案し、実施するというリンデンラボが最近取り組んでいる活動につけられた名前です。この「煌プロジェクト」の中で、いくつかの小さな改善が見出され、適用されてきました。この次に予定されている「煌プロジェクト」から生まれた小さな改善は、初期アバターのレンダリングを事前に行うことで、新しくセカンドライフの住民になった方々がよりセカンドライフを楽しめるようにするものです。

「煌プロジェクト」が行ってきた調査の結果、このプロジェクトは大きく3つの性能改善プロジェクトに分けて実施されてきました。「サンシャイン・プロジェクト」、「オブジェクト・キャッシング」、そして「HTTPライブラリ」の3つです。

これら、ハードウェアの更改と「煌プロジェクト」が全て合わさることで、アバターやオブジェクトの転送速度は著しく向上するはずです。勿論、みなさんお一人お一人の環境に応じて、どの時点でそれが達成されるかは異なるわけですが。

「サンシャイン・プロジェクト」(サーバ・サイドのテクスチャ生成と保管)

現行では、自分自身のアバターのテクスチャを合成し、その結果をSIMに返して他のビューワが見られるようにするのは、全てクライアント・ビューワが行っていることです。この方法では、処理速度の低下やデータのエラーなどが発生し得るのです。テクスチャを合成するための計算は、実際には実に単純なもので、特に時間がかかるようなものではないのです。しかしながら、ビューワがその計算を実行するためには、ビューワはまず最初に膨大な個人資産をSIMからダウンロードする必要があり、続いて今度はその膨大な計算結果をSIMにアップロードしなければなりません。これがSIMとビューワ間に膨大な量のデータ通信を発生させ、それが重さと不安定な要素をもたらすことになるのです。

テクスチャを合成してその結果得られたベイクト・テクスチャをアップロードするという作業がクライアント・ハードウェアに依存するということは、結果に誤りをもたらすことになるのです。(ちょうど何でもピンクにしてしまうといい結果にはならないように。)これまで、これらの誤りを正すために、いくつものやり直しや後戻りのしくみが組み込まれてきました。しかし、こうしたしくみは更なる負荷を増大させ、システム全体に大きな負担となるのです。

「サンシャイン・プロジェクト」ではSIMのサーバとは別の、テクスチャ合成サーバというものを立ち上げます。ビューワがアバターをレンダリングする必要が生じた時、ビューワはSIMに要求メッセージを送信します。これを受けて、SIMのサーバはその要求をテクスチャ合成サーバに送るのです。そこでテクスチャ合成サーバはテクスチャの合成を行い、その結果をビューワに返す、というしくみです。

テクスチャ合成サーバは、以前に生成されたアバターのテクスチャについては、これを格納するデータベースにアクセスします。もしSIMからの要求が、あるアバターの、以前計算され、既に合成済のテクスチャであるとすれば、テクスチャ合成サーバは新たに再計算を実行するのではなく、データベースに格納されている合成済の結果を引っ張り出してくるのです。例えば、同じアバターでなくても衣服一式が同じ、というような場合でも、テクスチャ合成サーバは既に計算済の結果を利用することができるのです。

こうしたテクスチャ合成サーバを持つことは更に、アバターを構成する個人資産のやりとりによってHTTP通信が重くなっている現状について、通信が外部接続でなく、より信頼性の高い、内部ネットワーク接続で行われるようになるという利点もあるのです。

「オブジェクト・キャッシング」と「インタレスト・リスト」

オブジェクトのキャッシュをセカンドライフ・ユーザのハードディスクに置く、という方法は、そのユーザの現在のセッションのどこかで、或いは次回のセッションの時に、再び描画される可能性の高いオブジェクトをより早く描画させるために考えられたものです。

しかしながら、現行のオブジェクト・キャッシュの方法には改善の余地があるのです。現行では、ビューワがオブジェクトをキャッシュするのは、そのユーザがある地域から離れる時であり、現在見えているオブジェクトのみがキャッシュされるのです。従って、ある景色が初めて読み込まれる時にSIMとビューワとの間で行われる現行のキャッシュ通信は極めて効率が悪く、またリソースを大量に消費してしまうのです。

新しいシステムでは、ビューワは既に持っていて、現在も有効なオブジェクトの情報については改めてダウンロードしないようになっています。これによってSIMそのものに対する、また、SIMとビューワ間の通信に対する負荷を縮小することができるようになります。

新しいシステムの元では、ビューワがある地域に接続すると、SIMはまずビューワにこう言うのです。「これが僕のところにあるオブジェクトをUUIDでまとめたリストだよ。」するとビューワは自分のキャッシュをチェックしてこう答えるのです。「これが僕のキャッシュにあるオブジェクトのタイムスタンプだよ。」そこでSIMはビューワが示したタイムスタンプを自分の持っているデータと照らし合わせてこう答えます。「これが君のキャッシュの中にあって今も有効なオブジェクトのリストだよ。」ビューワはキャッシュにあるオブジェクトの描画を始める一方、SIMの方ではビューワが必要としている新しいオブジェクトのデータをビューワに送り始めるのです。それも、ビューワが要求するオブジェクトの優先順位に従って。

「HTTPライブラリ」

「煌プロジェクト」で最高の性能が得られるかは、ビューワとSIMの双方によって開始されるHTTPメッセージのスピードと信頼性にかかっています。「煌プロジェクト」の3番目は、新しいHTTPライブラリで、通信、接続管理、エラー訂正の何れにおいても現代における最高の方法を実装することにあります。

No response to “【技術情報・翻訳記事】アバターとオブジェクトの転送速度を改善する「煌(きらめき)プロジェクト」”

Leave a Reply