为什么其他线程的CPU时间不同

时间:2015-02-21 00:03:45

标签: multithreading process cpu-time

我运行了顶级-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

2 个答案:

答案 0 :(得分:1)

  

为什么TIME +会有所不同?

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

不用担心。如果工作级别(参见%CPU)可以忽略不计,那么哪个线程可以正常工作并不重要。


1 - 如果有人有时间和倾向,他们可以查看glusterfs的源代码,试图了解它的行为。但是,我认为这种努力是不合理的。

答案 1 :(得分:0)

因为时间列引用了进程所消耗的时间,所以当进程时间没有改变时,它可能意味着这个进程是" sleep"或者只是等待其他过程完成,但可能还有更多原因。

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

  

时间:

     

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