Tag: dtrace

macOS Sierra中的DTrace错误

我试图在我的macOS Sierra中使用dtrace命令来configurationnode.js应用程序,如下所示: sudo dtrace -x ustackframes=100 -n 'profile-97 /pid == 35526/ { @[ustack()] = count(); } tick-60s { exit(0); }' -o out.user_stacks 这就是这样的错误: dtrace: description 'profile-97 ' matched 2 probes dtrace: error on enabled probe ID 1 (ID 37: profile:::profile-97): invalid address (0x405060700010203) in action #2 dtrace: error on enabled probe ID 1 (ID 37: […]

Dtrace的Node.js分析不会显示函数名称

我正在尝试使用DTrace为我的项目分析CPU利用率。 我只是跟着脚本 问题是它不显示函数名称。 stacks.out文件如下所示: CPU ID FUNCTION:NAME 0 73700 :tick-60s node`_ZN2v86Object3GetENS_6HandleINS_5ValueEEE+0x1 node`_ZN4node7TCPWrap12OnConnectionEP11uv_stream_si+0x14b node`uv__server_io+0xbf node`uv__io_poll+0x259 node`uv_run+0xda node`_ZN4node5StartEiPPc+0x16d node`main+0x1b node`_start+0x83 1 node`_ZN4node6Buffer4FillERKN2v89ArgumentsE+0x22b 0x82474d1b 0x8241ee9c 0x8241e624 0x8241e30f 0x82426abd 0x82419e4e 0x82419948 0x82413fc3 0x8d20e501 0x82416f65 0x82413f98 0x8243e7d3 0x824186c0 0x8246e8cf 0x8d221899 0x8d21308a node`_ZN2v88internalL6InvokeEbNS0_6HandleINS0_10JSFunctionEEENS1_INS0_6ObjectEEEiPS5_Pb+0x101 node`_ZN2v88internal9Execution4CallENS0_6HandleINS0_6ObjectEEES4_iPS4_Pbb+0xc9 node`_ZN2v88Function4CallENS_6HandleINS_6ObjectEEEiPNS1_INS_5ValueEEE+0x10b node`_ZN4node12MakeCallbackEN2v86HandleINS0_6ObjectEEENS1_INS0_8FunctionEEEiPNS1_INS0_5ValueEEE+0x4c node`_ZN4node12MakeCallbackEN2v86HandleINS0_6ObjectEEENS1_INS0_6StringEEEiPNS1_INS0_5ValueEEE+0x66 node`_ZN4node10StreamWrap12OnReadCommonEP11uv_stream_si8uv_buf_t14uv_handle_type+0x14f node`_ZN4node10StreamWrap6OnReadEP11uv_stream_si8uv_buf_t+0x2e node`uv__read+0x281 node`uv__stream_io+0x131 node`uv__io_poll+0x259 node`uv_run+0xda node`_ZN4node5StartEiPPc+0x16d node`main+0x1b node`_start+0x83 1 火焰图显示hex(即“0x82474d1b”)作为函数调用,而不是实际的函数名称。 我使用OmniOS(基于Illumos的操作系统)vagrant box r151002 […]

在Node.js程序上使用DTrace时没有函数名称

我试图根据本指南在VirtualBox中的OmniOS虚拟机上使用DTrace进行Node.js程序的CPU分析,我完全按照以下步骤设置(除了使用节点0.10.26)。 不幸的是,DTrace不给我人类可读的JS函数名称,但只是原始函数地址(据我所知),看起来像这样,并不是很有帮助: CPU ID FUNCTION:NAME 0 66407 :tick-30s node`v8::internal::String::ComputeHashField(unibrow::CharacterStream*, int, unsigned int)+0x162 node`v8::internal::Utf8SymbolKey::Hash() [clone .part.342]+0xb9 node`v8::internal::HashTable<v8::internal::SymbolTableShape, v8::internal::HashTableKey*>::FindEntry(v8::internal::Isolate*, v8::internal::HashTableKey*)+0x20 node`v8::internal::SymbolTable::LookupKey(v8::internal::HashTableKey*, v8::internal::Object**)+0x38 node`v8::internal::SymbolTable::LookupSymbol(v8::internal::Vector<char const>, v8::internal::Object**)+0x4e node`v8::internal::Heap::LookupSymbol(v8::internal::Vector<char const>)+0x34 node`v8::internal::Factory::LookupSymbol(v8::internal::Vector<char const>)+0x34 node`v8::internal::JSProxy::CallTrap(char const*, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*)+0x76 node`v8::internal::JSProxy::GetPropertyWithHandler(v8::internal::Object*, v8::internal::String*)+0x108 node`v8::internal::Object::GetProperty(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::LookupResult*, v8::internal::Handle<v8::internal::String>, PropertyAttributes*)+0x57 node`v8::internal::LoadIC::Load(v8::internal::InlineCacheState, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::String>)+0x49d node`v8::internal::LoadIC_Miss(v8::internal::Arguments, v8::internal::Isolate*)+0xbd 0xa730a376 0x8966eee0 0x8968bb7c 0xa7321899 0xa731308a 以上是运行这些命令的结果: dtrace -n 'profile-97/pid == 12345 […]

Dtrace没有收集NodeJS的任何数据

我试图用Dtrace来分析NodeJS,但是它没有正常工作。 我正在使用的命令是: dtrace -n 'profile-97/execname == "node" && arg1/{@[jstack(150, 8000)] = count(); } tick-60s { exit(0); }' > stacks.out 我得到的输出是: CPU ID FUNCTION:NAME 0 312432 :tick-30s 如果我做dtrace -l然后我得到例如: 58814 instr kernel setup_APIC_eilvt-jne 0xffffffff81045e27 58815 instr kernel setup_APIC_eilvt-je 0xffffffff81045e34 58816 instr kernel setup_APIC_eilvt-je 0xffffffff81045e38 58817 instr kernel setup_APIC_eilvt-callr 0xffffffff81045e46 58818 instr kernel setup_APIC_eilvt-callr 0xffffffff81045e6a 58819 instr […]

Mac OS X Yosemite中的Node.js dtrace错误

我在Mac OS X 10.10 Yosemite上尝试DTrace Node.js应用程序: sudo dtrace -n 'profile-97/execname == "node" && arg1/{ @[jstack(150, 8000)] = count(); } tick-60s { exit(0); }' &> /tmp/dtrace.out 这就是我所拥有的: http : //pastebin.com/NjbR2zug 有这样的错误: dtrace: error on enabled probe ID 1 (ID 28: profile:::profile-97): invalid address (0x5) in action #2 由Brew和NVM安装的Node.js,我尝试通过这两个安装启动我的app.js。 我可以尝试解决这个问题吗?

什么dtrace脚本输出的手段?

我正在跟踪我的restify.js应用程序中的DTrace探测器(将其重新定义为提供dtrace支持的node.js中的http服务器)。 我使用restify文档中的示例dtrace脚本: #!/usr/sbin/dtrace -s #pragma D option quiet restify*:::route-start { track[arg2] = timestamp; } restify*:::handler-start /track[arg3]/ { h[arg3, copyinstr(arg2)] = timestamp; } restify*:::handler-done /track[arg3] && h[arg3, copyinstr(arg2)]/ { @[copyinstr(arg2)] = quantize((timestamp – h[arg3, copyinstr(arg2)]) / 1000000); h[arg3, copyinstr(arg2)] = 0; } restify*:::route-done /track[arg2]/ { @[copyinstr(arg1)] = quantize((timestamp – track[arg2]) / 1000000); track[arg2] = 0; } […]

使用DTrace分析Node.js

我目前正在分析我的node.js应用程序。我发现这个博客: http : //blog.nodejs.org/2012/04/25/profiling-node-js/ ,这表明我应该使用Dtrace。 我使用这里给出的步骤在Ubuntu 12.04上安装了dtrace: https : //askubuntu.com/questions/60940/how-do-i-install-dtrace 但是,当我在我的terminal运行这个命令时,我的节点应用程序正在运行: dtrace -o stacks.out -n 'profile-97/execname == "node" && arg1/{ @[jstack(100, 8000)] = count(); } tick-60s { exit(0); }' 除此之外,stacks.out保持空白:CPU IDfunction:名称1 387695:tick-60s 任何build议可能是错误的?

在Linux中分析Node.JS(代码)的执行时间

我正在寻找一种方法来在Linux上执行精确的Node.JS脚本执行时间分析 。 有一些有趣的项目,比如NodeTime.com性能分析器 ,但是这个分析了I / O httprequests的时间 ,而不是代码行的执行时间 。 我正在寻找一种方法来确定我可以优化我的Javascript, 大部分时间都花在哪里等。 我见过的一个有趣的方法是尝试使用DTrace创build一个FlameGraph来分析Node.JS. 但是, dtrace是非常特定于Solaris的。 对于Linux(Debian / Ubuntu),可以在sytemtap-sdt-dev包中finddtrace 。 但是, stap dtrace并不相同,并且缺less所有相关的钩子/探针。 Paul Fox从Unix版本中创build了一个端口。 它的function更完整,但是挂钩/探测器在Solaris用户空间中不起作用,也不能用于剖析节点。 ftp://crisp.dyndns-server.com/pub/release/website/dtrace/ (构build起来非常简单,请参阅自述文件。) 还有一个Oracle端口,但没有人会推荐它。 显然,它只有大约0.1%的保罗福克斯港口的探测器。 (具有讽刺意味的是,因为Oracle曾经是Sun原始作者,而Solaris是dtrace原创者) 如何在Linux中使用terminal或使用Eclipse,我可以剖析我的Node.JS脚本的代码? 我正在寻找特定的东西,比如Zend Profiler在PHP脚本代码中显示每个命令的执行时间。