タグ

ブックマーク / kzk9.net (19)

  • C言語: UNIX最速ファイルコピー

    Created: Kazuki Ohta, 2006/06/14 Last Update: Kazuki Ohta, 2006/06/14 「write(2)の正しい使い方」と同じく、OS演習でやった事の延長線の記事を書いてみる。お題は「UNIX上で大規模ファイルを最速でコピーする方法」だ。一般的に、UNIXでファイルをcopyする際には以下のような方法が有る。 read -> write read -> write with posix_fadvice mmap -> mmap -> memcpy -> fsync mmap -> mmap -> memcpy -> fsync with madvise mmap -> write mmap -> write with madvise read, write, mmap辺りは良いとして、posix_fadviseというシステムコールが有

    kamipo
    kamipo 2011/03/01
  • libevent-1.3b, libmemcached-1.4.4 で固まる? - moratorium

    libevent-1.3b, libmemcached-1.4.4 で固まる? 2010-08-13 (Fri) 0:56 Uncategorized mixiの件について、nealさんから情報を貰ったので数時間調査してみた。というのも、うちの製品でもlibevent(evhttp)をリクエスト処理に使っているので、これにバグが有ると非常に困る。 Nealさんのつぶやき ひとまず、libevent-1.3b, libmemcached-1.4.4をビルドする。memcachedは、-cで同時接続数を制限できる。で、この同時接続数というのは、実はファイルディスクリプタの数を制限する事で達成されている。memcached.cの以下の部分。 /* * If needed, increase rlimits to allow as many connections * as needed. */

  • C(++)言語: valgrindの使い方

    ubuntu% uname -a Linux ubuntu 2.6.12-10-386 #1 Sat Mar 11 16:13:17 UTC 2006 i686 GNU/Linux ubuntu% valgrind --version valgrind-3.0.1 (0) 目次 Valgrindに含まれるツール Memcheck: メモリエラーを検出する(default) Cachegrind: キャッシュミスを検出する Massif: ヒーププロファイラを使う まとめ valgrindの使い方とエラーメッセージを整理してみた。「valgrind --leak-check=full command」というコマンドラインをよく用いる。これによりメモリ周りのバグを検出出来る。 --tool=cachegrindではプログラム実行時のキャッシュミス率を測定する事が出来る。cg_annotateを

  • Thriftを利用したログからの復旧機能の実装 - moratorium

    Thriftを利用したログからの復旧機能の実装 2008-02-13 (Wed) 23:16 Thrift さてさて卒論発表終わりましたよ。寝まくり&飲んだくれ&焼肉。暇な人遊んで。 最近、多言語RPC機構が欲しくなる機会が多く、Thriftを使ってみたりしています。 公式ページ 公式White Paper フレームワーク 「 Thrift 」 調査報告 まずは3つ目のサイボウズ開発部アルバイトの山さんの記事を読むと、thriftがどういうものなのかが分かると思います。簡単に言いますと、RPCAPIを独自記法で定義したファイルを用意し、それをthriftコンパイラに入力として与えると、各言語用にRPC用のコードを自動生成してくれるというものです。 クライアント・サーバーコードを各言語で書けるのは当然として、マルチスレッド型・イベント型などサーバーの種類を選べる等々、色々気が利いていて

  • Amazon CloudWatch を使ってみた - moratorium

    Amazon CloudWatch を使ってみた 2009-05-19 (Tue) 5:01 Amazon EC2 Amazon EC2で、Amazon CloudWatch(インスタンス監視サービス)、Amazon Elastic Loadbalancer(ロードバランサー), Amazon AutoScaling(自動スケールアウト機構)がリリースされました。 New Features for Amazon EC2: Elastic Load Balancing, Auto Scaling, and Amazon CloudWatch by Jeff Barr Automating the management of Amazon EC2 using Amazon CloudWatch, Auto Scaling and Elastic Load Balancing by Werner

  • C言語: 実行時間測定の方法

    C言語において実行時間を測定する為の方法はいくつかある。gettimeofday, clock, getrusage, timesを利用する方法である。ここではこれらの方法について検証してみる。これは2005/12/30時点での情報であり、古い亊が考えられるので注意して頂きたい。さらに、内容のほとんどはmanを移しただけなので、正確な情報を得るためにそれぞれの関数のmanを見ることを強く推奨する。 System: Linux 2.6.12 glibc: glibc 2.3.5-1ubuntu12 gettimeofdayを使用する方法 通常はこの関数を使用するのをお勧めする。 gettimeofdayはSVr4, BSD 4.3準拠である。返り値の型はsys/time.hに定義されるstruct timevalで有る。

    kamipo
    kamipo 2009/04/17
  • 常駐型サーバープログラムのデバッグ手法

    BOOK: WEB+DB Press TITLE: 常駐型サーバーのデバッグ手法(ドラフト版) AUTHOR: (株)プリファードインフラストラクチャー 太田一樹 *注: この文章はWEB+DB PRESS Vol.48に掲載された記事のドラフト版です はじめに 今回はデバッグ関連特集ということで、常駐型サーバープログラムを作成する際のハマりどころやそれに対する解析方法・解析ツール・対策を、実際の経験を交えながら紹介したいと思います。 筆者は(株)プリファードインフラストラクチャーでインメモリ分散検索エンジン「Sedue (セデュー)」を開発しています。モバイル向け検索エンジン「エフルート」や、2008/11/6にリニューアルされました「はてなブックマーク2」などの検索バックエンドとして使われております。 この検索エンジンはいくつかの常駐型サーバープログラムから構成されており

  • Amazon Elastic MapReduceを使ってみた - moratorium

    Amazon Elastic MapReduceを使ってみた 2009-04-03 (Fri) 3:06 Amazon EC2 連日のEC2ネタです。日、AmazonからElastic MapReduceというサービスがリリースされました。大規模データ処理技術が一気に民間の手に下りてくる、まさに革命的なサービスだと思います。 Amazon Elastic MapReduce Amazon ElasticMapReduce 紹介ビデオ With Hadoop, Amazon Adds A Web-Scale Data Processing Engine To Its Cloud Computer by techcrunch.com Elastic MapReduceは、Googleの基盤技術の一つであるMapReduceを時間単位課金で実行できるサービスです。MapReduceについては以

  • WordPressにキャッシュ導入 & モバイル対応 - moratorium

    WordPressにキャッシュ導入 & モバイル対応 2009-04-09 (Thu) 23:42 WordPress 前のAmazon Elastic MapReduceの記事でアクセス集中し、サーバーの負荷が微妙に高そうだったので、WordPress用のキャッシュプラグイン “WP Super Cache” を導入しました。 WP Super Cache ついでに、携帯でもブログを見れるように “Ktai Style” も導入しました。WP Super Cacheとの相性が悪かったようなのですが、Ktai Style 1.70 から、WP Super Cache 0.6.8 以降を利用していれば大丈夫になったようです。 Ktai Style それに合わせてGoogle Sitemaps Generatorを少し改変して、モバイルサイトマップ対応にしました。 Google Sitemap

  • Amazon EC2 Reserved Instance購入 - moratorium

    Amazon EC2 Reserved Instance購入 2009-03-28 (Sat) 14:35 Amazon EC2 EC2 Reserved Instanceを1つ(1year, small, us-east-1b)購入し、kzk9.netをその上で稼働させ始めました。 これによって、年間コストが $876 から $325 になりました。 移行には以下のエントリが参考になりました。有難うございます。 Amazon EC2のReserved Instancesを使ってみる EC2 Reserved Instanceを使う 稼働中のインスタンスをReserved Instanceには出来ないようだったので、AMIを作成して丸ごとコピーを取りってから、それを使用して新しいインスタンスを立ち上げました。 Elastic IPを新しいインスタンスに結びつけるための数秒のダウンタイムで移

  • C言語で実行時バックトレース - moratorium

    C言語で実行時バックトレース 2006-07-30 (Sun) 2:43 Unix glibcにはbacktrace()という便利な関数が有るらしいのですが、あえてその中身を自分で実装してしまおうという暇潰しをしてみました。 x86に限ると以下の様な感じでスタックフレームにアクセス出来てしまいます。 int get_stack_trace(void **result) { void **sp = (void**)&result - 2; // sp[0] : pointer to previous frame // sp[1] : caller address // sp[2] : first argument int n = 0; while (sp && n < 100) { result[n++] = *(sp + 1); void **new_sp = (void**)(*sp);

    kamipo
    kamipo 2009/03/24
  • libaio(Linuxの非同期I/Oライブラリ)の使い方 - moratorium

    libaio(Linuxの非同期I/Oライブラリ)の使い方 2007-06-05 (Tue) 4:53 Unix Linuxで非同期I/Oを行うためのライブラリ「libaio」の使い方を書いてみる事にする。少し昔の話になるが、lighttpdが使用し、スループットを80%も上げたらしい。 TOEFLに向けて転置ファイルについての論文(Inverted files for text search engine [moffat 06])でReading対策をしていたところ、意外とスニペット(検索にヒットした箇所の前後の文章)を作るところが時間がかかるという事を教えてもらったので、適当にそれを例題にしてみる。具体的には以下のようなコードを非同期I/Oを使用して速くなるかどうか見てみる。 for (unsigned int i = 0; i < files.size(); i++) { FILE*

    kamipo
    kamipo 2009/03/24
    非同期I/Oを使えばファイル分だけI/O要求を一気に出しておけば、それをI/O Schedulerが賢くスケジューリングし、全体としての読み込み時間をminimizeする事が出来る。
  • kzk9.netをEC2へ移行 - moratorium

    日、kzk9.netAmazon EC2上(1 Small Instance)に移行しました。 合わせて、今までブログツールとしてMovabileTypeを使用していたのを、WordPressに移行しました。以下のエントリが非常に参考になりました、ありがとうございます。 固定リンクを変えずにスムーズにMovableTypeからWordPressに移行するまでの作業ログ また、以下のテーマ・プラグインを使用させて頂いています。 wp.Vicuna Ext Vicuna Adapter - はてな系 FeedLocations - FeedURLの変更 まだ色々と調整中ですが、完全移行に向けて、ちまちまと作業して行きたいと思います。レスポンスの方ですが、少し気になりはしますが、E-Mobileで日常的に過ごしている自分としてはあまり気にならないレベルじゃないかと。 元々kzk9.netはM

  • Key-Value Store 勉強会を開催しました。 - moratorium

    Key-Value Store 勉強会を開催しました。 2009-02-26 (Thu) 3:08 勉強会 もう先週の金曜日になりますが、Key-Value Store勉強会というのを開きました。 既に素晴らしいまとめエントリが有りますので、詳細はこちらをご覧下さい。 Key-Value Store勉強会に行ってきました by katsumaさん Key-Value Store勉強会 by shudoさん はてなブックマーク「kvs」タグ UStream録画動画 by ichiiさん 日経BP社 中田さまには、草の根的勉強会にも関わらず、記事にして頂きました。有難うございます。 「キー・バリュー型データストア」開発者が大集合した夜 また、講師の方々に発表資料等をアップロードして頂いております。 末永さん: 全文検索エンジンgroongaをテストリリースしました 山田さん: About L

  • Googleのロギングライブラリgoogle-glogを使ってみる - moratorium

    Googleのロギングライブラリgoogle-glogを使ってみる 2008-10-15 (Wed) 15:23 Google OSS “google glog”で探せないgoogle-glogを軽く使ってみました。Googleからオープンソースで公開されたC++向けのロギングライブラリです。以下のエントリが参考になります。 C++ のプログラムのデバッグを楽にする方法 google-gflags 1.0と、google-glog 0.1をダウンロードしてインストールします。今回はgoogle-gflagsを使用する場合についてのみ記述します。また、glogのマニュアルに一通り目を通してから読まれると良いかと思います。 まずはとにかく動かしてみます。 #include int main(int argc, char **argv) { google::InitGoogleLogging(a

  • google-perftools(tcmalloc)の使い方 - moratorium

    google-perftools(tcmalloc)の使い方 2007-12-17 (Mon) 22:59 Google OSS PFIでは毎週1人適当な話題で発表しているのですが、この間「GooglePerfToolsの使い方」という軽いお題で発表した資料を公開してみます。メモリ周りの問題は大変ですよね…。 google-perftools - Fast, multi-threaded malloc() and nifty performance analysis tools 肥え続けるTomcatと胃を痛めるトラブルハッカー ローテクなメモリ使用量監視方法 特にC++で長期運用中のメモリリークに苦しんでおられる方には役立つかと思います。基的にドキュメントの日語訳ですが。SlideShareだとなぜか図がずれるので、元ファイルをこちらに置いておきます。 | View | Upload

  • Hadoop + Luceneで分散インデクシング - moratorium

    Hadoop + Luceneで分散インデクシング 2008-08-27 (Wed) 1:07 Hadoop Hadoop (0.17系) + Lucene (2.3系) で検索用インデックスを分散インデクシングするコードを公開してみます。HDDに眠らせてるのはちょっともったいない。 いきなりソースコード。 package net.kzk9; import java.io.*; import java.util.*; import org.apache.hadoop.conf.*; import org.apache.hadoop.fs.*; import org.apache.hadoop.io.*; import org.apache.hadoop.mapred.*; import org.apache.hadoop.util.*; import org.apache.lucene.i

  • Thread Base MapReduce - moratorium

    Thread Base MapReduce 2007-01-09 (Tue) 0:29 Uncategorized 並列計算フレームワークを作っている人を見てたら自分もなんか作りたくなって来たので、スレッドベースでGoogleMapReduceを真似て見ました。1マシン用のMapReduceといった所ですかね。 以下にソースコードが有ります。適当に煮るなり焼くなりしてください。 ソースコード ワードカウントが以下のようなコードで記述できます。 [code] class WordCounter : public Mapper { public: virtual void Map(const MapInput& input) { string text = input.value(); istringstream iss(text); string word; while

  • 「プロトコルバッファー」がオープンソース化 - moratorium

    「プロトコルバッファー」がオープンソース化 2008-07-08 (Tue) 7:19 Google OSS Googleで使用されているRPC/シリアライズフレームワーク「ProtocolBuffer」がオープンソース化されたらしい via @ohkuraさん ProtocolBuffers, our serialized structured data, released as Open Source プロトコルバッファー チュートリアル おーおーお、GoogleTestといい何かオープンソース化ラッシュですね。FacebookのThriftと比較してC++, Java, Pythonしかバインディングが無いので、PHPとかPerlとか使ってる場合はまだ移行できなさそう。 この2つは週末に時間とってじっくり調べてみようー。 追記: RPCの部分は無くて、シリアライズのところしかなかっ

  • 1