/tmp/.X11-unix/X1 的系统调用轮询时间太长

/tmp/.X11-unix/X1 的系统调用轮询时间太长

我有一个 GUI 程序,响应时间太长,所以我过去常常strace -T报告它的所有系统调用。我发现导致程序缓慢的原因是poll花费了太多时间。例如,结果strace -T包含如下内容:

poll([{fd=9, events=POLLIN}], 1, -1) = 1 ([{fd=9, revents=POLLIN}]) <5.031644>
......
poll([{fd=9, events=POLLIN}], 1, -1) = 1 ([{fd=9, revents=POLLIN}]) <7.840762>

它说这两个poll系统调用花费了 5.03 和 7.84 秒才能完成。通过在报告中查找fd=9,发现对应的是socket /tmp/.X11-unix/X1,内容如下:

socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0) = 9 <0.000008>
connect(9, {sa_family=AF_UNIX, sun_path=@"/tmp/.X11-unix/X1"}, 20) = 0 <0.000008>

我猜长poll是由于 的高延迟响应造成的X11。所以我VNC在同一台机器上通过打开一个新桌面并在其上运行相同的程序,一切正常。

但我找不到在我的本机桌面上正常运行该程序的方法,任何人都可以给我一些关于如何执行此操作的建议吗?

相关内容