Profiling memory usage
Last updated on
13 May 2021
This documentation needs work. See "Help improve this page" in the sidebar.
Original article is here, follow that for most of the process: http://derickrethans.nl/xdebug_and_tracing_memory_usage.php
My xdebug settings:
zend_extension="/usr/lib/php5/20060613/xdebug.so"
xdebug.profiler_enable_trigger = on
xdebug.profiler_output_dir = /home/catch/www/cachegrind
xdebug.remote_enable = 1
xdebug.remote_port = 9000
xdebug.remote_host = localhost
xdebug.profiler_output_name = cachegrind.out.%R
xdebug.profiler_append = TRUE
xdebug.auto_trace = 1
xdebug.trace_format = 1
although the trace files end up in /tmp for me.
When you run the script sorting by 'memory own' - i.e. how much memory each function consumes, you'll get a table like this:
Showing the 30 most costly calls sorted by 'memory-own'.
Inclusive Own
function #calls time memory time memory
-------------------------------------------------------------------------------
drupal_load 37 0.0140 799248 0.0055 535792
_registry_check_code 7 0.0032 475792 0.0010 321200
_drupal_bootstrap_full 1 0.0414 1721632 0.0016 303904
has_krumo 1 0.0038 301152 0.0033 300848
drupal_bootstrap 3 0.0717 3154272 0.0012 295224
_drupal_bootstrap_database 1 0.0006 258424 0.0005 248528
module_load_include 7 0.0024 196928 0.0012 194248
require_once 31 0.0055 437816 0.0026 114032
unserialize 8 0.0004 86696 0.0004 86696
Database::openConnection 1 0.0012 80344 0.0003 73944
system_list 3 0.0092 64296 0.0016 51344
ob_start 1 0.0000 41016 0.0000 41016
drupal_static 63 0.0041 31560 0.0028 31560
require 4 0.0007 149464 0.0002 19848
module_implements 8 0.0032 86808 0.0006 13824
PDOStatement->fetchObject 6 0.0002 10760 0.0002 10760
PDOStatement->execute 11 0.0056 10592 0.0056 10592
include_once 34 0.0066 212480 0.0024 10344
module_list 4 0.0097 74128 0.0002 9560
_drupal_bootstrap_variables 1 0.0058 131056 0.0002 8552
_drupal_bootstrap_page_cache 1 0.0088 402848 0.0003 8496
variable_get 39 0.0009 8320 0.0009 8320
drupal_get_filename 85 0.0039 7408 0.0029 7408
PDO->prepare 7 0.0008 6784 0.0003 5920
MergeQuery_mysql->__toString 1 0.0002 7552 0.0001 5744
drupal_environment_initialize 1 0.0005 7312 0.0002 5416
DatabaseConnection->prefixTables 11 0.0011 10304 0.0006 5248
define 174 0.0035 5200 0.0035 5200
strtr 11 0.0003 5056 0.0003 5056
drupal_settings_initialize 1 0.0018 12600 0.0004 4784
I've also attached a patch to xdebug/api which makes it work on PHP5.2 - only works with memory-own sorting, but that's good enough for our purposes.
Help improve this page
Page status: Needs work
You can:
You can:
- Log in, click Edit, and edit this page
- Log in, click Discuss, update the Page status value, and suggest an improvement
- Log in and create a Documentation issue with your suggestion