Mac OS X 上的进程/线程创建和销毁历史记录或分类帐

Mac OS X 上的进程/线程创建和销毁历史记录或分类帐

我发现我的 Mac(Yosemite 10.10.4)中出现了一些奇怪的线程行为。线程数突然增加,然后又回落。有时线程数会一直保持在极高水平,因此超出上限maxproc并导致出现fork: Resource temporarily unavailable消息,即使将其增加到 2048 也是如此。

鉴于线程计数maxproc,我想监控这个线程抖动来自。

tophtop并且glances只提供快照,但我需要一个线程创建和销毁的带时间戳的日志, 包括所有权父母身份,准确识别问题。

有任何想法吗?

编辑1:删除了我对 Google Chrome 作为潜在嫌疑人的提及,以使问题集中在线程历史或分类账上。

答案1

我之所以能够获得一些见解,是因为execsnoop工具。手册页中的描述:

execsnoop 在执行新进程时打印其详细信息。会打印出 UID、PID 和参数列表等详细信息。

示例输出:

[raul@~/bitbar$] sudo execsnoop -v
STRTIME                UID    PID   PPID ARGS
2016 Jan 14 17:56:09     0      1      0 launchd
2016 Jan 14 17:56:09   501  90311      1 influxd
2016 Jan 14 17:56:16   501  90312    321 kcc
2016 Jan 14 17:56:16     0      1      0 launchd
2016 Jan 14 17:56:16     0  90313      1 kcm
2016 Jan 14 17:56:19     0      1      0 launchd
2016 Jan 14 17:56:19   501  90314      1 influxd

execsnoop用途跟踪,我还发现了这篇很棒的文章,其中包含一些其他脚本/工具:http://dtrace.org/blogs/brendan/2011/10/10/top-10-dtrace-scripts-for-mac-os-x/

在 Mac OS X(Darwin)和 *nix 内核中,线程表示为进程,这就是计数ulimitsysctl限制的原因。

相关内容