2007-01-01から1年間の記事一覧

poll/epoll/kqueueを任意に切り替えられるコード

ネットワークで通信するプログラムを書いていると、ファイルディスクリプタ(ネットワークならソケット)をselectやpollで監視して、パケットが届いたら何かする、ということが良くあります。 しかしselectやpollは、*BSD で kqueue・kevent を使ってみよう…

KLab勉強会#2でしゃべります

KLab勉強会#2 のご案内 新世代Linuxネットワークブートテクノロジ「VIVER」についてしゃべります。 VIVERとは何ぞや?からはじまり、分散多重化共有ブロックデバイス「V-FIELD」の威力、今後の目論見について。 VIVERはLinuxをネットワークブートさせるシス…

個人のパフォーマンスと組織のパフォーマンス

組織では、ある人が優れたパフォーマンスを発揮できない領域を、他の人が補うことができる。個々人のパフォーマンスがうまく補間されるように構成できれば、個人がパフォーマンスを最大化することができ、組織全体のパフォーマンスは飛躍的に向上していく。…

主観的パフォーマンスと客観的パフォーマンス

優秀なSWクリエイターが、SWクリエイションにおいてとんでもないパフォーマンスを発揮することについて、論理的な思考のエントリでは、このようなパフォーマンスを発揮するには「結局訓練を積むしか無いような気もする」と書いた。だがそれ以前に、「楽しく…

個人のパフォーマンスと社会的評価の相反

今はIPAX 2007に出展する準備を進めているのですが、どうも気が乗らない。今のVIVERの紹介文を書くよりも、今は分散ファイルシステムを考えていた方がおもしろい。ふと、何故気が乗らないのかと考えてみると、考えていることが全部過去ことだからではないか…

分散ファイルシステムのインターフェース

少しずつ分散ファイルシステムの実装を進めています。aio_read()を使ったTCPコネクションマネージャの実装がだいたいできました。なんだかんだで既に3500行を突破…。 IOインターフェースについて。ファイルシステムなら、インターフェースとしてopen()やwrit…

非同期双方向TCPコネクションプールの実装メモ

TCPで、1回接続したコネクションをとっておいて、後で使い回したい。つまりコネクションプールを作りたい。これをどうやるか。4/29のエントリの続きです。V-FIELDでは、データを待ち受けるときはselect()を使って、溜めてあるソケットに変化があったら、ス…

Read/Writeロック、ブロックするQueue、色付き非同期Logger

分散ファイルシステムはマルチスレッドで作っているわけですが、マルチスレッドなら必ず使うであろう諸クラスを作成。作成と言うか、V-FIELDを作ったときに必要なものは大方作ったので、改良が主。Read/Writeロックは、普通のRead/Writeロック。C++と言えばR…

分散ファイルシステム とりあえずの実装

特に締め切りがあるわけでもなく、それに分散ファイルシステムという大がかりな話なので、じっくり作っていきたいと思っているのだけど、やっぱり動くと嬉しいので、とりあえず動くような実装を作ってみたい。ノードが落ちるたときにデータの整合性を保証を…

分散ファイルシステム 設計メモ

現在進行中の分散ファイルシステムの設計ですが、「書き込みの方法」と「ノードの復帰」と「瞬断問題」と「単一ファイルの分散」の設計が固まらない。まず、書き込みの方法。前提として多重化しているので、複数のノードに同じデータを書かなければならない…

非同期双方向TCPコネクションマネージャ

日記改題。分散ファイルシステムはまだプロトコルの設計が終わっていませんが、ちまちまとコードを書き始めています。昨日と今日は非同期で双方向な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は、大まかに言うと、ディスク(ブロックデバイス)をネットワークで読み取り専用で共有するもの。このとき、データをV-FIELDネットワークに参加しているす…

多重化・負荷分散の自動化

keepalivedやiptablesに加えて、動的に拡張できる分散ファイルシステムが揃うと、多重化や負荷分散の設定はすべて自動化できる、はず。 目標は、「DSASを全自動で作る」こと。そしてカスタマイズもできて、動的な拡張も可能。 方法としては、ネットワークブ…

作る

研究レベルでは「構造化オーバーレイ」という「次世代なP2P技術」が最先端のようですが、どうやらインターネットで使うようにフォーカスされていて、すさまじいスケーラビリティを実現する!というような話で、LANで使うには逆にオーバーヘッドが大きすぎる…

スケールアウトする分散ファイルシステム

DSAS開発者の部屋で、いかにして多重化+負荷分散されたシステムを構築しているかという仕組みが公開されました。必見(+必聴)です。 「DSASのあれこれ」の資料を公開します VIVER的に重要なのは、dsas.conf。ネットワークブートすると、すべてのマシンの…

サーバーとネットワークの動的な構築について

次期RUNESのために思いついたこと。 背景として、今IT業界で「動的」が流行っている。ここで言う「動的である」ということは、あらかじめ設計や仕様を固めたりせずに、そもそも変化があることを前提とし、作っているプログラムやサービスもどんどん変化させ…

VIVER 1.0リリース

VIVER 1.0をリリースしました! http://viver.sourceforge.jp/ LinuxをVIVER化する USBメモリやHDDに差分を残す USBメモリにVIVERを入れて持ち運ぶ デモディスクをダウンロード 今回のデモディスクは、VRRPを使ってHTTPサーバーを自動的に冗長化する、という…

メモ

メモじゃないエントリは余り無い。書き込み可能な分散ブロックデバイスを作る。OCFS2を併用。 たとえばこんなデータ。 0123456789012345 ***** * *** ---------------- n1 ** * n2 **** n3 ** * * n4 **** n5 *** nがノードで、*がデータ(のブロックかもし…

VRRP

V-FIELDの通信分散は実装完了。結局全部線形検索で。次は、多数のマシンが一斉に起動したときにJoinで通信量が大変なことになってしまうので、Joinには帯域制限が必要。 帯域制限と言うのもどうやったら良いかよくわからない…。read()とread()の間にsleep()…

V-FIELD 通信分散

困った…とても困った…P2P分散ディスク共有システムのV-FIELDですが、一番最初に起動したノードに負荷が集中してしまうと言う問題があります。これを解決したいのですが、まったく方法が思いつかない…。 原因は、ダウンロードしたいデータを、どのノードが持…

1.0進捗 2

ブート成功。ネットワークブートもOK。(ただしその後カーネルパニック) 本日(日付的には昨日)をもってVIVER 1.0を1週間で書こうプロジェクト終了。まだできていない部分: カーネル どうもVIVER 0.3のカーネル(linux-2.6.18.2-viver23)では、switch_roo…

1.0進捗

ブートパラメータのパース 実装完了。名前空間サポート付き。 ディレクトリツリーの構築処理 実装完了。Squashfsで圧縮したカーネルモジュールディスクのマウントと、最後まで持ち運ぶtmpfsのマウント&mknod。例外処理完備。(例外なんて起こらないはずだけ…

結論から言って

Mac

WinKが良いです。費用対効果は絶大です。 将来計画する(時期未定)上位製品Pro版にて実現を検討しております。 に期待。

orz

Mac

orz。えー、IOHIDSystem::doProcessKeyboardEQ()はprivateですね、はい。

IOHIDSystemメモ

Mac

MacのHuman Interface Deviceのメモ。Tiger。 最近、RealForceをゲットしました。これ、最高です。ヤバいです。 が、Mac OS Xで、無変換キーとか、かなキーとかが効かない。そもそもキーコードすら拾えない。ここにいろいろキーをセットしたいのに、できない…