1

我想在我的服务器上对 BLAST 运行时间进行基准测试,所以我启动了该time命令。服务器有 16 个 CPU,我正在运行 BLAST 16 线程。在我进行分析时,可能还有其他应用程序并行运行。

输出如下:

184255.45user 458.23system 6:37:54elapsed 773%CPU (0avgtext+0avgdata 83504272maxresident)k
294680inputs+10029344outputs (1799major+149694417minor)pagefaults 0swaps

将用户时间解释为 CPU 运行我的应用程序所花费的秒数,我得到的时间超过了总时间。我见过有人告诉我应该用 %CPU 来划分时间,但是我只得到了 3 分钟,这对于 BLAST 和我放入其中的大小的输入是不现实的。

我需要的信息是用户时间,但我不知道如何解释它。

对结果的解释有什么建议吗?

4

1 回答 1

3

从手册页(并取自此处):

The default format is:

    %Uuser %Ssystem %Eelapsed %PCPU (%Xtext+%Ddata %Mmax)k
    %Iinputs+%Ooutputs (%Fmajor+%Rminor)pagefaults %Wswaps

因此,在用户空间中花费了184255秒,在内核空间中花费了458秒,“实际”时间经过了6 小时 37 分 54 秒。

因此,正如 Dietrich Epp 在他的评论中指出的那样,看看经过的时间,他们匹配, 6: 37 :53是397.8833分钟。

这是对时间差异的一个很好的解释user/system/real(elapsed)

Real 是挂钟时间 - 从通话开始到结束的时间。这是所有经过的时间,包括其他进程使用的时间片和进程阻塞的时间(例如,如果它正在等待 I/O 完成)。

用户是进程内用户模式代码(内核外部)所花费的 CPU 时间量。这只是执行进程中使用的实际 CPU 时间。其他进程和进程阻塞的时间不计入此数字。

Sys 是进程内在内核中花费的 CPU 时间量。这意味着在内核中执行系统调用所花费的 CPU 时间,而不是仍在用户空间中运行的库代码。像“用户”一样,这只是进程使用的 CPU 时间。有关内核模式(也称为“主管”模式)和系统调用机制的简要说明,请参见下文。

于 2016-09-06T10:22:01.173 回答