首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >strace报告系统调用时间太长。

strace报告系统调用时间太长。
EN

Unix & Linux用户
提问于 2020-05-20 18:41:04
回答 1查看 1.1K关注 0票数 1

问题

下面的代码片段显示了打开inkscape到我的系统所花费的时间,以及我立即关闭inkscape窗口所花费的时间。

代码语言:javascript
运行
复制
$ /usr/bin/time -p inkscape
real 26.95
user 0.59
sys 0.05

我读过一些帖子(这里这里),其中人们报告说inkscape需要花费太多的时间才能启动,但答案与用户系统中安装的字体数量有关。

据我所知,我可以使用以下命令获得安装在我的系统中的字体数量(请参见下面的命令)。因此,在我的系统中安装的字体数量并不是问题所在。

代码语言:javascript
运行
复制
$ fc-list | wc -l
105

我试着查看strace命令输出,并发现了那些正在减缓打开inkscape的过程的任务。(我不共享strace的完整日志,因为它在所有输出中报告一些个人文件的名称。)

代码语言:javascript
运行
复制
$ strace --absolute-timestamps=ns inkscape
...
13:27:03.700577007 read(11, "\1\0\0\0\0\0\0\0", 16) = 8
13:27:03.700603187 poll([{fd=11, events=POLLIN}], 1, 25000) = 0 (Timeout)
13:27:28.725932887 write(11, "\1\0\0\0\0\0\0\0", 8) = 8
13:27:28.726024537 futex(0x55ca60dcb240, FUTEX_WAKE_PRIVATE, 2147483647) = 0
...

正如您在上面看到的,在两个任务之间有25秒的时间,所以这肯定与问题有关。

问题

poll系统调用在做什么,如何减少系统执行该系统调用所需的时间?

PD1:我尝试在谷歌上搜索poll([{fd=11, events=POLLIN}], 1, 25000,发现这个问题中的海报解释了GTK3应用程序的启动速度很慢,并将这种错误行为与strace显示的系统调用花费了太多时间(与本文中介绍的调用相同)这一事实联系起来,但我没有找到有帮助的答案。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-05-20 18:54:42

那个特定的syscall本身并没有做任何事情。它在等待其他的东西来做一些事情,特别是在FD 11上可以读取数据。要弄清楚为什么它没有得到它等待的数据,你需要检查FD与什么相关,并找到应该写到它的另一端的东西。

顺便说一句,你发现的这个问题是非常有帮助的,你应该更仔细地再读一遍,然后再试着听从它的建议,而不是这么快就否定它。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/587959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档