我在网上的搜索显示终止信号触发cfprefsd守护进程重新读取所有plist文件。 see here
当执行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>
运行了几次cfprefsd重启(我有2:root和我自己)。虽然在过去两者似乎都被过度唤醒(同时终止)所困扰,但在我的测试中它似乎只适用于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在此间隔期间几乎空闲)
答案 0 :(得分:2)
我不知道答案,但我可以提出几个问题排查建议:
ps -ax -Ouser | grep [c]fprefsd
获取cfprefsd进程列表,然后使用sudo kill <PID>
按进程ID终止它们。sudo fs_usage | grep cfprefsd
来查看他们正在访问的文件。寻找在挂起之前,期间或之后访问的文件,尽可能怀疑。plutil -lint
检查.plist文件的格式完整性(例如sudo plutil -lint /Library/Preferences/*.plist
)。请注意,这仅检查属性列表格式的完整性,而不是存储在属性列表中的信息。此外,cfprefsd通常会修复(/丢弃和替换)损坏的文件本身,所以我怀疑这会变成什么。ls -leO@ /Library/Preferences
。例如,如果其中一个文件被锁定(“uchg”标志),或者您的一个用户偏好设置由另一个用户拥有,则可能会导致奇怪的效果。答案 1 :(得分:0)
事实证明,我正在运行适用于优胜美地的McAfee VirusScan版本9.7.0。在降级到版本9.6.0之后,观察到的刷新cfprefsd的问题消失了。