linux 下的 top 和 htop 不尽相同,该相信谁? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
ioiioi
V2EX    Linux

linux 下的 top 和 htop 不尽相同,该相信谁?

  •  
  •   ioiioi 2015 年 7 月 21 日 9587 次点击
    这是一个创建于 3838 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我跑了一个很费资源的程序,开始用top看的时候cpu利用率达到9x%,随后用htop看了以下,每核cpu的利用率倒是没超过50%,我该相信谁?

    1 [|||||| 6.8%] Tasks: 33, 19 thr; 2 running 2 [|||||||||| 13.0%] Load average: 1.01 0.66 0.28 3 [|||||||||||||||||||||||||||| 36.4%] Uptime: 00:04:34 4 [||||||||||||||| 20.1%] 5 [||||||||||||||||||| 24.8%] 6 [|||||||||||||||||| 23.8%] 7 [|||||||||||||| 17.7%] 8 [|||||| 8.2%] Mem[|||||| 432/7870MB] Swp[ 0/0MB] PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 1715 root 20 0 995M 99M 2676 S 93.0 1.3 4:05.50 /usr/local/unba/bin/probe 1811 root 20 0 995M 99M 2676 S 33.0 1.3 1:16.48 /usr/local/unba/bin/probe 1813 root 20 0 995M 99M 2676 S 29.0 1.3 0:59.18 /usr/local/unba/bin/probe 1809 root 20 0 995M 99M 2676 S 13.0 1.3 0:46.68 /usr/local/unba/bin/probe 1805 root 20 0 995M 99M 2676 S 13.0 1.3 0:45.78 /usr/local/unba/bin/probe 1899 chenrui 20 0 156M 5044 1308 S 2.0 0.1 0:00.72 mosh-server new -s -c 0 1560 root 20 0 249M 3776 1092 S 2.0 0.0 0:06.95 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5 1807 root 20 0 995M 99M 2676 S 2.0 1.3 0:05.11 /usr/local/unba/bin/probe ... 

    使用了tmux分隔,所以下面的top信息跟htop是同屏显示的,时间是同步的。

    top - 00:41:29 up 4 min, 2 users, load average: 1.01, 0.66, 0.28 Tasks: 175 total, 2 running, 173 sleeping, 0 stopped, 0 zombie Cpu(s): 3.1%us, 2.0%sy, 0.0%ni, 81.6%id, 0.2%wa, 0.1%hi, 12.9%si, 0.2%st Mem: 8058904k total, 570824k used, 7488080k free, 55012k buffers Swap: 0k total, 0k used, 0k free, 72820k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1715 root 20 0 995m 99m 2676 S 87.9 1.3 4:04.45 probe 33 root 20 0 0 0 0 S 44.9 0.0 0:32.22 ksoftirqd/7 13 root 20 0 0 0 0 R 37.1 0.0 0:28.72 ksoftirqd/2 17 root 20 0 0 0 0 S 7.8 0.0 0:33.92 ksoftirqd/3 1899 chenrui 20 0 156m 4916 1308 S 5.9 0.1 0:00.70 mosh-server 31 root RT 0 0 0 0 S 2.0 0.0 0:00.01 migration/7 42 root 20 0 0 0 0 S 2.0 0.0 0:00.13 events/7 1560 root 20 0 249m 3776 1092 S 2.0 0.0 0:06.91 rsyslogd 1922 chenrui 20 0 25992 1604 1072 S 2.0 0.0 0:00.04 tmux 1961 root 20 0 110m 2300 1240 S 2.0 0.0 0:00.31 htop 1979 chenrui 20 0 15028 1224 868 R 2.0 0.0 0:00.01 top 1 root 20 0 19232 1484 1192 S 0.0 0.0 0:01.13 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root RT 0 0 0 0 S 0.0 0.0 0:00.01 migration/0 4 root 20 0 0 0 0 S 0.0 0.0 0:29.03 ksoftirqd/0 ... 
    15 条回复    2015-08-03 07:48:17 +08:00
    Andy1999
        1
    Andy1999  
       2015 年 7 月 21 日 via iPhone
    我用探针看的
    nine
        2
    nine  
       2015 年 7 月 21 日
    都准,未必是同步的
    AstroProfundis
        3
    AstroProfundis  
       2015 年 7 月 21 日
    top 是所有 cpu 的总和,htop 是每个 cpu 分开的
    你把 htop 里面单个 cpu 的值加起来应该和 top 里面的差不多
    ffffwh
        4
    ffffwh  
       2015 年 7 月 21 日
    应该都是对的。。
    问题是怎么解读。。。
    超线程算到谁头上?
    redsonic
        5
    redsonic  
       2015 年 7 月 21 日   3
    LZ误解了,htop里面8个cpu平均18。和top里面的us+sy+si+hi差不多,所以不矛盾的。

    此外,对于用户态的东西,htop一行对应一个线程,top一行对应一个进程,所以top里面你看到同样的多线程应用,top的比htop的高,甚至超过100,但所有线程加一起就和top里的一样多。

    如果想了解硬件的真实负载可以安装powertop,他的数据有一部分来自cpu硬件内部的统计而不是操作系统。
    msg7086
        6
    msg7086  
       2015 年 7 月 21 日
    Cpu(s): 3.1%us, 2.0%sy, 0.0%ni, 81.6%id, 0.2%wa, 0.1%hi, 12.9%si, 0.2%st

    不是写着 81.6% idle 么,负载哪里超过一半了。

    要是超过一半的话,怎么也不可能87.9%吧,至少400%了吧?
    lujiajing1126
        7
    lujiajing1126  
       2015 年 7 月 21 日 via Android
    @msg7086
    负载和占用率不是一个概念啊
    maxbon
        8
    maxbon  
       2015 年 7 月 21 日   1
    top的时候你按一下数字键1,你就知道了
    xdeng
        9
    xdeng  
       2015 年 7 月 21 日
    采样时间点不一样
    Ranler
        10
    Ranler  
       2015 年 7 月 21 日
    都是从procfs中读出的数据,所以原始数据是一样的,只是数据读出时间和数据整合方式不同
    lijianying10
        11
    lijianying10  
       2015 年 7 月 21 日
    如果楼主看完这篇:
    http://server.51cto.com/sCollege-188250.htm
    可以发现,CPU使用率仅仅是一个统计而已。
    通过包含了每一种cpu使用情况时间的统计。
    因此从不同时刻考虑cpu使用率有不同的统计结果。

    最后希望能帮到楼主。
    ioiioi
        12
    ioiioi  
    OP
       2015 年 7 月 21 日
    看来我得先理解一下linux的工作机制再过来提问,我现在还搞不清top中的那一行

    ```
    Cpu(s): 3.1%us, 2.0%sy, 0.0%ni, 81.6%id, 0.2%wa, 0.1%hi, 12.9%si, 0.2%st
    ```

    到底啥意思。
    JamesRuan
        13
    JamesRuan  
       2015 年 7 月 21 日
    @ioiioi
    us, user : time running un-niced user processes
    sy, system : time running kernel processes
    ni, nice : time running niced user processes
    id, idle : time spent in the kernel idle handler
    wa, IO-wait : time waiting for I/O completion
    hi : time spent servicing hardware interrupts
    si : time spent servicing software interrupts
    st : time stolen from this vm by the hypervisor
    ioiioi
        14
    ioiioi  
    OP
       2015 年 7 月 22 日
    @JamesRuan
    谢谢,我想了解的不仅仅是字面的意思,我更想知道在什么样的情况下是cpu遇到了瓶颈,我估计除了top,还需要配合其它工具才能进行性能的调优。
    jedihy
        15
    jedihy  
       2015 年 8 月 3 日
    多核平均和单核的区别。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5825 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 02:26 PVG 10:26 LAX 18:26 JFK 21:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86