2009年12月4日金曜日

appengine java night #3

ATND
<セッション1>
発表者:id:bluerabbitさん
参考URL: http://d.hatena.ne.jp/bluerabbit/
テーマ:「実際に作ってわかったappengineの困ったところ」
内容:実際にappengineで開発してみてどんな事が問題になったのか。その問題をどのようにして回避したのか。appengineの様々な制約に対する回避策をご紹介します。
天気予報を取ろうとすると,30秒ルールではじかれた. タスクキューで地域ごと142のタスクで実行.なぜか全部で3分かかった. キューの同時実行が想定通りでない.

バッチ処理が問題になる.バッチが終了したことをどうやって検出するか. 機能を分割.チェイン.終了判定はカウンタ.memcache counter. memcache のlow level APIでatomic なcountが可能らしい.

contains はやらないほうがいい by ひがさん

一発目の排他が難しい. s.put で 戻り値が返ってきたら制御 引数つきのs.putで失敗するように設定すればよい.

タスクキューは冪等を保証しなければいけないらしい.まあそうだろうな.

Mailの制限. 1日7000、1分32件.

JDOだと関連をもとに勝手にentity groupを作ってしまっていて混乱のもと.byひがさん

transaction 開始後最初のget/putで そのときのタイムスタンプをどこかに取っておく. commit のときに取っておいたタイムスタンプと同じかどうかを比較する. ancestor query 以外のqueryではtransactionがかからない.keyに対するgetだと だいtransactionになる.queryは本来複数の行を相手にしているので,そもそも どのentityグループにぞくしたqueryなのか定義できないから.ancestor queryは entity groupに対するqueryなので,定義できるから.

low level APIにはtransaction ありとなしのメソッドがある. なしのメソッドはデフォルトのトランザクションということになる. トランザクションは入れ子にすることができ,一番内側のトランザクションがデフォルト のトランザクションになる.

トランザクションにnullを指定すると トランザクション外で実行することができる.

開発環境でもちゃんとトランザクションの挙動が忠実に反映されている. kindlessAncestorQueryのみ挙動が違う.

serializable - トランザクション内の分離レベルはserializable 非常に強固な分離.oracleはread-committed. timestamp付きで bigtable から読んでいる.だから,横の commit前のデータがちゃんと読める.

ユニークキーは使えない.自分でユニークになるように制御しなければいけない.

KeyRange keys = service.allocateIds(KIND, 1); 
              <- これ,結構重い.まとめてやったほうがいい.1件20msぐらい.
String key = KeyFactory.keyToString(keys.getStart());
チェイニングの機能を提供したらおもしろいかもね.
<セッション2>
発表者:ぶいてく竹嵜さん
参考URL: http://blog.virtual-tech.net/
テーマ:「ぶいてく流 スケーラブルアプリの作り方」
内容:「GAEはスケーラブルである、とはいうものの、30秒ルールなど実際には様々な制約があって、大量のデータを処理したり、また、大量のアクセスに耐えうる業務アプリを作るのは大変難しいと思います。スケールしなければクラウドの意味はない!?ということで、ぶいてくでは、いろいろと制約を回避する工夫を行ってきました。これらは独自の方法で、一般的ではない部分も含まれますが、いろいろと応用は可能かと思います。課題に対応した一つの例としてご紹介しますので、これをきっかけに皆さんもいろいろ考えてみてください。

1.GAE使ってめいっぱいPDFを生成する。どのくらい生成可能でどのくらい時間がかかるか、など
2.1000件を超える大規模データを処理する方法。Pagingにおける、CounterやKeyなどの実装例
task queue スケールしないじゃんか!という話し. 請求書生成アプリ.PDFを差し込み生成. 受注受付処理と引き当て処理を分離.

ブラウザ上のデータも含めてデータの整合性を管理する必要がある.重要.

最大値,最小値は一瞬で取れる.最小値の場合は,nullが最少になることがあるので注意が必要

memcache getput 15ms
datastore put 100-250ms get 20ms query 620ms
全文検索を力でやろうとしている.すごいね.

全文検索にはcompass というのがあるがtoyで使えない.

2009年11月27日金曜日

