【发布时间】:2014-09-25 17:20:57
【问题描述】:
在 Debian 7 虚拟机中运行 TigerVNC 1.3.1 时,我遇到了一个非常棘手的问题。在 VNC 窗口中什么都不做大约一分钟后,Xvnc 进程的 CPU 使用率达到 100%。再次将鼠标移到 VNC 窗口后,CPU 使用率恢复正常。我相信函数调用 select() 是罪魁祸首。做一个“strace -p”给了我很多:
select(256, [0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74], NULL, NULL, {0, 0}) = 0 (Timeout)
还有“strace -c -p”:
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
78.19 0.001760 0 98445 select
21.81 0.000491 0 196889 setitimer
------ ----------- ----------- --------- --------- ----------------
100.00 0.002251 295334 total
我不是系统函数调用方面的专家,但我使用这些命令检查的所有其他进程都没有显示出这种行为。这是tigervnc代码中的错误还是我可以修复它?
【问题讨论】: