我在网上搜索显示终止信号触发 cfprefsd 守护进程重新读取所有 plist 文件。看这里
当 killall cfprefsd 执行时,系统会冻结(显示可怕的沙滩球),直到它完全重新启动守护程序(这在我的系统上可能需要 1-5 分钟)。在另一台 Macbook(运行 10.9.4)上运行sudo killall cfprefsd
.
这是我在日志中找到的。有什么想法会导致过度唤醒吗?我在哪里寻找导致此问题的问题?
13-3-'15 11:30:36.063 AM sudo[54484]: root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/killall cfprefsd
13-3-'15 11:31:28.000 AM kernel[0]: process who[54487] caught causing excessive wakeups. Observed wakeups rate (per sec): 864; Maximum permitted wakeups rate (per sec): 150; Observation period: 300 seconds; Task lifetime number of wakeups: 45001
13-3-'15 11:31:28.000 AM kernel[0]: process cfprefsd[54488] caught causing excessive wakeups. Observed wakeups rate (per sec): 864; Maximum permitted wakeups rate (per sec): 150; Observation period: 300 seconds; Task lifetime number of wakeups: 45001
13-3-'15 11:31:28.000 AM kernel[0]: process cfprefsd[54489] caught causing excessive wakeups. Observed wakeups rate (per sec): 864; Maximum permitted wakeups rate (per sec): 150; Observation period: 300 seconds; Task lifetime number of wakeups: 45001
PS 我怀疑一个或多个 plist 可能已损坏。我如何找出哪个?
2015 年 3 月 15 日更新:
kill -15 <pid>
我已经使用(我有 2 个:root 和我自己)运行了几次 cfprefsd 重新启动。虽然过去两者似乎都被过度唤醒(同时被终止)所困扰,但在我的测试中,它似乎只适用于 root 用户。所以我可以比较来自 fs_usage 的记录中的时间戳:
系统冻结时:
13:33:00.015 exit 0.000054 cfprefsd.2656406
13:33:05.007 open F=17 (R_____)/usr/sbin/cfprefsd 0.000035 appProtd.1953
13:33:56.982 posix_spawn /usr/sbin/cfprefsd 5 1.9758 W launchd.2656433
13:34:48.866 stat64 /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation 0.000012 cfprefsd.2656433
没有任何冻结:
13:35:30.124 exit 0.000076 cfprefsd.2656806
13:35:31.790 open F=17 (R_____)/usr/sbin/cfprefsd 0.000029 appProtd.1953
13:35:31.791 posix_spawn /usr/sbin/cfprefsd 0.000728 W launchd.2657306
13:35:31.791 stat64 /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation 0.000014 cfprefsd.2657306
launchd
及时创建新的 cfprefsd 进程并启动该进程似乎存在问题,因为在此间隔期间系统冻结(注意在此间隔期间 CPU 几乎空闲)