Comsys 09 2日目

 ・拡張インプリサイスタスクの固定優先度スケジューリング(S)
  千代 浩之(慶應義塾大学),武田 瑛,船岡 健司(東芝株式会社),山崎 信行(慶應義塾大学)

   必須,付加 の他に終端タスクを加えた点が,「拡張」ということらしい.
   周期タスクを想定.ジッタの少ないスケジューリング手法を提案.
 
 ・Kumoi:クラウドコンピューティング研究・開発のためのシェル環境の構築(S)
  杉木 章義,加藤 和彦(筑波大学) 

   Scalaでcloud shellを実装,という話.下には既存のサステイナブルXXを使って
   いる.通信はRMI. たとえば,動的にVMの台数を制御するというようなことをする
   場合にそれを柔軟に書けるような枠組み,ということらしい.
 
 ・EDFスケジューリングアルゴリズム向けの軽量なDVFS制御手法
  林 和宏,並木 美太郎(東京農工大学) 
 
   デッドラインスケジューリングを行うシステムで,タスクごとに,CPU周波数を制御
   して,小消費電力を実現.

 ・TOMOYO Linuxの設計と実装
  原田 季栄(株式会社NTTデータ),半田 哲夫(NTTデータ先端技術株式会社),板倉 征男(情報セキュリティ大学院大学)
 
   TOMOYOはカードキャプターさくらからきている.原田知世にあらず.
   プロセス起動履歴をexecに手をいれることで取得している.
   Androidでもうごく!

 ・ファイル操作のシステムコール発行頻度に基づくバッファキャッシュ制御法の提案
  片上 達也,田端 利宏,谷口 秀夫(岡山大)

   普通はLRUでやるバッファキャッシュの制御を,ファイルのシステムコールの発生
   頻度で,重要なファイルをさがして,ファイル単位で制御する,という方式.
   Webサーバとバックアップを同時に実行した場合には性能が上がる,という主張.
 
 ・マルチコアプロセッサにおけるOSによるMMUを用いたスクラッチパッドメモリの管理方式
  佐藤 未来子,磯部 泰徳,並木 美太郎(東京農工大学) 

   スクラッチパッドメモリ ー コア内蔵のメモリ,キャッシュみたいなものだが,明示的に
   データを出し入れしてやる必要がある.OSのメモリ階層の一部として管理する
   アプローチ.FutureというOSに組み込んでいる.SHマルチコアRP1で実行.
   実機でやったというのはすごいな.
   しかし,普通のアクセスパターンだったら,キャッシュでよいだろう.
   逆に,SPMが有効になるような場合は,アプリの情報が無いと難しそう.
   OSで管理するのは無理なんじゃないかな...
 
 ・分散 Key-Value Store である ROMA とその応用例
   西澤 無我(楽天技術研究所)

   Tokyo Cabinet をバックエンドに使っている.
   eventmachine とfiber(co-routine (1.9からはいった))で実装.
   履歴保持に実際につかっている.

 
 ・完全モジュール型リアルタイムLinuxの開発
  加藤 真平,石川 裕(東京大学)
 
 ・CMP上でスレッド間の参照の局所性を活用するコア間時間集約スケジューラの評価
  山田 賢(九州大学大学院システム情報科学府),日下部 茂(九州大学大学院システム情報科学研究院)
 
   

 ・Interactive Application Scheduling with GridRPC
  Sun Hao(TokyoTech),Aida Kento(NII/TokyoTech)

   Ninf-G使ってくれている.

2009年11月26日木曜日

