タグ

ブックマーク / labs.cybozu.co.jp (6)

  • TAKESAKO @ Yet another Cybozu Labs: [Debug Hacks] #66.手元のx86マシンが64bitモード対応かどうかを調べる

    日オライリージャパン様より「Debug Hacks――デバッグを極めるテクニック&ツール」の献をいただきました。著者の皆様、出版社の皆様ありがとうございます。 とりあえず、ざっくりと気になる章だけをかいつまんで読んでみたのですが、最後の章「#66.手元のx86マシンが64bitモード対応かどうかを調べる」では、/proc/cpuinfo で lm の文字列を探す方法と、以下のような CPUID 命令を発行して今自分が使っているマシンのCPUが64bitに対応しているかどうかを調べるハックが紹介されていました。 #include <stdio.h> void cpuid(int op, unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx) { __asm__("cpuid" : "=a" (

    aprl
    aprl 2009/04/22
  • Kazuho@Cybozu Labs: SSD (フラッシュメモリ) のベンチマークと選定基準

    ベンチマークに使用したのは、一般的な HDD、高速性で有名な Intel の SSD、ネットブック (DELL Inspiron Mini 9) の内蔵 SSD (STEC 製, 32GB)、および SanDisk の SDHC カード (SanDisk Extreme III) です注。 この表を見て2つの SSD を比較すると、読み込みパフォーマンスの差がそれほど大きくないことに気づきます。また、SD カードの読み込み速度も、HDD を大きく上回っています。つまり、ランダムリードについては、メーカーや SSD 間の差は、あまり大きくない、ということになります。 一方で、書き込みパフォーマンスについては、非常に大きな差があります。X25-M と STEC の SSD の差は、実に 50 倍にのぼります (SSD の書き込みバッファをオフにした場合の値はこちらの表を参照のこと)。また、SD

    aprl
    aprl 2009/02/11
    X25-Mのランダムライト性能(16KB単位) は、STECの50倍であった。また、Maxtorの4倍であった。
  • Kazuho at Work: Using Top N Sort on MySQL

    One of the best practices on using MySQL is to avoid filesort. However there are cases where it is inevitable (e.g. ordering the result of fulltext search by modification date), and although in most cases we only the top N rows of sorted resultset are needed, MySQL does not implement top N sort. After wondering for couple of months if I should hack the MySQL core to implement top-N-sort, today I d

    aprl
    aprl 2008/12/15
  • Kazuho@Cybozu Labs: MySQL の ORDER BY を高速化

    « MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話 | メイン | なんとなくリフレクション in C++ » 2008年06月20日 MySQL の ORDER BY を高速化 Pathtraq の拡張にむけて、いろいろ技術的な可能性を調査していると、MySQL の ORDER BY に負荷がかかっていることが分かりました。他にもボトルネックはあるのですが、ここは比較的最適化しやすそうだったので、試しに書いてみました。 mysql51-sort-opt.patch やっていることは、ソートルーチンのベタな最適化です。ORDER BY 句によって悪名高き filesort が実行される場合に、最大30%〜50%ほど高速に動作するようになりました。ただ、自分が書く類いのクエリだと、質的には top n sort を実装すべきなので、どうしたものかと思っていま

    aprl
    aprl 2008/06/22
  • Kazuho@Cybozu Labs: MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話

    « フレンド・タイムライン処理の原理と実践 | メイン | MySQL の ORDER BY を高速化 » 2008年06月12日 MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話 フレンド・タイムライン処理の原理と実践 の続きです。 先のエントリでは、プルモデルの速度が当初予測していたよりも遅かった (というより SQL レイヤでのオーバーヘッドが大きそうだった) ので、MySQL Internals メーリングリストで質問したりしながら、C++ で直接 InnoDB にアクセスするようなコードを書いてみました。 タイムライン構築速度 タイムライン/秒 SQL そしたら、10倍以上高速に! ベンチマークを perl ベースのものから mysqlslap に変えたのですが、プッシュモデルの 2/3 の速度が出ています。これなら、データサイズが約 1/10 にな

    aprl
    aprl 2008/06/13
  • Kazuho@Cybozu Labs: MySQL のウォームアップ (InnoDB編)

    « DBIx::Printf と LIKE 式 | メイン | メッセージキュー事始め in Perl - コマンドラインクライアントを作ってみた » 2007年10月11日 MySQL のウォームアップ (InnoDB編) サーバの起動直後はデータがメモリ上にないためデータベースの応答速度が遅い、というのは良く知られた話かと思います。MySQL の場合、使っているエンジンが MyISAM であれば、各データファイルをあらかじめ cat ... > /dev/null するなりしてバッファキャッシュに載せておけばいいのですが、InnoDB は独自のキャッシュを持っているのでそういうわけにもいかないように思います。 具体的には、パフォーマンスを最大限発揮するためには OS のキャッシュにではなく、InnoDB のバッファプールにデータをロードすべきであるという点。それに、たとえ OS のキャ

    aprl
    aprl 2007/12/23
    サーバの実メモリの過半をバッファプールに使用しているような場合だと、バッファプールを確保するために OS のキャッシュにロードしたデータが破棄されるケースが出てくるという点が、問題となるのでは
  • 1