DTrace
中关联数组(associative array
)所占据的内存容量是由可调节参数dynvarsize
决定的。由于每次DTrace
脚本运行时,内存都会根据dynvarsize
分配好。因此一旦耗尽,就会报出“dynamic variable drops
”的错误。以下列程序为例:
dt[......]
DTrace
中关联数组(associative array
)所占据的内存容量是由可调节参数dynvarsize
决定的。由于每次DTrace
脚本运行时,内存都会根据dynvarsize
分配好。因此一旦耗尽,就会报出“dynamic variable drops
”的错误。以下列程序为例:
dt[......]
DTrace
可以通过-x
指定编译或运行时的选项。以下列命令为例:
# dtrace -n 'syscall::write:entry /pid == $target/ { printf("Written %d bytes\n", arg2); }' -c "dd if=/dev/zero[......]
这篇文章参考自Rust Profiling with DTrace and FlameGraph on OSX ,不同之处在于我使用的是操作系统是FreeBSD
。使用DTrace
和火焰图分析Rust
程序的步骤如下:
(1)如果编译Rust
的release
版本程序,需要在Cargo.to[......]
下面这个DTrace
脚本可以记录哪些程序kill
掉了其它进程:
#!/usr/sbin/dtrace -qs
proc:::signal-send
/ (args[2] == SIGKILL) /
{
printf("[%s - %d - %d] sent SIGKILL[......]
FreeBSD
上安装DTrace Toolkit
可以使用下面两种方式:
(1)
cd /usr/ports/sysutils/DTraceToolkit/ && make install clean
(2)
pkg install dtrace-toolkit[......]