Comsys 09 1日目

 ・Live migration of processes maintaining multiple network connections (40分)
  Gerofi Balazs, Fujita Hajime, Ishikawa Yutaka(The University of Tokyo)

   ネットワークを維持したまま,プロセスマイグレーション.BLCRを利用.
   コネクション確立をパケットを飛ばさずにリプレイすることで,デスティネーション側
   でネットワーク接続状態を再現.


 ・Kemari: 仮想マシン間の同期による耐故障クラスタリング
  田村 芳明,柳澤 佳里,佐藤 孝治,盛合 敏(NTTサイバースペース研究所)

   Xenで,継続的にコピーし続けることで,耐故障化.ページを汚すアプリだと
   最大42パーセント程度の性能低下.ネットワークは10Gでも90%でる.
   性能はネットワークのスループットではなく,レイテンシに依存するとのこと.
   KVMへ移行中.
 
 ・トラフィック量に適応する非対称マルチリンクEthernetトランキング
  米元 大我,塙 敏博,三浦 信一,朴 泰祐,佐藤 三久(筑波大学)
 
   ネットワークトランク機構の改良.+とか,++とか言ってる.

 ・NILFSのLinuxメインラインへの統合
   小西 隆介(NTTサイバースペース研究所)

   どうやったらメインラインに入れてもらえるか!という話. 
   オープンソースとしてのコーディング.読む人のことを考えて
   わかりやすく書け.抽象化しすぎるな.typedefを多用するな.
   キーパーソンにアクセス.時期も重要.
   開発者会議とユーザ会議を使い分ける.LKMLとサブトピックMLの使い分け.
   メンテナに会いに,タスマニアに行ってる!

   リリース後の2週間しか新機能を入れるwindowはない.その後はバグフィックスのみ.

 
 ・ホスト型仮想計算機環境におけるファイル入出力のVFSアウトソーシングによる高速化
  豊岡 拓,新城 靖,齊藤 剛(筑波大学) 

   仮想計算機でファイルを使うと,ゲストのVFSを通ってから,ホストのVFSを通って
   ファイルアクセスをすることになる.これをバイパスすることで効率化する.
   WFSと呼んでいる.
   sendFileのアウトソーシングで,ファイルの内容をVMに読み込まずにネットワークに
   流しているのは面白い.
 
 ・ヘテロジニアスクラスタ向けシングルシステムI/O機能
  清水 正明(日立中研・東京大学),米澤 明憲(東京大学 

   演算ノードと制御ノードがあるヘテロクラスタで,演算ノードのI/Oを制御ノードに
   オフロード.システムコールレベルでフックしている.演算ノードはPS3.
 
 ・WinKVM : 異なるホストOS間のVMライブマイグレーション実現に向けて(S)
  高橋 一志,笹田 耕一(東大)

   KVM VMをLinuxからマイグレーションできるように,WindowsにKVMを移植.
   すごい,動いている.ようだが,かなり遅いらしい.まだ.
   KVMをいじらずに,スタブをかまして,Windows APIに翻訳している.
   visual C++ とcygwin gccを併用.大変そうだ.
   マイグレーションはまだできていない.

2009年11月24日火曜日

Scalable Massively Parallel I/O to Task-Local Files

Scalable Massively Parallel I/O to Task-Local Files
Authors:
Wolfgang Frings  (Juelich Supercomputing Centre)
Felix Wolf  (Juelich Supercomputing Centre)
Ventsislav Petkov  (Technical University Munich)

SC09
並列ジョブが,パラレルファイルシステムにガンガンファイルを作ると,メタデータサーバがボトルネックになる.ので,パラレルファイルシステムの手前に,SIONlibという層をもうけて,一つの巨大なファイルを仮想的に複数のファイルにみせることで,メタデータサーバの負荷を低減する.後ろ向き.

GreenCloud: A New Architecture for Green Data Center

GreenCloud: A New Architecture for Green Data Center 
Liang Liu, Hao Wang, Xue Liu, Xing Jin, WenBo He, QingBo Wang, Ying Chen 
IBM China Research Laboratory, McGill University, University of New Mexico

International Conference on Autonomic Computing  archive
Proceedings of the 6th international conference industry session on Autonomic computing and communications
マイグレーションを使って,省電力.マイグレーションは,ヒューリスティクスで制御.ヒューリスティクスは,評価関数を作って解空間を探索.探索はすごく遅いように見えるが,最適近傍解は300msで得られていると主張.

先進的ではあったのかもしれないが,技術的には特に見るべき点はないような.

2009年9月15日火曜日

Cloud Computing and Grid Computing 360-Degree Compared

Cloud Computing and Grid Computing 360-Degree Compared
I Foster, Yong Zhao, I Raicu, S Lu
Grid Computing Environments Workshop, 2008. GCE '08 (2008)
Pages: 1-10
Ian のペーパ.Ianのクラウドの定義.
A large-scale distributed computing paradigm that is driven by economies of scale, in which a pool of abstracted, virtualized, dynamically-scalable, managed computing power, storage, platforms, and services are delivered on demand to external customers over the Internet.
CloudのGridとの相違点の一つとして,インターオペラビリティの欠如を指摘している.

2009年9月2日水曜日

グリッド協議会ワークショップ@蒲田

27回ワークショップが蒲田の富士通ソリューションスクエアで行われた.駅の南西に位置する,ちょっとバブリーな建物.汐留の本社もすごいが.

基調講演  「クラウドによるデータセンタビジネス」
富士通株式会社 佐川 千世己
富士通クラウドの話.一度岸本さんの話を聞いているのであまり面白くなかった.
市場動向  「データセンタ市場の動向」
株式会社野村総合研究所 桑津 浩太郎
非常におもしろかった.日本のデータセンターは優秀な人材を貼付けることになっているので,田舎には作れない,とか.クラウド系のDCとは発想が違う.結局都心回帰なんだそうな.今後は,高品質な物は都心で,低品質でよいものは中国へ,ということになるトレンド.
給電  「将来のデータセンタに向けた直流給電方式の検討」
株式会社NTTファシリティーズ 廣瀬 圭一
直流給電.300-400Vの直流をサーバに流し込む.現在の電源も内部で,このくらいの ACに直しているとかで,この電圧なら既存の電源の後段がつかえるということらしい.エジソンの会社がついこの間まで直流給電を行っていたというのはびっくりだ.
ネットワーク  「シスコが提唱するネットワーク仮想化と次世代プラットフォームとは」
シスコシステムズ合同会社 熊谷 慶一
「UCS」は,10Gをバックプレーンに持つブレードサーバ.配線すっきり.そりゃそうだ. mac addressからふり直すことができ,一括して設定をサーバに流し込むことができる.
仮想化  「サーバー仮想化技術の有効活用」
日本仮想化技術株式会社 宮原 徹
仮想化コンサル.現実的な話が聞けて面白かった.やっぱりブレードがいいとか, AMDのほうが同じ性能なら消費電力が若干少ないとか.
抜熱  「データセンターの省エネルギー化を目指したサーバ冷却ネットワークシステムの研究開発」
産業技術総合研究所 阿部 宜之
炭化フッ素の液体を使い,ヒートパイプでCPUから抜熱.DC全体に液冷システム系を作って,そこに各サーバの液冷系をプラグインするという構想.面白いが,まだまだ基礎研究に近い.