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

フィボナッチ数列を計算するデバイスドライバ

Amazon から プログラミング言語Erlang入門 が届きました。どんな構成だろうね、と会社で同僚数人とわいわいやっていたら、「フィボナッチ数列を計算するサーバー」という例があって、みんなのツボに入りました。Erlang の並列計算処理能力とネットワークプ…

さくらインターネット移行記#5 久しぶりの移転作業

だいぶ間が空いてしまいましたが、久しぶりのデータセンター移行記です。 アンテナ、カウンター、検索を移転 完全移行もぼちぼちゴールが見えて来た今日この頃ですが、先日もサーバーの移行作業を行いました。はてなアンテナの巡回システム周り一式、はてな…

マルチスレッドのコンテキスト切り替えに伴うコスト

また Linux カーネルの話です。Linux では fork によるマルチプロセスと、pthread によるマルチスレッドでの並行処理を比較した場合、後者の方がコストが低く高速と言われます。「スレッドはメモリ空間を共有するので、マルチプロセスとは異なりコンテキスト…

x86 Linux のメモリモデル、プロセス空間切り替え、カーネルスタック

ひとつ前のエントリ id:naoya:20070924:1190653790 では Linux のコンテキストスイッチにおける、主にハードウェアコンテキストの退避/復帰の処理を追ってみました。その中で カーネルスタック (switch_to() 内で pushl %ebp とかして値が積まれるスタック)…

Linux カーネルのコンテキストスイッチ処理を読み解く

Linux カーネルのプロセススケジューラの核である kernel/sched.c の schedule() を読み進めていくと、タスク切り替え(実行コンテキスト切り替え)はその名も context_switch() という関数に集約されていることが分かります。2.6.20 の kernel/sched.c だと以…

ithreads でスレッドプール

マルチスレッドなサーバー実装を色々模索していて、Perl の ithreads で遊ぶ。ithreads は Linux の pthread にリンクさせた perl なら一応 NPTL で動いてくれるので、pthread アプリケーションの設計を試すのにも良い。試しににやってみたのは、たとえば mo…

WEB+DB PRESS Vol.40 / DBマガジン 2007年10月号

今月はいつもより多く雑誌記事執筆の機会がありました。WEB+DB PRESS Vol.40 ではいつもの Perl 連載に加えて Linux 開発環境特集、DBマガジン 10月号では Linux 負荷分散の話。WEB+DB PRESS Vol.40作者: 後藤章一,竹端進,角谷信太郎,池邉智洋,松永充弘,永安…

sched_setaffinity(2) を使って任意のプログラムを任意のCPU上で動かす

Linux 2.6 には sched_setaffinity(2) というシステムコールがあり、これを利用して任意のスレッドを(マルチCPU環境下で)特定の CPU で実行させることができます。http://www-06.ibm.com/jp/developerworks/linux/051028/j_l-affinity.shtml によるとリアル…

inetd の仕組みを見てみる

inetd や xinetd (以下 inetd) はインターネットサービスをデーモン化するのに共通している処理を担い、ほとんどの時間をアイドル状態で過ごすその手のサービスに必要なリソースを節約する役割を果たします。inetd のひとつ面白いところは、inetd でサービス…

デジタル一眼レフ

サーバー移転レポートの写真が綺麗、とお褒めいただきひそかに嬉しかったりします。何で撮ってるの? とときどき質問されます。僕が使っているのは Nikon の D80 に 50mm f1.4 の単焦点レンズです。 と これ。D80 を買ったきっかけは、デジイチにはまっている…

さくらインターネット移行記#4 はてなダイアリー移転

いきなり失礼しました。はてなのインフラチームの打ち上げは渋谷で焼肉と相場が決まっています。これは前回の打ち上げで行った焼肉屋での一枚。明後日にははてなダイアリーデータセンター移転打ち上げを開く予定です。...ということで、昨日ようやく、はてな…

はてなブックマークのコミュニティについて

はてなブックマークからは毎日のようにいままでは知りようがなかったすばらしい記事やニュースを得ています。こうして日記を書いた後にたくさんのフィードバックをいただいています。コメントのないブックマークでも、その一つ一つがとても嬉しい。そこに人…

しなもん

しなもん久しぶり。

Linux I/O のお話 write 編

write はページに dirty フラグを立てるだけなので決してユーザープロセスを待たせない って、本当にそうなんでしょうか?(否定しているわけではなく、純粋な疑問です。) と質問をもらったので、最近追ったことをここでまとめます。かなり長文です、すいま…

Linux の close は fsync 相当を調べる

Linuxのcloseは暗にfsyncするから、ここであげられている 100000回繰り返し open 8K write close というパターンだとfsyncコストが見えちゃうので良くないんじゃないかな とのことで、そうなのか! と思ったので例によって深追いしてみました。まず fsync(2) …

