Engee 文档

支持外部分析器

该页面正在翻译中。

Julia为一些外部跟踪分析器提供了显式支持,它允许您获取有关运行时环境行为的一般信息。

目前支持以下分析器:

添加新区域

宏’JL_TIMING’用于添加新区域。 要在代码库中查找示例,请搜索’JL_TIMING'。 要添加新的区域类型,请将其添加到’JL_TIMING_OWNERS'(可能还有`JL_TIMING_EVENTS')。

动态激活和停用区域

环境变量 'JULIA_TIMING_SUBSYSTEMS'允许您启用或禁用特定Julia启动的区域。 例如,当将变量值设置为'+GC,-INFERENCE`时,将启用`GC’区域,并禁用’INFERENCE’区域。

特蕾西分析仪

https://github.com/wolfpld/tracy [Tracy]是一个灵活的分析器,可以与Julia进一步集成。

使用特蕾西建造朱莉娅

要启用Tracy集成,请在`Make`中使用附加参数’WITH_TRACY=1’构建Julia。用户的文件。

安装Tracy配置文件查看器

获取配置文件查看器的最简单方法是添加’TracyProfiler_jll’包并运行分析器,如下所示:

run(TracyProfiler_jll.tracy())

在macOS中,如果分析器中的用户界面元素看起来过大,则可以将环境变量"TRACY_DPI_SCALE"设置为"1.0"。

要在没有将跟踪保存到磁盘的用户界面的情况下运行实例,请使用

run(`$(TracyProfiler_jll.capture()) -o mytracefile.tracy`)

而不是她。

有关使用Tracy用户界面的信息,请参阅Tracy手册。

使用特蕾西分析朱莉娅

使用Tracy分析Julia的标准工作流程涉及使用环境变量运行Julia。:

JULIA_WAIT_FOR_TRACY=1 ./julia -e '...'

环境变量确保Julia将等待与Tracy分析器的成功连接,然后继续执行。 之后,在Tracy profiler的用户界面中,单击"连接"。 Julia执行应该恢复,并且应该开始分析。

使用Tracy分析包的预编译

要分析包的预编译过程,最简单的方法是显式调用`Base。compilecache’与需要预编译的包。:

pkg = Base.identify_package("SparseArrays")
withenv("JULIA_WAIT_FOR_TRACY" => 1, "TRACY_PORT" => 9001) do
    Base.compilecache(pkg)
end

在这里,我们使用Tracy的自定义端口,以便更轻松地在Tracy用户界面中找到要连接的正确客户端。

向区域添加元数据

要将行(或行)添加到区域,可以使用各种函数`jl_timing_show_*`和`jl_timing_printf'。 例如,输出的跟踪区域显示正在输出的方法的实例。

使用’TracyCZoneColor’功能,您可以设置特定区域的颜色。 查看代码库以了解它是如何使用的。

在浏览器中查看Tracy文件

在网站上https://topolarity.github.io/trace-viewer /您可以找到(实验性)基于web的跟踪查看器Tracy。

你可以打开一个本地`。tracy’文件或指定来自Internet的URL(例如,Github存储库中的文件)。 如果从Internet下载跟踪文件,还可以直接与其他用户共享页面的URL,以便他们可以查看相同的跟踪。

启用堆栈跟踪样本

要在Tracy中启用调用堆栈采样,请在`Make中使用以下参数构建Julia。用户档案:

WITH_TRACY := 1
WITH_TRACY_CALLSTACKS := 1
USE_BINARYBUILDER_LIBTRACYCLIENT := 0

您可能还需要运行’make-C deps clean-libtracyclient’命令来强制执行任务重建。

此功能对跟踪大小和分析成本有重大影响,因此建议尽可能禁用调用堆栈采样,特别是如果您打算在线共享跟踪文件。

请注意,Julia中的JIT运行时尚未集成以符号化Tracy,因此Julia函数通常在这些堆栈跟踪中是未知的。

英特尔VTune Profiler(ITTAPI)

这一节还没有写好。_