DTrace and PHP

Tonight during our OpenSolaris BOF at OSCON, PHP core developer Wez Furlong was busy adding a DTrace provider to PHP. After a little bit of work (and a little bit of debugging), we got it working — and damn is it cool. Wez implemented it as a shared object, which may then be loaded via an explicit extension directive in php.ini. Once loaded, two probes show up: function-entry and function-return. These probes have as their arguments a pointer to the function name, a pointer to the file name, and a line number. This allows one to, for example, get a count of all PHP functions being called:

# dtrace -n function-entry'{@[copyinstr(arg0)] = count()}'

Or you can aggregate on file name and quantize by line number:

# dtrace -n function-entry'{@[copyinstr(arg1)] = lquantize(arg2, 0, 5000)}'

Or you can determine the amount of wall time taken by a given PHP function:

# dtrace -n function-entry'/copyinstr(arg0) == "myfunc"/{self->ts = timestamp}'
-n function-return'/self->ts/{@ = avg(timestamp - self->ts); self->ts = 0)}'

And because it’s DTrace, this can all be done on a production box — and without regard to the number of PHP processes. (So if you have 200 Apache processes handling PHP, the above invocations would aggregate across them.) When I get back, I’ll download Wez’s provider and post some more comprehensive examples. In the meantime, if you’re a PHP developer at OSCON, stop Wez if you see him and ask him to give you a demo — it’s the kind of thing that needs to be seen to be appreciated…

Finally, if you’re interested in adding your own DTrace provider to the application, language or system that you care about, be sure to check out my presentation on DTrace tomorrow at 4:30 in Portland room 255. (Hopefully this time I won’t be tortured by memories of being mindfucked by Inside UFO 54-40.)

Posted on August 4, 2005 at 2:51 am by bmc · Permalink
In: Solaris

15 Responses

