1
为什么strace不显示该过程正在等待某些东西?
强大的力量strace让我失望了。这怎么可能? time foo显示foo运行需要几秒钟(“真实”),但在用户空间(“用户”)和内核(“ sys”)中使用的CPU时间都可以忽略不计。对于好奇,foo定义如下。 因此,它花费大部分时间等待其他事情,而不是执行CPU指令。正常情况下,我可以看到它的等待状态strace-即哪个系统调用长时间处于阻塞状态。不幸的是,这种方法行不通。 strace -ttt -T -C -w foo显示系统调用,时间戳和系统调用所花费的(实际)时间的摘要。但是,此特定过程显示出在系统调用内花费的总(实际)时间微不足道。 foo实际上是journalctl -b -u dev-hugepages.mount。除非我每次都必须将最后一个参数更改为一个不同的systemd单元,以便重现此参数。换句话说,我正在调查的延迟是在我第一次尝试获取任何一个systemd单元的日志时发生的。 编辑:在回答了主要问题之后,我还意识到我遇到这个问题会导致延迟的原因。 此过程花费的时间是一个特定的问题,显然并非在所有系统上都发生。https://github.com/systemd/systemd/issues/7963