0

我为一个进程运行了 top -H -p,它给了我几个带有 LWP 的线程。但是当我首先用最小的 PID 对结果进行排序时,我注意到第一个线程中的时间是恒定的,但其他线程的时间正在变化。为什么 TIME+ 不一样?

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 16989 root 20 0 106m 28m 2448 S 0.0 0.2 0:22.31 glusterfs 16990 root 20 0 106m 28m 2448 S 0.0 0.2 0:00.00 glusterfs 16992 root 20 0 106m 28m 2448 S 0.0 0.2 0:00.00 glusterfs 16993 root 20 0 106m 28m 2448 S 0.0 0.2 0:00.00 glusterfs 16997 root 20 0 106m 28m 2448 S 0.0 0.2 0:11.71 glusterfs 17010 root 20 0 106m 28m 2448 S 0.0 0.2 0:21.07 glusterfs 17061 root 20 0 106m 28m 2448 S 0.0 0.2 0:00.00 glusterfs

4

2 回答 2

1

为什么 TIME+ 不一样?

因为不同的线程正在做不同百分比的工作。这可能有多种原因1,但最有可能的是应用程序 (glusterfs) 没有尝试在工作线程之间均匀分配工作。

这没什么好担心的。如果工作级别(参见 %CPU)可以忽略不计,那么哪个线程完成工作并不重要。


1 - 如果有人有时间和兴趣,他们可以查看 glusterfs 的源代码以尝试了解其行为。但是,我认为这种努力是没有必要的。

于 2015-02-21T00:11:19.333 回答
0

因为时间列是指一个进程消耗的时间,所以当一个进程时间没有改变时,它可能意味着这个进程正在“休眠”或者只是在等待另一个进程完成,但可能还有更多的原因。

http://linux.about.com/od/commands/l/blcmdl1_top.htm

时间:

任务自启动以来使用的总 CPU 时间。如果启用累积模式,这还包括进程的已死亡子进程使用的 CPU 时间。您可以使用 S 命令行选项设置累积模式或使用交互式命令 S 切换它。然后标题行将更改为 CTIME。

于 2015-02-21T00:50:10.157 回答