2007-01-01から1年間の記事一覧
ネットワークで通信するプログラムを書いていると、ファイルディスクリプタ(ネットワークならソケット)をselectやpollで監視して、パケットが届いたら何かする、ということが良くあります。 しかしselectやpollは、*BSD で kqueue・kevent を使ってみよう…
KLab勉強会#2 のご案内 新世代Linuxネットワークブートテクノロジ「VIVER」についてしゃべります。 VIVERとは何ぞや?からはじまり、分散多重化共有ブロックデバイス「V-FIELD」の威力、今後の目論見について。 VIVERはLinuxをネットワークブートさせるシス…
組織では、ある人が優れたパフォーマンスを発揮できない領域を、他の人が補うことができる。個々人のパフォーマンスがうまく補間されるように構成できれば、個人がパフォーマンスを最大化することができ、組織全体のパフォーマンスは飛躍的に向上していく。…
優秀なSWクリエイターが、SWクリエイションにおいてとんでもないパフォーマンスを発揮することについて、論理的な思考のエントリでは、このようなパフォーマンスを発揮するには「結局訓練を積むしか無いような気もする」と書いた。だがそれ以前に、「楽しく…
今はIPAX 2007に出展する準備を進めているのですが、どうも気が乗らない。今のVIVERの紹介文を書くよりも、今は分散ファイルシステムを考えていた方がおもしろい。ふと、何故気が乗らないのかと考えてみると、考えていることが全部過去ことだからではないか…
少しずつ分散ファイルシステムの実装を進めています。aio_read()を使ったTCPコネクションマネージャの実装がだいたいできました。なんだかんだで既に3500行を突破…。 IOインターフェースについて。ファイルシステムなら、インターフェースとしてopen()やwrit…
TCPで、1回接続したコネクションをとっておいて、後で使い回したい。つまりコネクションプールを作りたい。これをどうやるか。4/29のエントリの続きです。V-FIELDでは、データを待ち受けるときはselect()を使って、溜めてあるソケットに変化があったら、ス…
分散ファイルシステムはマルチスレッドで作っているわけですが、マルチスレッドなら必ず使うであろう諸クラスを作成。作成と言うか、V-FIELDを作ったときに必要なものは大方作ったので、改良が主。Read/Writeロックは、普通のRead/Writeロック。C++と言えばR…
特に締め切りがあるわけでもなく、それに分散ファイルシステムという大がかりな話なので、じっくり作っていきたいと思っているのだけど、やっぱり動くと嬉しいので、とりあえず動くような実装を作ってみたい。ノードが落ちるたときにデータの整合性を保証を…
現在進行中の分散ファイルシステムの設計ですが、「書き込みの方法」と「ノードの復帰」と「瞬断問題」と「単一ファイルの分散」の設計が固まらない。まず、書き込みの方法。前提として多重化しているので、複数のノードに同じデータを書かなければならない…
日記改題。分散ファイルシステムはまだプロトコルの設計が終わっていませんが、ちまちまとコードを書き始めています。昨日と今日は非同期で双方向なTCPコネクションマネージャ(コネクションプール?)を作ってみました…まだできていませんが。V-FIELDではse…
ところで、優秀なプログラマ…プログラマは止めよう。優秀なソフトウェアクリエイターとは、どのような人であろうか。 ソフトウェアを作るときには、4つの段階がある。(ソフトウェアだけに限らないかもしれない) これをやりたい こうやったらできるんじゃ…
昨日のエントリに、事前に設計を固めるなんてことはユーザーの意見を無視しかねず、危険であるという話に絡むことで、プログラミングに関しては、そもそも設計とコーディングを分けること自体が何かおかしいという話。 まずは、前川徹の「日本のソフトウェア…
2007年度上期未踏ユースのオーディションに行ってきました。プレゼン資料を公開します。 対話型QuickTimeムービー (8.5MB) PDF (1.9MB) プレゼン本番は制限時間12分で、スライドは約60枚あるので、12秒/スライドというハードスケジュールだったのですが、ブ…
dRubyを使うと言っていて、逆にdRuby以外に何が必要なのかと言うと、1つは冗長化されたネームサービス、もう1つはプラグインローダ。 ネームサービスならRingがあるわけですが、そのままだと冗長性がないので、何かしら対処が必要になります。 ではどうす…
ハッシュテーブルを使う案。(分散ハッシュテーブルではなくて、普通のハッシュテーブル) 今まで考えてきた案とはまったく関係ない。書き込み権などなどは使わない。 分散トランザクションが要らなくなるので、たぶん書き込みが速い。(ちなみにハッシュテ…
V-FIELDという単語は散々出てきているわけですが、ここでセールスポイントをまとめてみる。 V-FIELDは、大まかに言うと、ディスク(ブロックデバイス)をネットワークで読み取り専用で共有するもの。このとき、データをV-FIELDネットワークに参加しているす…
keepalivedやiptablesに加えて、動的に拡張できる分散ファイルシステムが揃うと、多重化や負荷分散の設定はすべて自動化できる、はず。 目標は、「DSASを全自動で作る」こと。そしてカスタマイズもできて、動的な拡張も可能。 方法としては、ネットワークブ…
研究レベルでは「構造化オーバーレイ」という「次世代なP2P技術」が最先端のようですが、どうやらインターネットで使うようにフォーカスされていて、すさまじいスケーラビリティを実現する!というような話で、LANで使うには逆にオーバーヘッドが大きすぎる…
DSAS開発者の部屋で、いかにして多重化+負荷分散されたシステムを構築しているかという仕組みが公開されました。必見(+必聴)です。 「DSASのあれこれ」の資料を公開します VIVER的に重要なのは、dsas.conf。ネットワークブートすると、すべてのマシンの…
次期RUNESのために思いついたこと。 背景として、今IT業界で「動的」が流行っている。ここで言う「動的である」ということは、あらかじめ設計や仕様を固めたりせずに、そもそも変化があることを前提とし、作っているプログラムやサービスもどんどん変化させ…
VIVER 1.0をリリースしました! http://viver.sourceforge.jp/ LinuxをVIVER化する USBメモリやHDDに差分を残す USBメモリにVIVERを入れて持ち運ぶ デモディスクをダウンロード 今回のデモディスクは、VRRPを使ってHTTPサーバーを自動的に冗長化する、という…
メモじゃないエントリは余り無い。書き込み可能な分散ブロックデバイスを作る。OCFS2を併用。 たとえばこんなデータ。 0123456789012345 ***** * *** ---------------- n1 ** * n2 **** n3 ** * * n4 **** n5 *** nがノードで、*がデータ(のブロックかもし…
V-FIELDの通信分散は実装完了。結局全部線形検索で。次は、多数のマシンが一斉に起動したときにJoinで通信量が大変なことになってしまうので、Joinには帯域制限が必要。 帯域制限と言うのもどうやったら良いかよくわからない…。read()とread()の間にsleep()…
困った…とても困った…P2P分散ディスク共有システムのV-FIELDですが、一番最初に起動したノードに負荷が集中してしまうと言う問題があります。これを解決したいのですが、まったく方法が思いつかない…。 原因は、ダウンロードしたいデータを、どのノードが持…
ブート成功。ネットワークブートもOK。(ただしその後カーネルパニック) 本日(日付的には昨日)をもってVIVER 1.0を1週間で書こうプロジェクト終了。まだできていない部分: カーネル どうもVIVER 0.3のカーネル(linux-2.6.18.2-viver23)では、switch_roo…
ブートパラメータのパース 実装完了。名前空間サポート付き。 ディレクトリツリーの構築処理 実装完了。Squashfsで圧縮したカーネルモジュールディスクのマウントと、最後まで持ち運ぶtmpfsのマウント&mknod。例外処理完備。(例外なんて起こらないはずだけ…
WinKが良いです。費用対効果は絶大です。 将来計画する(時期未定)上位製品Pro版にて実現を検討しております。 に期待。
orz。えー、IOHIDSystem::doProcessKeyboardEQ()はprivateですね、はい。
MacのHuman Interface Deviceのメモ。Tiger。 最近、RealForceをゲットしました。これ、最高です。ヤバいです。 が、Mac OS Xで、無変換キーとか、かなキーとかが効かない。そもそもキーコードすら拾えない。ここにいろいろキーをセットしたいのに、できない…