Multi-PAXOS擬似コード

PAXOSの説明はWikipediaで 元々のPAXOSのうち、同じProposerから連続してproposeされる時、チョット効率よく処理をする改良としてMulti-PAXOSというアルゴリズムがある。そのMulti-PAXOSの擬似コードが無かったので作った。まだ試していないので動くかどうか…

WebRTC on ネイティブ〜webブラウザ

分散環境の通信メディアとして、WebRTCを使っているが、ネイティブアプリとwebブラウザ間で通信を行うときに切断してしまう不具合がある。バージョンや、そもそもの作り方が悪かったのかと、最小サンプルを作って確認した。最小サンプルは動くので、自分が作…

Webブラウザでも分散

Emscriptenを用いてC++をJavaScriptに変換することで、Webブラウザとネイティブで同じアルゴリズムで接続できるようにした。 本当はJavaScriptではなく、WebAssemblyに変換したかったが、embindを使ったクラスや関数のエクスポートが最小サンプルでも動かな…

遺伝的アルゴリズムを使ったルーティング

遺伝的アルゴリズムを使ったルーティングアルゴリズムにより、接続の偏りが少なくなった。 評価用の点数の付け方も工夫したので、特定のノードに通信が集中しそうになっても経路が分散されるはず。 計算負荷が上がったためか、120ノード前後でタイムアウトが…

ルーティングアルゴリズムの改良がイマイチだった

WebRTCのやTCPのように、コネクション型の通信経路を使う場合、特定のノードに接続が集中すると、そのノードのリソースが不足したり、負荷が上がってしまう。例えば、macOS sierraではユーザがopenできるディスクリプタの数は256に制限されているため、1ノー…

Xcodeの静的解析ツールに、メモリリークの可能性を指摘されたが釈然としない

経緯 本当はパフォーマンス測定ツールを使って、プログラムが想定外に重い処理を行っていないか、確認したかった。 とりあえず、「Analyze」を起動したら、「Potential memory leak」と言われてビクビク検証している。 プログラム 分散処理インフラのpicojso…

安定性の向上

ルーティングアルゴリズムの不具合を幾つか修正することで、安定性が向上した。5〜10%の割合でランダムにノードを突然終了させても、全体では崩壊せずに動作し続ける。

ルーティングアルゴリズムの動きが想定と違う。

何度か動かしているうちに、近隣との接続時の動作が想定と異なる気が。確認のため、10%の割合でランダムにノードをkillするようにしたら、その情報がうまく更新されていない動きをするようだ。chromeのwebrtcライブラリはマルチスレッド動作で、切断イベント…

425ノード

seed側でパケットを破棄する時間が短すぎたので、修正。400ノード以上繋げられる状態になった。

150ノード

130〜150ノードあたりで急に接続失敗が増える。seedの不具合っぽい。

リソース上限を変更したのだけれども

複数ノードでPROCESSWARPの安定した動作を実現するために、分散メモリの足回りを抜き出して開発中。 100ノード前後でファイルディスクリプタの上限に達したため、以下のページに従い上限を増やす。 christina04.hatenablog.com なぜかプロセス数の上限が以下…

詳説WebAssembly

CMU#51で「詳説WebAssembly」という題目で解説を行いました。 詳説WebAssembly from 祐司 伊藤 www.slideshare.net webブラウザで処理できる言語をJavaScriptだけに限定している現状をリセットする一手。 現状のwebブラウザの互換性問題はECMAScriptへの準拠…

VPNサーバを仮想マシン上に建てようとしてハマった話

再現環境 仮想マシンのホスト : VMware vSphere Hypervisor ESXi 仮想マシンのゲストOS : Ubuntu Server 16.04 VPNサーバ : SoftEther vpnserver (OSS版) VPNクライアント : macOS Sierra 10.12.2 設定 仮想マシンのホストのネットワーク設定をプロミスカス…

WebWorker調査メモ

Webブラウザ上でマルチスレッドを実現する方法を調査していたところ、WebWorkerなるものを見つけた。当初探していたものと異なるが、メモリ空間の分離ができ、他のところで役立ちそうなため、メモ。 developer.mozilla.org 特徴 ブラウザ上のJavaScriptは1…

JTF2016で発表してきました

7/24にJuly Tech Festa 2016で以下の内容で発表をしてきました(一部画層を差し替えています)。 PROCESS WARP「プロセスがデバイス間で移動する」仕組みを作る from 祐司 伊藤 www.slideshare.net www.youtube.com www.youtube.com 思っていた以上に見に来て…

RaspberryPi 32台で可搬型クラスタ実験環境を作る(ハードウェア編)

PROCESS WARPの実験やデモ用にある程度の台数で移動可能なクラスタ実験環境があったら凄く良いだろうなということで、RaspberryPiを32台利用した、クラスタ実験環境を作りました。 追記:JTF2016登壇時に現物持参する予定です。興味ある方見に来てください。…

