top 命令显示cpu每核使用情况(top命令详解CPU内存)
top 命令显示cpu每核使用情况(top命令详解CPU内存)load average: 0.24 0.36 0.44系统1分钟,5分钟,15分钟的负载统计,这个数字在单核和多核之间是存在差别的,1 user:当前的登录用户数量第一行:top - 11:32:29 up 109 days 20:46 1 user load average: 0.24 0.36 0.4411:32:29:当前服务器时间up 109 days:服务器运行了多久
top的使用方法top命令主要用于分析Linux服务器当前的实时CPU和内存消耗情况,以及进程的运行情况统计。
命令使用:top ,具体top命令的使用方法和以下截图的各个信息的含义,可通过man top命令来查看。
其中比较常用的是:按1显示各个核的统计,使用-p参数指定所要监控的进程号。
从上到下分析:
系统整体负载统计第一行:top - 11:32:29 up 109 days 20:46 1 user load average: 0.24 0.36 0.44
11:32:29:当前服务器时间
up 109 days:服务器运行了多久
1 user:当前的登录用户数量
load average: 0.24 0.36 0.44系统1分钟,5分钟,15分钟的负载统计,这个数字在单核和多核之间是存在差别的,
(1)如果是单核,则值在0.0~1.0之间表示正常,一般不要超过0.7,多核类似。
(2)如果是多核,则值在0.0~CPU核心数表示正常,如2核是0到2,4核是0到4。多核参照单核的标准的话,是:数值 / CPU核数,在0.00-1.00之间正常。当使用这个数值除以CPU核数,即:数值 / CPU核数,之后,如果大于5则表示系统负载太高。
CPU的核心数查看:
查看物理CPU的个数 #cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc –l 查看逻辑CPU的个数 #cat /proc/cpuinfo |grep "processor"|wc –l 查看CPU是几核 #cat /proc/cpuinfo |grep "cores"|uniq 查看CPU的主频 #cat /proc/cpuinfo |grep MHz|uniq 直接获得CPU核心数 (该命令即可全部算出多少核) #grep 'model name' /proc/cpuinfo | wc -l
第二行:Tasks: 113 total 2 running 111 sleeping 0 stopped 0 zombie
113 total:当前系统一共有113个进程
2 running:2个进程正在运行
111 sleeping:111个进程在休眠
0 stopped:停止进程的个数
0 zombie:僵尸进程的个数
CPU的各个核统计第三、四行:两个CPU核的统计信息
Cpu0 : 27.2%us 16.4%sy 0.0%ni 46.0%id 0.0%wa 0.0%hi 3.7%si 6.7%st
Cpu1 : 20.2%us 12.8%sy 0.0%ni 55.9%id 0.0%wa 0.0%hi 3.7%si 7.4%st
- us:用户空间进程所用CPU占比
- sy:系统空间进程所用CPU占比
- ni:调整了进程优先级的进程所用CPU占比
- id:空闲CPU占比
- wa:等待输入输出的进程所用CPU占比
- hi:硬中断所用CPU占比si软中断所用CPU占比
第五行:Mem: 5991036k total 5878620k used 112416k free 39464k buffers
- total:物理内存总量
- used:已使用的物理内存量
- free:空闲的物理内存量
- buffers:用作内核缓存的内存量,即内核页缓存,操作系统尽可能地将从磁盘读出的内容或者要写到磁盘的内容通过页缓存来进行缓冲,在规定的时间或者当缓存到达一定量时,再刷到磁盘,减少磁盘的读写操作,提高系统性能。
第六行:Swap: 4194300k total 51312k used 4142988k free 1663552k cached
- total:交换分区总大小,即分了多少磁盘用作交换分区
- used:已使用的交换分区总量
- free:空闲的交换分区量
- cached:缓冲的交换分区使用量,即内存的内容可以交换到交换分区,然后再从交换分区加载会内存,加载回之后,交换分区对应的内容不删掉,而是缓冲起来,故之后内存内容再交换出来时,如果该内容没有修改过,则不需要再对交换分区进行写出,减少数据读写量。当交换分区不够时,则可以删除该缓冲的内容来腾出空间。
对于当前的可用内存量 为:free buffers cached
进程统计PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND 8960 root 20 0 4437m 1.2g 5888 S 56.6 20.8 46006:20 java 26114 root 20 0 4709m 2.3g 8400 S 26.4 40.0 2379:41 java 15076 root 20 0 2790m 110m 2332 S 4.5 1.9 4633:09 java
- PID:进程ID
- USER:进程的owner,即是在以该用户登录的身份时启动的。
- PR NI:进程优先级,其中PR为整数,NI为负数,绝对值越大,进程优先级越高。
- VIRT:进程的虚拟内存大小,VIRT = RES SHR,即进程申请了多少内存,但是不一定使用了这么多,具体使用了多少物理内存是RES显示的。
- RES:进程所用的实际物理内存大小,即进程实际使用了多少物理内存,包含进程自身的内存和与其他进程共享的内存,但不包括swap out的。在分析进程是否占用太多内存时,关注这个值。
- SHR:进程所用的共享内存大小,如共享库,如果需要知道该进程自身独立使用的内存大小,则使用RES-SHR。当共享内存swap out到交换分区之后,则SHR的值会减小。
- S:进程状态,对应的值:D = 不可中断的睡眠状态, R = 运行, S = 睡眠, T = 跟踪/停止, Z=僵尸进程
- %CPU:上次更新到现在所使用的CPU的占比,即该进程在各个CPU核运行的占比相加,如果是多核,可能超过100%
- %MEM:进程所用的物理内存占比,即对于系统正在被使用的物理内存中,该进程使用了多少,如系统物理内存重量为8G,当前共使用了2G,当前进程为30%,则该进程使用了0.6G。
- TIME :进程运行了多久,这个是百秒为单位,即需要乘以100来转为秒,另外一个TIME则是秒为单位。
- COMMAND:进程的启动命令,如Java进程是通过java命令启动的。