对 Perf Maps 的支�¶

在�支�的平�上(在撰写本文档时,�有 Linux),�行时�以利用 perf map 文件 �使得 Python 函数对于外部性能分�工具��(例如 perf 等)。 正在�行的进行�以在 /tmp 目录中创建一个文件,其中包��将部分�执行代�映射到特定�称的�目。 本接�的�述�� Linux Perf 工具文档。

在 Python 中,这些辅助 API �供�赖于动�生�机器�的库和特性使用。

请注�这些 API 并��求�有全局解释器�(GIL)。

int PyUnstable_PerfMapState_Init(void)¶
这是 �稳定 API。 它�能在微�布版中�带警告地改�。

打开 /tmp/perf-$pid.map 文件,除�它已�被打开,并创建一个��确�线程安全地写入该文件(如果写入是通过 PyUnstable_WritePerfMapEntry() 执行的)。 通常,没有必�显�地调用此函数;�需使用 PyUnstable_WritePerfMapEntry() 这样它将在第一次调用时�始化状�。

�功时返回 0,创建/打开 perf map 文件失败时返回 -1,或者创建�失败时返回 -2。 �检查 errno 获�有关失败原因的更多信�。

int PyUnstable_WritePerfMapEntry(const void *code_addr, unsigned int code_size, const char *entry_name)¶
这是 �稳定 API。 它�能在微�布版中�带警告地改�。

� /tmp/perf-$pid.map 文件写入一个�独�目。 此函数是线程安全的。 下�显示了一个示例�目:

# address      size  name
7f3529fcf759 b     py::bar:/run/t.py

将在写入�目之�调用 PyUnstable_PerfMapState_Init(),如果 perf map 文件尚未打开。 �功时返回 0,或者在失败时返回与 PyUnstable_PerfMapState_Init() 相�的错误代�。

void PyUnstable_PerfMapState_Fini(void)¶
这是 �稳定 API。 它�能在微�布版中�带警告地改�。

关闭 PyUnstable_PerfMapState_Init() 所打开的 perf map 文件。 此函数会在解释器关闭期间由�行时本身调用。 通常,应该没有�由显�地调用此函数,除了处�特殊场景例如分��作。