ブログ

たけまる / paper


2008-12-12 Fri

_ Inside the Erlang VM [erlang][paper]

昨日 [2008-12-11-1] に引き続き,今日は Erlang User Conference の発
表を紹介します.

発表者の Ludin さんは Ericsson で Erlang を開発されている方のようで
す.論文形式の資料があるので要約します.

この論文は,Erlang VM における SMP サポートの現状と将来を簡単に紹介
しています.Erlang といえばマルチコアを得意としているイメージがあり
ますが,SMP サポートの歴史は浅く,まだまだ速くなる余地がありそうで
す.

Kenneth Lundin, "Inside the Erlang VM," Erlang/OTP User
Conference, Stockholm, November 13, 2008.

pdf

1. Introduction

SMP サポートは 1997年に行われたが,当時はプロセッサがどんどん高速化
していたので,使われずに廃れてしまった.2005年に再開され,2006年5月
の OTP R11B が最初の安定版となった.

2. How it works
2.2 Erlang VM with SMP support (in R11B and R12B)

スケジューラは,run queue から runnable Erlang プロセスや IO ジョブ
を取り出し,実行する.最大で,VM あたり 1024 のスケジューラを持てる.
run queue は共有リソースであるため,lock によって守られている.

2.2.1 First release for use in Products, March 2007

とあるテレコム製品は,デュアルコアにしたら 1.7倍の速度改善をみせた.
新しい VM で動かすために,Erlang コードは再コンパイルすら不要であっ
た (最終的には,並列処理に関する多少の修正が必要であったが).

2.2.2 SMP in R12B

R12B から SMP モードがデフォルトとなり,コアと同じ数のスケジューラ
が使われるようになった (通常はこの設定でよいが,taskset コマンドな
どで利用可能なコア数が制限されているときに注意すること).

スケジューラは,OS のひとつのスレッドとして動作する.コアの割り当
ては OS によって決定される.

3. Performance and scalability

SMP 対応のスケジューラは,そうでないのに比べて 10% ほど遅い.これは,
lock のためである.プロセス間通信がほとんどないようなら,SMP モー
ドではない VM を複数動かしたほうが速いこともある.

プログラムによっては 16コアでもスケールする (すべてのコアを使い切れ
る) こともあるし,せいぜい 2コアまでのものもある.とはいえ,実際に
は多くのプログラムがスケールしている.

4. Our strategy with SMP

SMP モードの開発戦略は,"まず動くようにして,測定して,最適化する"
である.また,SMP であることをプログラマから隠蔽するようにしている.

5. Next steps with SMP and Erlang
5.1 Some known botlenecks
5.1.1 The common run-queue

4コアより多くなると,run queue がひとつしかないために,ボトルネック
となる.解決策は 5.2節を参照.

5.1.2 Ets tables

R12B-4 より前は,アクセスするたびに 2つの lock が使われていた.
R12B-4 では,メタテーブルの lock が大きく改善されている.とはいえ,
多くのプロセスからアクセスすると,競合によりパフォーマンスは下がる.
現在は,テーブル単位で lock しているので,レコード単位にすることで
改善する.

5.1.3 Message passing

多くのプロセスからひとつのプロセスにメッセージが送られると,lock
によりパフォーマンスが低下する.

5.1.4 A process can block the scheduler

ets へのアクセスなどによりプロセスがブロックされていると,そのスケ
ジューラがまるごとブロックしてしまう.これは,process level
locking と呼んでいる技術により,改善できそうだ.この技術では,ブロッ
クしているプロセスがあるとスケジューラから外し,run queue から次の
プロセスをとってくる.実験の結果は良好であり,そのうち導入され
る (5.2節参照).

5.2 Separate run-queues per scheduler

スケジューラごとに run queue を持たせ,lock を回避することで,パ
フォーマンスを大きく改善する予定である.4コア以上で大きな改善がみら
れるだろう.

5.2.1 Migration logic

5.2節により,run queue あたりの負荷が偏る可能性があるので,
migration logic を導入する.まず,run queue の長さを,毎秒 4回ほど
測定しておく.偏りが大きくなると,スケジューラは,実行すべきプロセ
スを他に送りつけたり,他からとってきたりする.

プロセス間でメッセージを送り合うだけの簡単なプログラムでテストした
ところ,4コアで 20% ほどパフォーマンスが改善した.

