Facebook、コンカレントプログラミング用デバッガ「RacerD」をオープンソース化

Steven J. Vaughan-Nichols (ZDNet.com) 翻訳校正: 編集部 2017年10月23日 12時23分

  • このエントリーをはてなブックマークに追加

 計算処理を順番に実行する逐次コンピューティングのやり方を学ぶのは簡単だ。このことはプログラミングを学んでいれば誰でも分かっているはずだ。そして、スーパーコンピュータの計算処理を支えている同時計算処理を実現するためのパラレル(並列)コンピューティングはずっと難しいものの、できない話ではない。その一方で、複数の計算処理が同時並行的に実行されるコンカレント(並行)コンピューティングははるかに困難なものとなっている。ただ、コンカレントコンピューティングは、列車運行管理において単一軌道上を運行している複数の列車を管理するのか、単一のFacebookページ上にある複数のコメントを管理するのかにかかわらず、極めて有用なものとなる。これこそ、Facebookがコンカレントプログラミングに力を入れている理由だ。同社は米国時間10月20日、データ競合を検出する新たなデバッガ「RacerD」をオープンソース化したと発表した。

 Facebookが説明しているように、コンカレントコンピューティングが難しい理由の根幹には、命令実行の流れが2つ存在する場合、それら命令が実行される順序の組み合わせは極めて膨大になるという事実がある。その数は人間にとって、そしてコンピュータにとってでさえ、多すぎるのだ。いかに困難であるのかは、40行の命令を保持した2つのスレッドがコンカレントに処理を実行する(専門用語を使えば「インターリーブ」する)際の処理順序の組み合わせをすべて分析する場合を考えてみれば分かるはずだ。これら組み合わせをブルートフォース(総当たり)で分析すると、1秒間に10億回という超高速トランザクション処理速度をもってしても数百万年かかることになる。

 実際、Facebookもブルートフォースによってすべての可能性を分析するのは不可能だと結論付けている。しかし同社によると、RacerDを用いれば、80行を超えるずっと大きなプログラムでも、考えられ得る組み合わせを絞り込み、15分以内に分析できるのだという。

 RacerDは、こういったことを実現するためにJavaプログラム内のデータ競合、すなわちメモリへの書き込みを伴う同期化されていないメモリアクセスを検索する。この処理は、実行時間を削減するために、分析対象のプログラムを実行することなく行われる。つまり、アプリ上の数多くの実行経路を迅速に網羅するために、RacerDはシンボルに焦点を当てた推論処理を実行するわけだ。

 具体的に述べるとRacerDは、Concurrent Separation Logic(CSL:並行分離ロジック)と呼ばれる理論を採用している。この理論によりRacerDはインターリーブの列挙を避け、現実的な時間内でスケーラビリティの高いコンカレンシー分析を実現できるようになる。

 RacerDはまだ完ぺきにはほど遠い。ただ、これまででほかの何よりもはるかに実用的なものだ。

 このプログラムによって、静的なコンカレンシー分析がFacebookの発展速度とスケーラビリティー要求に十分見合ったものであることが示されていると言ってもよいだろう。

 Facebookの頻繁なコード変更を管理するために、同プログラムはスレッドやロック、メモリ間の関連を追跡するうえで、プログラマーがどのバグを追跡するのかを指定せずとも済むよう、高度な自動化技術を採用している。これは、多くのプログラマーに新たな努力を強いずとも即座に展開していけるということを意味している。

この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。

ZDNet Japan 記事を毎朝メールでまとめ読み(登録無料)

  • このエントリーをはてなブックマークに追加

この記事を読んだ方に

関連ホワイトペーパー

SpecialPR

連載

CIO
トランザクションの今昔物語
エリック松永のデジタルIQ道場
研究現場から見たAI
Fintechの正体
米ZDNet編集長Larryの独り言
大木豊成「仕事で使うアップルのトリセツ」
山本雅史「ハードから読み解くITトレンド放談」
田中克己「2020年のIT企業」
松岡功「一言もの申す」
松岡功「今週の明言」
内山悟志「IT部門はどこに向かうのか」
林 雅之「デジタル未来からの手紙」
谷川耕一「エンプラITならこれは知っとけ」
大河原克行「エンプラ徒然」
内製化とユーザー体験の関係
「プロジェクトマネジメント」の解き方
ITは「ひみつ道具」の夢を見る
セキュリティ
「企業セキュリティの歩き方」
「サイバーセキュリティ未来考」
「ネットワークセキュリティの要諦」
「セキュリティの論点」
スペシャル
課題解決のためのUI/UX
誰もが開発者になる時代 ~業務システム開発の現場を行く~
「Windows 10」法人導入の手引き
ソフトウェア開発パラダイムの進化
エンタープライズトレンド
10の事情
座談会@ZDNet
Dr.津田のクラウドトップガン対談
展望2017
Gartner Symposium
IBM World of Watson
de:code
Sapphire Now
VMworld
Microsoft WPC
Microsoft Connect()
HPE Discover
Oracle OpenWorld
Dell EMC World
AWS re:Invent
AWS Summit
PTC LiveWorx
より賢く活用するためのOSS最新動向
古賀政純「Dockerがもたらすビジネス変革」
中国ビジネス四方山話
ベトナムでビジネス
米株式動向
日本株展望
企業決算