Linux のページキャッシュ

世間では PHP が、Perl が、と盛り上がっているようですが空気を読まずまたカーネルの話です。今回はページキャッシュについて。/dev/shm に参照系DBを持っていくと I/O 負荷が激減した件(当たり前だけど) - drk7jp で、ディスク上にあったファイルを /d…

*NIX初心者だったあの頃

ログインした。twm。ウィンドウを閉じようとしてもアイコンになる。途方に暮れる。 Emacs というのを使うと日本語が打てるらしいと聞いた。日本語入力への切り替え方法がわからない。立ち上げた Emacs を終了できない。 Cannna というのを使えば日本語が打て…

マルチコア時代のロードアベレージの見方

ちょっと煽り気味のタイトルですが、CPU がマルチコアになり 2個、4個と増えていく中 Linux の負荷の指針になるロードアベレージをどう読むべきか、という話です。気になったところを少し調べたのでそのまとめを。http://d.hatena.ne.jp/naoya/20070222/1172…

Web::Scraper

Today I've been thinking about what to talk in YAPC::EU (and OSCON if they're short of Perl talks, I'm not sure), and came up with a few hours of hacking with web-content scraping module using Domain Specific Languages. 使ってみたよ! #!/us…

WEB+DB PRESS vol.38

WEB+DB PRESS Vol.38 の見本誌が届きました。連載も今回で7回目。今回は POE の話の後編です。複数の HTTP サーバーに非同期で同時アクセスするクライアントプログラムを POE::Component::* に頼らずつくり、その後 POE::Component を紹介しつつ IRC bot を…

Perl and UNIX Network Programming (YAPC::Asia 2007)

YAPC::Asia で Perl UNIX ネットワークプログラミングについての発表をしてきました。UNIX ネットワークプログラミングの基礎の概論、I/O多重化の話、Perl のモダンなネットワークライブラリの話です。資料を以下に置いておきます。 http://bloghackers.net/…

はてなアンテナ欲しい!

はてなアンテナ欲しい!と日記に書くと実物大のはてなアンテナが届くそうです。こんなの届いて置く場所どうするんでしょうね。うちは豪邸なので大丈夫ですが。今日は4月1日。

さくらインターネット移行記#3 はてなブックマーク移転

さて、移行記も #3 となりました。今回は先日作業を終えたはてなブックマークの移転について。旧サーバールームからさくらインターネットのiDCへのサーバー移転作業にもだいぶ慣れて来たこのごろ。これまでは比較的はてな内の他サービスとの連携が疎になって…

Apache の Accept mutex

[Sat Mar 17 10:52:36 2007] [notice] Apache configured -- resuming normal operations [Sat Mar 17 10:52:36 2007] [notice] Accept mutex: sysvsem (Default: sysvsem)一つ前の http://d.hatena.ne.jp/naoya/20070311/1173629378 で触れた Apache の acc…

prefork サーバーと thundering herd 問題

Catalyst を POE で動かす Engine の Catalyst::Engine::HTTP::POE という実装が CPAN にあります。"Single-threaded multi-tasking Catalyst engine " だそうです。"Single-threaded" と言いつつも実装を覗いてみると環境変数 CATALYST_POE_MAX_PROC を 1 …

さくらインターネット移行記#2 VPN越しのMySQLレプリケーション

前回さくらiDCに移転し始めた、ということを書いたのですが、あれから一ヶ月ちょっとが経過しましてその後も順調に iDC への移転が進んでいます。すでにラックもいくつか借りて、サーバーも数十台がさくら iDC で稼動しています。回線がこれまでよりも高速な…

Perlでモダンなネットワークサーバーを書くには

Comet については、普及するかどうかという以前に、どう使えばいいのか、正しく使った場合に何をどこまでできるのか、という理解が共有されていないように思います。なので、(あくまで私見ですが) 使用したスライドの一部を公開したいと思います。よろしけれ…

負荷とは何か

調べごとをしたので blog に書いて理解を深めようのコーナーです。長文です。Linux でシステム負荷を見る場合にお世話になるのが top や sar (sysstat パッケージに同梱されてるコマンド) などのツールです。top ではシステム統計のスナップショットを見るこ…

WEB+DB PRESS Vol.37

見本誌届きました。今月の連載は UNIX ネットワークプログラミング入門と POE について。IO::Socket でソケットAPIをいじりながら echo サーバーを並行処理なし → fork → IO 多重化まで発展させていき、イベント駆動でネットワークプログラミングしたい故に …

スタークラフト / ウォークラフト

Mountain View のでかいショッピングモールのゲーム屋で StarCraft の Battle Chest (Brood War と攻略本のセットのやつ)を発見しました。懐かしい。日本だともうなかなか手に入らないんだろうなあ。今やってもぜんぜん遊べるゲームだと思います。$19.99。別…