首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dtrace影响,监测过程(OS X)?

dtrace影响,监测过程(OS X)?
EN

Stack Overflow用户
提问于 2015-01-06 08:13:33
回答 1查看 337关注 0票数 0

我正试图找到一种有效的方法,从用户模式中以编程方式监视在我的计算机上启动了哪些进程(OS )。由于NSWorkspaceDidLaunchApplicationNotification只适用于应用程序,而kqueues (NOTE_EXIT)只允许监视特定的进程,因此dtrace探针似乎是可行的。我使用过/usr/bin/execsnoop/usr/bin/newproc.d (并简化了版本,只需安装一个探针(syscall::posix_spawn:return),而不执行其他操作(例如,没有打印))。

这些都为我提供了我所需要的信息,,但是当我启动一个启动多个进程/快速执行多个命令的应用程序时(例如,VMWare融合)--探针似乎明显地影响了系统。具体来说,kernel_task会连续几秒钟加速50%+ CPU的使用,而OS (鼠标等)的速度会明显减慢/滞后……如果没有安装50%+探针,就永远不会观察到这种行为。

所以有几个问题:

( 1)是否有办法避免这一特殊待遇问题?(dtrace #语用?)

( 2) dtrace探针是否累积?(如果安装dtrace探针,是否需要手动卸载它们,或者ctl+C是否清除/禁用它们?)

( 3)是否可以查看当前安装了哪些dtrace探针?

我不喜欢使用dtrace,但我不知道另一种(非轮询)方法来获取OS X :/上启动的事物的pid/进程名。

EN

回答 1

Stack Overflow用户

发布于 2015-01-07 10:36:17

  1. 我感到非常惊讶的是,在启用单个探测器后,会出现可测量的影响;甚至 dtrace -n syscall::posix_spawn:return 引起麻烦了吗?如果是的话,您的内存不足吗?DTrace确实需要一个(默认情况下)适度的数量,它的初始化可能会把你推到边缘。除了聚变之外,你看到问题了吗?它似乎在优胜美地遇到了自己的性能问题。
  2. 探针在消费者之间共享。如果只有一个正在运行的使用者(例如,dtrace),那么当它退出时,所有的DTrace探测都会被删除。如果两个使用者启用了相同的探测,那么它将一直处于活动状态,直到最后一个使用者退出。
  3. 也许吧。访问OS源代码的人可以修改这个剧本
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27794574

复制
相关文章

相似问题

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