首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提高PYKD heap_stat性能,禁用RtlValidSecurityDescriptor

提高PYKD heap_stat性能,禁用RtlValidSecurityDescriptor
EN

Stack Overflow用户
提问于 2019-01-07 15:46:54
回答 1查看 156关注 0票数 0

在使用状态 (一个基于PYKD库的Python脚本,用于在Windbg环境中运行Python )时,我对这个脚本完成其工作所需的大量时间感到沮丧。

因此,我使用"非常昏昏欲睡“启动了一个分析会话,结果如下:

代码语言:javascript
复制
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命令:

开始分析:

代码语言:javascript
复制
xperf -start "DDS_LoggerName" -StackWalk ObjectCreate+ObjectDelete+ObjectReference -heap -Pids 28068

停止分析:

代码语言:javascript
复制
xperf -stop "DDS_LoggerName"

我已经使用Windows Performance Analyzer打开了结果(不完全,因为我首先想看看结果是什么样子),但这对我来说没有任何意义。我相信我的xperf配置很糟糕。我需要如何启动xperf分析才能度量哪个函数花费了多少时间?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-09 13:33:24

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

25%的CPU调用heap_output =dbgCommand(‘!堆-h 0').split('\n')

heap_block在heap_output中75%的循环:并且主要的CPU使用者是pykd.ptrPtr

CPU丢失的主要原因是调试引擎在内部大量调用dbgeng!FlushCallbacks。事实上,所有的调试引擎功能都记得这个方法,我不明白为什么。

我可以建议您使用重构的heap_stat.py并用ptrDword或ptrQword重写您自己的ptrPtr功能,这样可以减少CPU的损失。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54077490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档