gpt4 book ai didi

linux - 确定在 Linux 上我的用户空间绑定(bind)可执行文件中导致这么多系统时间的原因

转载 作者:太空狗 更新时间:2023-10-29 11:10:51 27 4
gpt4 key购买 nike

我正在做一个项目(编程语言),我开始做一些分析。当我运行我的阶乘测试时,我得到以下信息:

burton@smokey:~/repl$ time tests/fact.repl 

real 0m4.451s
user 0m1.820s
sys 0m2.620s

我的问题是系统时间。除了读取输入文件(没有输出)之外,我没有进行任何系统调用。这应该是一个几乎完全受用户时间限制的应用程序。我试过运行 strace -c 来查看是否有任何错误的系统调用占用了大量时间,但一无所获。 Gprof 也不给我任何答案。

是否有任何其他工具可以找出是什么在我的应用程序中占用了如此多的系统时间?我只是被时间命令欺骗了吗?当我运行 sbcl 进行相同的计算时,系统时间约为 0.03 秒,这正是我所希望的。

这是 strace -c 的完整输出:

burton@smokey:~/repl$ strace -c tests/fact.repl
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
-nan 0.000000 0 2 read
-nan 0.000000 0 3 open
-nan 0.000000 0 2 close
-nan 0.000000 0 3 fstat
-nan 0.000000 0 12 mmap
-nan 0.000000 0 4 mprotect
-nan 0.000000 0 1 munmap
-nan 0.000000 0 16 brk
-nan 0.000000 0 2 rt_sigaction
-nan 0.000000 0 4 rt_sigprocmask
-nan 0.000000 0 1 1 ioctl
-nan 0.000000 0 3 3 access
-nan 0.000000 0 1 execve
-nan 0.000000 0 1 arch_prctl
-nan 0.000000 0 2 setrlimit
------ ----------- ----------- --------- --------- ----------------
100.00 0.000000 57 4 total

最佳答案

在内存中分配和分页所花费的时间计为系统时间。试试 /usr/bin/time tests/fact.repl——它显示页面错误的数量。

顺便说一下,“除了读取输入文件,我没有进行任何系统调用”和“我正在分配内存块”是相互矛盾的陈述。

关于linux - 确定在 Linux 上我的用户空间绑定(bind)可执行文件中导致这么多系统时间的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7861936/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com