2012年7月9日月曜日

thread_cacheの性能

前にstraceでmmap覗いた時からちょこちょこ気になってたので、
threadの生成時間にどれくらいかかるのよってのを見てみた。


投げ遣りな負荷プログラムを書く。

-------------------------------------------------------
#!/usr/bin/perl

use strict;
use warnings;
use DBI;
use Time::HiRes;

for (my $n = 1; $n < 8; $n++) { fork() };

my $tStTime = Time::HiRes::time;
my $oConn = DBI->connect("DBI:mysql:d1:localhost","root") or die print $!;
my $tEdTime = Time::HiRes::time;

print STDOUT ($tEdTime - $tStTime),"\n";

sleep();
-------------------------------------------------------

これで128連続でMySQLにConnectだけしてくれるので、平均値を計算。
見ての通りコネクトしかしていないので云々。


thread_cache = 0 .. 平均0.49sくらい。
thread_cache = 250 .. 1回目(キャッシュなし)は0.54sくらい、2回目以降(キャッシュが作られてる)は0.45sくらい。

ついでに、mixiではskip-grant-tablesを使って少しでも速度を稼いでるという話を目にしたのでやってみる。

thread_cache = 0 .. 平均0.43sくらい。
thread_cache = 250 .. 1回目は0.43sくらい、2回目以降は0.38sくらい。


やっぱり数十ミリ秒の戦いで利く、くらいなのだね、どっちも。

0 件のコメント :

コメントを投稿