[Dbix-class] profiling Cat/DBIx app

Frank Speiser frank at takkle.com
Fri Jul 20 21:50:35 GMT 2007


jason konrad wrote:
> I was doing some profiling of our Cat/DBIx application which is 
> running in a mod_perl environment. I'm currently using DBIx::Class 
> 0.07005. I was surprised to see DBIx::Class::Row::get_columns at the 
> top of the list for taking the most time. The server was under a very 
> high load during these tests. I'm thinking that the fact that the 
> server was under a very high load it was causing the response from 
> mysql running on the same machine to be a bit slow. WHich would make 
> sense but then I noticed from the calling tree that for every call to 
> get_columns a Data::Dumper object was being created and that seems a 
> bit strange.
>
>  Here is some output from dprofpp
>
> # dprofpp -r /tmp/dprof/27422/tmon.out
> Storable::_freeze has 1 unstacked calls in outer
> Catalyst::__ANON__ has -95 unstacked calls in outer
> AutoLoader::AUTOLOAD has -1 unstacked calls in outer
> DBIx::Class::Row::get_column has 94 unstacked calls in outer
> bytes::length has 1 unstacked calls in outer
> Total Elapsed Time = 108.3457 Seconds
>          Real Time = 108.3457 Seconds
> Exclusive Times
> %Time ExclSec CumulS #Calls sec/call Csec/c  Name
> 34.3   37.21 37.289    190   0.1959 0.1963  DBIx::Class::Row::get_columns
> 9.35   10.13  2.759     95   0.1066 0.0290  Catalyst::__ANON__
> 7.58   8.212 11.061    665   0.0123 0.0166  Tree::Simple::_insertChildAt
> 6.16   6.670  0.149    665   0.0100 0.0002  DBIx::Class::Row::get_column
> 2.39   2.592  2.806    570   0.0045 0.0049  
> kRad::Util::Helpers::placeholder
>
> # dprofpp /tmp/dprof/27422/tmon.out
> Storable::_freeze has 1 unstacked calls in outer
> Catalyst::__ANON__ has -95 unstacked calls in outer
> AutoLoader::AUTOLOAD has -1 unstacked calls in outer
> DBIx::Class::Row::get_column has 94 unstacked calls in outer
> bytes::length has 1 unstacked calls in outer
> Total Elapsed Time = 108.5012 Seconds
>   User+System Time = 6.871273 Seconds
> Exclusive Times
> %Time ExclSec CumulS #Calls sec/call Csec/c  Name
> 46.5   3.195  4.574    665   0.0048 0.0069  Tree::Simple::_insertChildAt
> 18.2   1.256  1.334    570   0.0022 0.0023  
> kRad::Util::Helpers::placeholder
> 17.0   1.173  0.029     95   0.0123 0.0003  Catalyst::__ANON__
> 10.5   0.726  0.020    665   0.0011 0.0000  DBIx::Class::Row::get_column
> 2.43   0.167  0.205    190   0.0009 0.0011  DBIx::Class::Row::get_columns
>
>
> Then a snippet from the calling tree.
>
> DBIx::Class::InflateColumn::new
> DBIx::Class::Row::new
> DBIx::Class::Row::insert
> DBIx::Class::Row::get_columns
>    Data::Dumper::new
>    Data::Dumper::DESTROY
>    DBD::_::db::prepare_cached
> DBIx::Class::Row::get_column
>    DBI::common::FETCH
>    AutoLoader::__ANON__
>    Storable::_freeze
>       Storable::net_mstore
>    Storable::_freeze
>       Storable::net_mstore
>    DBIx::Class::ResultSet::__ANON__
>    DBD::_::db::prepare_cached
> DBIx::Class::InflateColumn::new
> DBIx::Class::Row::new
> DBIx::Class::Row::insert
> DBIx::Class::Row::get_columns
>    Data::Dumper::new
>    Data::Dumper::DESTROY
>    DBD::_::db::prepare_cached
> DBIx::Class::Row::get_column
> DBIx::Class::Row::get_column
> DBIx::Class::Row::get_column
> DBIx::Class::Row::get_column
>    Storable::mretrieve
> DBIx::Class::Row::get_column
> DBIx::Class::Relationship::CascadeActions::update
> DBIx::Class::InflateColumn::update
> DBIx::Class::Row::update
> DBIx::Class::Row::get_column
>    DBD::_::db::prepare_cached
>    Tie::IxHash::FIRSTKEY
>    Tie::IxHash::FIRSTKEY
>
>
>
> Thanks,
>   konrad
>
>
>
>
>
>
> _______________________________________________
> List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
> Wiki: http://dbix-class.shadowcatsystems.co.uk/
> IRC: irc.perl.org#dbix-class
> SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
> Searchable Archive: 
> http://www.mail-archive.com/dbix-class@lists.rawmode.org/
>
Hi Konrad,

Are you running your server with the -d flag on ?
If you are, turn that off and run your tests again.

-Frank

-- 
Frank Speiser
CTO
TAKKLE, Inc.
212.792.5854 (work)
212.792.5859 (fax)
frank at takkle.com




More information about the Dbix-class mailing list