6 Frequently Asked Questions
6.1 SMP かどうかで .beam に違いはあるのか?

ネイティブコンパイルしてなければ同じである.

6.2 Erlang プロセスを特定のコアに固定できるか?

現在はできないが,できるようにするかもしれない.

6.3 asynch スレッドとの関係は?

asynch スレッド機能は,たとえば長い時間のかかるファイルアクセスを行っ
ても,VM 全体がブロックしないようにするものである.SMP とは関係ない.

2006-12-12 Tue

_ Atom Publishing Protocol のメモ [paper][atompub]

(追記: I-D v.17 に合わせて修正しました)

J. Gregorio and B. de hOra, "The Atom Publishing Protocol," IETF
Internet-Draft, draft-ietf-atompub-protocol-11.txt, October 2006,
work in progress.

Atom Publishing Protocl は,Atom Feed を用いてウェブリソースを管理
するプロトコルです.概要をメモしたので,よかったらどうぞ.

# サービス文書プロトコルと,フィード・エントリ文書プロトコルは,別
の仕様として定義すべきではないか? 前者を必要としないシステムがかな
り多いと思う.

■ 参考文献

Atom 出版プロトコル仕様の和訳
IBM Atom 出版プロトコルを知る、第1回: Atom 出版プロトコルを使って… - Japan
  (HTTP ヘッダとボディの例が載っていて有用)
Studying HTTP

続きを読む

2006-11-28 Tue

_ Atom のメモ [paper][atom]

M. Nottingham and R. Sayre, "The Atom Syndication Format," IETF
RFC4287, December 2005.
ASCII
PDF

長い付き合いになりそうな気がしてきたので,仕様書を読んでおくことに
しました.概要のメモしたので,よかったらどうぞ.

■ 参考文献

RFC 4287 The Atom Syndication Format 日本語訳 - futomi's CGI Cafe
RFC 4287(ja) The Atom Syndication Format : Atom配信フォーマット
IBM Atom 1.0 Syndication Formatの概要 : XML : dW - Japan
(XML 文書例が載っていて有用)

続きを読む

2006-06-07 Wed

_ グローバリゼーションは貧困を救うか [paper][economics]

P. バーダン, "グローバリゼーションは貧困を救うか," 日経サイエンス,
pp.92-100, 2006 年 7 月. (Originally, Pranab Bardhan, "Does
globalization help or hurt the world's poor?," Scientific
American, April 2006.)

- Category: economics
- Rating: 4/5

経済のグローバル化によって貧しい人々もその恩恵を受けるのか? それと
も富が集中し,貧しい人はより貧しくなってしまうのか? 答えはそう単純
ではない (p.92)

貧しい国にとって先進国の資本はプラスになるのか,ということである.

事実を観察する限り,先進国の資本は貧しい国に雇用を生み出し,賃金を
上昇させている.

バングラディシュやベトナム,カンボジアなどアジアの貧しい国々では,
多くの女性が輸出用の衣料縫製工場で働いている.世界の基準でみれば賃
金は低いが,それでも他の仕事よりはずっと高い.こうした工場で搾取が
行われていると懸念する人々もいるが,工場のおかげで女性たちの生活と
地位が相対的に向上したことは評価すべきだ.(p.95)

一歩間違えると「先進国のご都合解釈」になりかねないが,貧しい国にとっ
て先進国の資本は「ないよりマシ」なのだろう.

貧しい国々にとって問題なのは,グローバル化の行き過ぎではなく,グロー
バル化のかやの外に置かれていることだ.(p.98)

しかし,先進国の資本が入ることに感情的な問題がふたつある.ひとつは,
貧しい国の中ではよい労働環境であっても,先進国と比べるとずっと悪い
こと.もうひとつは,もっともグローバル化の恩恵を受けるのは先進国で
あること.

貧しい国の零細な輸出業者はたいてい,豊かな国の市場に進出するために
必要なマーケティング網もブランド力もない.多国籍小売企業の力を借り
ることは可能だが,マージンや手数料がとても高い場合が多い.(p.99)

つまり,先進国の資本によって絶対水準としての生活水準は向上しても,
先進国と比べたときの相対的な格差はむしろ拡大する.物理的な貧しさは
改善されても,「搾取されているのではないか」という感情は強くなるか
もしれない.

なお,グローバル化が先進国に与える影響は [2006-05-06-1] を参照.