Subscribe to comments via RSS

  1. Written by Robert Milkowski
    on August 4, 2005 at 8:54 am
    Permalink

    This is great! Although we’ve achived something similar without using DTrace, DTrace approach is really interesting. Where can I find patches to PHP?

  2. Written by Wez Furlong
    on August 4, 2005 at 10:16 am
    Permalink

    You can check it out from the PHP cvs tree.
    http://php.net/anoncvs.php has generic instructions; you want to check out the pecl/dtrace module.
    I’ve only tested it with PHP 5; it should also work with PHP 4.

  3. Written by Wez Furlong
    on August 4, 2005 at 10:38 am
    Permalink

    It’s probably also worth mentioning the section of the manual about building pecl extensions

  4. Written by Wez Furlong
    on August 4, 2005 at 4:48 pm
    Permalink

    You can now install the package using the pear tool:

    # pear install dtrace
    # echo “extension=dtrace.so” >> $prefix/lib/php.ini

    where $prefix is the prefix you used to configure your php install.

  5. Written by black jack internet casino
    on October 23, 2005 at 6:38 pm
    Permalink

    [Trackback] Take your time to check out the sites on black by davey find jack lyric stripes white

  6. Written by برامج
    on September 11, 2006 at 6:45 am
    Permalink
  7. Written by 56465456
    on April 4, 2007 at 2:20 am
    Permalink
  8. Written by Softps
    on April 18, 2007 at 8:03 pm
    Permalink
  9. Written by أيظن
    on April 21, 2007 at 8:02 am
    Permalink
  10. Written by 注册香港公司
    on July 16, 2007 at 9:23 pm
    Permalink

    [b]香港会计事务所
    [b]日聪注册香港公司
    登尼特香港公司注册香港登尼特:专业公司注册、香港公司注册,上海公司注册,美国公司注册,注册深圳公司,中国及海外公司.
    登尼特注册香港公司香港登尼特:专业注册公司、注册香港公司,注册上海公司,注册美国公司,注册深圳公司,中国及海外公司,香港公司注册,深圳公司注册,上海公司注册,中国公司注册。
    上海企业注册中心,专业香港公司注册主要提供香港公司注册、香港公司注册咨询,香港公司注册代办,香港公司注册办理,香港公司注册银行开户,商务秘书等一条龙服务。香港公司注册登记处,致力于注册香港公司、工商企业登记、香港会计税务、香港律师咨询等服务,是香港政府唯一的工商企业登记注册机构
    登尼特注册香港公司专业注册香港公司,权威全球公司注册,注册英、美、BVI公司,中国及全球商标注册.

  11. Written by 注册香港公司
    on July 16, 2007 at 9:25 pm
    Permalink

    登尼特北京香港公司注册
    上海公司注册中心专业注册香港公司海外公司注册、深圳公司注册、香港公司注册、注册公司、注册商标及提供注册公司的配套服务,公司注册成立后是企业运作的开始,注册香港公司电话:0755-82143660刘小姐
    登尼特注册香港公司专业服务,包括注册香港公司价格咨询,注册香港公司知识,注册香港公司的优势及发展,有需要注册香港公司的欢迎和我们联系。0755-82143660刘小姐
    海鸥注册香港公司简况,香港公司注册:包括公司名称查册核实、准备首次会议记录、准备所有法定文件、安排所有股东签署文件、担任香港公司注册法定秘书、香港公司注册处代宣誓、代付香港公司注册费用、标准章一枚、香港公司注册更改章一枚。本公司提供一切香港公司注册的业务活动。香港公司注册电话:0755-82143660刘小姐
    波仕达会计事务所专业注册香港公司服务:*注册香港公司咨询,*注册香港公司服务,本公司提供一切条件方便客户;

  12. Written by 注册香港公司
    on July 16, 2007 at 9:28 pm
    Permalink

    登尼特香港公司注册咨询
    登尼特香港公司注册,香港公司注册:包括香港公司注册名称查册核实、准备首次会议记录、准备所有法定文件、安排所有股东签署文件、担任香港公司注册法定秘书、香港公司注册处代宣誓。
    登尼特注册香港公司条件
    波仕达香港公司注册
    [b]日聪专业注册香港公司海外公司注册、深圳公司注册、香港公司注册、注册公司、注册商标及提供注册公司的配套服务,公司注册成立后是企业运作的开始,注册香港公司电话:0755-82143660刘小姐
    日聪香港公司注册简况,香港公司注册:包括公司名称查册核实、准备首次会议记录、准备所有法定文件、安排所有股东签署文件、担任香港公司注册法定秘书、香港公司注册处代宣誓、代付香港公司注册费用、标准章一枚、香港公司注册更改章一枚。本公司提供一切香港公司注册的业务活动。香港公司注册电话:0755-82143660刘小姐

  13. Written by 注册香港公司
    on July 16, 2007 at 9:30 pm
    Permalink

    日聪专业提供深圳注册香港公司服务:*注册香港公司咨询,*注册香港公司服务,本公司提供一切条件方便客户;
    日聪香港公司注册
    香港日聪注册香港公司、海鸥注册香港公司、登尼特注册香港公司、瑞丰注册香港公司、东莞注册香港公司、上海注册香港公司、代理注册香港公司、注册香港公司留言、香港公司注册处。
    登尼特注册香港公司 香港登尼特:专业注册公司、注册香港公司,注册上海公司,注册美国公司,注册深圳公司,中国及海外公司,香港公司注册,深圳公司注册,上海公司注册,中国公司注册。[b]
    Piers

  14. Written by 注册香港公司
    on July 16, 2007 at 9:30 pm
    Permalink

    [b]香港登尼特专业注册公司提供注册公司咨询0755-82143181
    [b]登尼特专业注册公司提供注册公司咨询0755-82143181
    [b]香港日聪专业注册公司提供注册公司咨询0755-82143181
    [b]登尼特专业注册公司提供注册公司咨询0755-82143181
    香港海鸥注册公司提供公司注册咨询0755-82143272
    [b]登尼特专业公司注册提供公司注册咨询0755-82143181
    [b]登尼特专业公司注册提供公司注册咨询0755-82143181
    [b]香港日聪专业公司注册提供注册公司咨询0755-82143181
    [b]登尼特专业公司注册提供注册公司咨询0755-82143181

  15. Written by 注册香港公司
    on July 16, 2007 at 9:31 pm
    Permalink

    [b]香港日聪专业公司注册提供注册公司咨询0755-82143181
    [b]登尼特专业公司注册提供注册公司咨询0755-82143181
    香港日聪商标事务所专业注册商标,包括注册香港商标,注册中国商标,注册海外商标,马德里商标注册,商标买卖,商标异议,品牌规划,商标注册,专利申请,版权登记等服务。中国区电:0755-82143272,atahkhk@21cn.com
    香港日聪商标注册网,免费提供商标注册信息查询,根据国际惯例,查询所涉及的商标注册信息仅供参考,无任何法律效力。尽管如此,国家工商行政管理总局商标局仍会尽最大努力向中外公众提供尽可能准确的商标注册信息,并及时更新商标注册数据库信息。
    登尼特专业注册公司
    香港日聪商标事务所专业注册香港商标
    香港日聪商标事务所专业香港商标注册
    香港日聪商标事务所专业中国商标注册
    香港日聪商标事务所专业注册中国商标

Subscribe to comments via RSS