提高PYKD heap\u stat性能,禁用RtlValidSecurityDescrip

2024-05-12 14:59:34 发布

您现在位置:Python中文网/ 问答频道 /正文

在使用heap_stat(一个基于PYKD库的Python脚本,用于在Windbg环境中运行Python脚本)时,我对这个脚本执行其工作所需的大量时间感到沮丧。你知道吗

因此,我使用“Very Sleepy”启动了一个分析会话,结果如下:

Name                        Exclusive  Inclusive  % Excl.    %Incl.   Module
RtlValidSecurityDescriptor   2561.56s   5123.12s   50.00%   100.00%    ntdll
ZwWaitForSingleObject        1280.78s   1280.78s   25.00%    25.00%    ntdll
NtUserWaitMessage            1279.73s   1279.73s   24.98%    24.98%   win32u

如您所见,大部分时间都花在函数中,检查一些有效性(我认为不需要)。有没有办法禁用此检查(Windows配置、注册表设置等)?你知道吗

在第一条评论后编辑
由于请求了xperf分析,我执行了以下xperf命令:

启动分析:

xperf -start "DDS_LoggerName" -StackWalk ObjectCreate+ObjectDelete+ObjectReference -heap -Pids 28068

停止分析:

xperf -stop "DDS_LoggerName"

我已经用Windows Performance Analyzer打开了结果(不完整,因为我第一次想看看结果是什么样子),但这对我来说毫无意义。我相信我的xperf配置不好。我需要如何启动xperf评测,以便能够度量哪个函数需要多少时间?你知道吗


Tags: 函数name脚本windows时间statheapvery
1条回答
网友
1楼 · 发布于 2024-05-12 14:59:34

我看到了你的xperf日志,这里是你的结果:

25%CPU接到电话 heap\u output=dbgCommand('!heap-h 0').split('\n')

75%回路 对于heap\u输出中的heap\u块: CPU的主要消耗者是pykd.ptrPtr公司你知道吗

CPU丢失的主要原因是大量调用dbgeng!调试引擎在内部刷新回调。事实上,所有的调试引擎函数都回忆起这个方法,我不明白为什么。你知道吗

我可以建议你重构堆_统计数据并用ptrDword或ptrQword重写自己的ptrPtr函数,这样可以减少CPU损耗。你知道吗

相关问题 更多 >