CMakeの設定ファイルを削除する

CMakeを実行すると作業用ファイル?が大量に生成される。 削除する場合、以下のコマンドで削除できた。 find . -iwholename '*cmake*' -not -name CMakeLists.txt -delete CMakeList.txt以外のファイル名にcmake文字列を含むものを削除している。 削除したく…

RaspbianでBoost 1.60を野良ビルドする

Clang 3.8につづいてBoost 1.60もコンパイル & インストールするというシンプルなお話です。 前提 Raspberry Pi 2 Model B以上(多分3 Model Bでも行けると思う) Raspbian(update, upgrade済み) ほかのBoostとの共存は考慮していません Clang 3.8 準備 以下の…

RaspbianでClang 3.8を野良ビルドする

2016年3月に日本でもRaspberry Pi 3 Model Bが販売開始されました。しかし、オフィシャルから提供されているRaspbianのC/C++コンパイル環境では依然gcc 3.8または、clang 3.0までしか提供されていないようです(自分はRaspberry Pi 2 Model Bまでしか確認して…

Webブラウザで使えるいろんな処理系

CMU #36で「Webブラウザで使えるいろんな処理系」というタイトルでLTをしてきました。 Webブラウザで使えるいろんな処理系 from 祐司 伊藤 www.slideshare.net 発表者数20人以上で、クオリティも非常に高い満腹会でした。 lab.designsatellites.jp

Boost.勉強会 #19 東京 に参加してきました

C++で開発する割に、C++系の人と滅多に会わないので初めて参加してきました。 connpass.com 厳つい老齢の開発者にコテンパンにのされるのかとビクビクしていましたが、July Tech Festaより若い人が多い印象です。 内容は低レイヤーや規格、Boostの実装につい…

OSXでループバックデバイスっぽいことをする

OS Xではあまり馴染みがないかもしれませんが、ループバックデバイスっぽいことができます。 itpro.nikkeibp.co.jp 前提 OS X Yosemite Version 10.10.5 homebrew 今回入れたもの FUSE for OS X 2.8.2 fuse-ext2 0.0.7 e2fspros 1.42.13 archivemount 0.8.3 …

ライブラリをコンパイルしてLLVM-IRを出力する方法

皆さんご存知、LLVM-IRはコンパイラ基盤であるLLVMの中間生成物であり、emscriptenやPROCESS WARPはLLVM-IRを読み込んで動かすことができるプラットフォームです。 現代のプログラミングでは既存ライブラリを利用することにより開発期間の短縮や品質向上を図…

デザインに凝り過ぎた名刺は名刺スキャナ通らなかった

Evernoteでは名刺をスキャンする機能(名刺を写真で取ると取り込む)があります。 チョットデザインに凝ったものは失敗することが多いのでポイントをリストアップしました。 コントラストは高め。 コントラストを補正しているけど、やっぱり限界がある リバー…

PIAXで作る P2Pネットワーク

CMU #33で「PIAXで作るP2Pネットワーク」という題目で発表してきました。 cmu.connpass.com PIAXで作る P2Pネットワーク from 祐司 伊藤 www.slideshare.net メモ やっぱJavaScriptで使えればな〜という雰囲気があった。

PROCESS WARPが総務省異能vationプログラムの最終選考を通過しました。

ご助力、応援いただいている方々に御礼を申し上げるとともに、自分が何をするのか、したいのか、どうするかを見つめなおす機会でもあるなと思いました。 www.inno.go.jp

第48回 情報科学若手の会に行ってきました。

情報科学若手の会に参加してきました。雰囲気、内容ともに、とても充実した会でした。 情報科学若手の会 第48回情報科学若手の会まとめ #wakate2015 - Togetterまとめ 情報処理学会プログラミング・シンポジウムに関連する会だそうです。 学生、社会人が半々…

PROCESS WARPが総務省異能vationプログラムの一次選考を通過しました。

二次選考まであるので、手放しに喜べるわけではないですが、それでも嬉しいです。協力いただいている方々に感謝です。 異能(Inno)vation | 一次選考通過者 研究テーマwww.inno.go.jp

新しい分散実行の仕組み PROCESS WARPについて

CMU #31で「新しい分散実行の仕組み PROCESS WARPについて」という題目で発表してきました。 第31回Creators MeetUp (2015/08/15 15:00〜)cmu.connpass.com 新しい分散実行の仕組み PROCESS WARPについて from 祐司 伊藤 www.slideshare.net emscriptenにつ…

64bit長以上の計算はRubyにお任せ

プログラムのバグ修正をするときに64bit長(約2千京)の整数の計算を確認する必要がありました。 しかし、手持ちの電卓やオンラインの電卓で64bit長ギリギリの計算ができないんですね。エラーも吐かずに答えが間違っているものもちらほらありました。 どうしよ…