一、cpu负载

1、CPU基本概念

1.1、什么是物理cpu个数

物理cpu个数即主板上实际能够看到的cpu个数(也是cpu插槽数)

1.2、 什么是cpu核数

cpu核数指的是物理cpu个数 * 每个物理cpu的核心数,因为每个物理cpu可能包含多个核心,如下图,有2个物理cpu,每个物理cpu包含4个核心,即该服务器/主板是8核。

1.3、什么是逻辑cpu个数

总逻辑CPU个数 = 物理CPU个数 * 每个物理CPU的核数 * 每个核的超线程数,一般超线程是乘以2,即:总逻辑CPU个数 = 物理CPU个数 * 每个物理CPU的核数 * 2,如果没有超线程,那么,总逻辑CPU个数 = 物理CPU个数 * 每个物理CPU的核数。

1.4、原生多核与封装多核

原生多核:

是真正意义上的多核,最早由AMD提出,每个核心之间都是完全独立的,都拥有自己的前端总线,不会造成冲突,即使在高负载状况下,每个核心都能保证自己的性能不受太大的影响。(即原生多核的抗压能力强,但是需要先进的工艺,每扩展一个核心都需要很多的研发时间)

封装多核:

只把多个核心直接封装在一起,比如Intel早期的PD双核系列,就是把两个单核直接封装在一起。(性能更弱、成本高,但是发展研发更快)

1.5、什么是超线程技术

四核八线程主要涉及的就是超线程技术:
  它由 Intel 研发,是把处理器内部的一个物理CPU模拟成两个逻辑CPU(以后也许有多个),让单个处理器就能使用线程级的并行计算,进而兼容多线程操作系统和软件。超线程技术充分利用空闲CPU资源,在相同时间内完成更多工作,在一定程度上提高了运行效率和性能。
  所以才会出现了我们提到的四核八线程,也就是将四个物理核心模拟成八个逻辑核心,同时会有四核支持八线程的操作。
  但是呢,四核八线程虽然模拟出来的是八核,其实和真实八核区别很大,虽然采用超线程技术能同时执行两个线程,但它并不能像两个真实CPU那样,每个CPU都具有独立的资源。单一资源同时只能支持一个CPU占用,因此当这些资源闲置后另一个CPU才能继续占用。并且,单一核心模拟出的两个逻辑核心的单个性能会有所下降。

1.6、几路几核几线程是什么意思

比如单路四核八线程

单路指的是有1个cpu插槽(即物理cpu,physical id),4核指的是每个物理cpu的核数(core id),8线程指的是每个核通过超线程虚拟成2个,即总逻辑cpu核数(processor)是8,即该cpu开启了超线程技术,超线程技术就是单个处理器基础上提供两个逻辑处理器。

【举例】:

a、对于两路四核超线程计算机,两路指计算机有2个物理CPU,每颗CPU中有4个物理内核,CPU支持超线程,就有2*4*2=16个逻辑CPU,这就是通常所谓的16核计算机;

b、双路四核超线程,解释为:两个物理CPU,每个CPU都是4核,然后每个核通过超线程虚拟成2个,一共就是16核。

1.7、物理核与虚拟核

物理核:

物理核数=cpu数(机子上装的cpu的数量) * 每个cpu的物理核数

虚拟核:
所谓的4核8线程,4核指的是cpu核数(core id)。通过超线程技术,用一个物理核模拟两个虚拟核,每个虚拟核1个线程,总数为8线程(即processor)。在操作系统看来是8个核,但是实际上是4个物理核。通过超线程技术可以实现单个物理核实现线程级别的并行计算,但是比不上性能两个物理核。

2、查看cpu数

2.1、麒麟系统

lscpu

返回结果如下:

架构:                           aarch64         #arm64架构
CPU 运行模式:                   64-bit          #64位
字节序:                         Little Endian   #小端法
CPU:                             96             #cpu数量(逻辑cpu数量)
在线 CPU 列表:                  0-95            #在线的cpu数量,有时为了省电或者过热的时候,某些cpu会停止运行
每个核的线程数:                 1                #每个核心的线程数
每个座的核数:                   48               #每个cpu插槽(物理cpu)有几个核心
座:                             2               #cpu插槽(物理cpu)个数,英文会用socket表示
NUMA 节点:                      4
厂商 ID:                        HiSilicon       #cpu厂商名称
型号:                           0
型号名称:                       Kunpeng-920
步进:                           0x1             #可以理解为版本号
CPU 最大 MHz:                   2600.0000
CPU 最小 MHz:                   200.0000
BogoMIPS:                       200.00
L1d 缓存:                       6 MiB
L1i 缓存:                       6 MiB
L2 缓存:                        48 MiB
L3 缓存:                        96 MiB
NUMA 节点0 CPU:                 0-23
NUMA 节点1 CPU:                 24-47
NUMA 节点2 CPU:                 48-71
NUMA 节点3 CPU:                 72-95
Vulnerability Itlb multihit:     Not affected
Vulnerability L1tf:              Not affected
Vulnerability Mds:               Not affected
Vulnerability Meltdown:          Not affected
Vulnerability Spec store bypass: Not affected
Vulnerability Spectre v1:        Mitigation; __user pointer sanitization
Vulnerability Spectre v2:        Not affected
Vulnerability Tsx async abort:   Not affected
标记:                           fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma dcpop asimddp asimdfhm
# 直接查看逻辑cpu总数
cat /proc/cpuinfo  | grep -i processor | wc -l      

2.2、centos系统

# 查看物理cpu个数
cat /proc/cpuinfo  | grep -i "physical id" | sort | uniq | wc -l#查看每个cpu有几核
cat /proc/cpuinfo | grep "cpu cores" | uniq#查看逻辑cpu总个数
cat /proc/cpuinfo| grep "processor"| wc -l#查看cpu品牌信息
cat /proc/cpuinfo| grep "model name" | uniq

【补充】:

总逻辑CPU个数 = 物理CPU个数 * 每个物理CPU的核数 * 每个核的超线程数

总核数 = 物理CPU个数 * 每颗物理CPU的核数

(如果总逻辑cpu个数不等于总核数,则可以判断该cpu开启了超线程技术)

3、查看cpu负载

3.1、vmstat查看(系统自带)

#每隔1秒刷新1次,刷新3次
vmstat 1 3    

【参数说明】:

字段 含义
procs 进程信息字段:

  • -r:等待运行的进程数,数量越大,系统越繁忙。当这个值超过了CPU数目,就会出现CPU瓶颈了。
  • -b:不可被唤醒的进程数量,数量越大,系统越繁忙。
memory 内存信息字段:

  • -swpd:虚拟内存的使用情况,单位为 KB。如果大于0,表示物理内存已不足。
  • -free:空闲的内存容量,单位为 KB。
  • -buff:缓冲的内存容量,单位为 KB。
  • -cache:缓存的内存容量,单位为 KB。
swap 交换分区信息字段:

  • -si:从磁盘中交换到内存中数据的数量,单位为 KB。如果这个值大于0,表示物理内存不够用或者内存泄露了。
  • -so:从内存中交换到磁盘中数据的数量,单位为 KB。如果这个值大于0,表示物理内存不够用或者内存泄露了。

这两个数越大,表明数据需要经常在磁盘和内存之间进行交换,系统性能越差。

io 磁盘读/写信息字段:

  • -bi:从块设备中读入的数据的总量,单位是块。
  • -bo:写到块设备的数据的总量,单位是块。

这两个数越大,代表系统的 I/O 越繁忙。

system 系统信息字段:

  • -in:每秒被中断的进程次数。
  • -cs:每秒进行的事件切换次数。

这两个数越大,代表系统与接口设备的通信越繁忙。

cpu CPU信息字段:

  • -us:非内核进程消耗 CPU 运算时间的百分比。
  • -sy:内核进程消耗 CPU 运算时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于逻辑cpu数 80%说明可能存在CPU不足。
  • -id:空闲 CPU 的百分比。一般来说,id + us + sy = 100,id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
  • -wa:等待 I/O 所消耗的 CPU 百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重。
  • -st:被虚拟机所盗用的 CPU 百分比。

3.2、top查看(系统自带)

top

【参数说明】:

行数 参数解释
第1行

第1行是任务队列消息,同uptime命令的执行结果。

系统时间:13:45:19

系统运行时间:up 66天,16小时2分钟

当前登录用户:1 user

负载:0.02,0.01,0.00,load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

第2行

第2行,Tasks 任务(进程)

总进程:953 total,运行:1 running,休眠:951 sleeping,停止:0 stopped,僵尸进程:1 zombie

第3行

第3行,cpu状态信息

0.1%us:用户空间占用cpu百分比

0.2%sy:内核空间占用cpu百分比

0.0%ni:改变过优先级的进程占用cpu的百分比

99.8%id:空闲cpu百分比

0.0%wa:IO等待占用cpu百分比,参考值为30%,如果wa超过30%,说明IO等待严重

0.0%hi:硬中断占用cpu的百分比

0.0%si:软中断占用cpu的百分比

0.0%st:被虚拟机所盗用的 CPU 百分比

第4行

第4行:内存状态

总内存:130062.6total,单位MB(有时是KB,前面会有标识)

空闲内存:42319.9MB

已使用内存:11941.9MB

缓冲的交换区总量:75800.9MB

注:可用内存=free+buffer+cached

第4行中使用中的内存总量(used)指的是现在系统内核控制的内存数,

第4行中空闲内存总量(free)是内核还未纳入其管控范围的数量。

纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心

第5行

第5行:swap交换分区信息

总交换分区大小:4095.9 total

空闲的交换分区大小:4095.9 free

已使用的交换分区的大小:0.0 used

注:对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了

第6行 空行
第7行

第7行,各进程(任务)的状态监控

PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S —进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 I=空闲状态 X=进程消亡(所以不会在top和ps命令中看到X)
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计(cpu多核的话是累计计算),注意不是进程运行时间
COMMAND — 进程名称(命令名/命令行)

【补充】:

a、僵尸进程如何查看和杀死

(top命令如果zombie字段大于0,表示存在僵尸进程)

ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'

命令注解:

-A 参数列出所有进程

-o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数

因为状态为 z或者Z的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程

运行结果参考如下:

Z 12334 12339 /path/cmd

这时,我们可以使用 kill -HUP 12339来杀掉这个僵尸进程

运行后,可以再次运行ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'来确认是否将僵尸进程杀死

如果kill 子进程的无效,可以尝试kill 其父进程来解决问题,例如上面例子父进程pid是 12334,那么我们就运行 kill -HUP 12334

如果查出来的僵尸进程很多 ,如果是同一个父进程,可以直接杀死父进程,如果每个僵尸死进程的父进程不一样,可以使用如下命令批量杀死僵尸进程:

ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9

二、内存负载

1、查看内存使用情况

1.1、free命令查看

free -m   #以MB为单位显示free -h   #以G为单位显示free -h -s 3    #持续观看内存变化,每3秒显示一次,按ctrl c终止

【参数说明】:

  • Mem 行(第二行)是内存的使用情况。
  • Swap 行(第三行)是交换空间的使用情况。对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
  • total 列显示系统总的可用物理内存和交换空间大小。
  • used 列显示已经被使用的物理内存和交换空间。
  • free 列显示还有多少物理内存和交换空间可用使用。严格来说used指的是现在系统内核控制的内存数,free是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
  • shared 列显示被共享使用的物理内存大小。
  • buff/cache 列显示被 buffer 和 cache 使用的物理内存大小,可用内存=free+buffer+cached。
  • available 列显示还可以被应用程序使用的物理内存大小。

1.2、查看meminfo文件

cat /proc/meminfo   #提供的信息和 free 命令看到的差不多

1.3、其他方式(vmstat、top)

vmstat -s    #可以对内存使用情况进行统计, 类似于 /proc/meminfotop -o %MEM  #使用top查看,并按内存使用从大到小排序,%CPU是按cpu占用从大到小排序

【补充】:

a、查看物理内存硬件信息

dmidecode -t 17      # -t是type指定查看类型,17代表内存,其他类型可以使用man dmidecode查看

三、磁盘负载

1、查看硬盘信息

1.1、区分硬盘是固态盘还是机械盘

#方法1:
#sda替换为实际盘符,返回1表示机械盘,返回0表示固态盘,0表示磁盘不可以旋转,那么就是SSD了
cat /sys/block/sda/queue/rotational   #方法2:
lsblk -d -o name,rota    #同样0表示固态,1表示机械

2、IO负载查看

2.1、iostat查看

# -x 选项将用于显示和io相关的扩展数据; 1表示间隔;10表示时间
iostat -x 1 10    

【参数说明】:

选项 说明
r/s 每秒完成的读次数
rkB/s 每秒读数据量(kB为单位)
rrqm/s 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
w/s 每秒完成的写次数
wkB/s 每秒写数据量(kB为单位)
wrqm/s 每秒对该设备的写请求被合并次数
%util 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率,如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

2.2、iotop查看

非系统自带,需要安装iotop包。

特点:用于查看哪个线程耗IO比较高,按o键只显示有磁盘IO活动的进程。

iotop

iotop命令参数说明:-o, --only只显示正在产生I/O的进程或线程。除了传参,可以在运行过程中按o生效。-b, --batch非交互模式,一般用来记录日志。-n NUM, --iter=NUM设置监测的次数,默认无限。在非交互模式下很有用。-d SEC, --delay=SEC设置每次监测的间隔,默认1秒,接受非整形数据例如1.1。-p PID, --pid=PID指定监测的进程/线程。-u USER, --user=USER指定监测某个用户产生的I/O。-P, --processes仅显示进程,默认iotop显示所有线程。-a, --accumulated显示累积的I/O,而不是带宽。-k, --kilobytes使用kB单位,而不是对人友好的单位。在非交互模式下,脚本编程有用。-t, --time 加上时间戳,非交互非模式。-q, --quiet 禁止头几行,非交互模式。有三种指定方式。-q 只在第一次监测时显示列名-qq 永远不显示列名。-qqq 永远不显示I/O汇总。
交互按键:和top命令类似,iotop也支持以下几个交互按键。left和right方向键:改变排序。  r:反向排序。o:切换至选项--only。p:切换至--processes选项。a:切换至--accumulated选项。q:退出。i:改变线程的优先级。

四、网络负载

1、查看网卡设备是百兆/千兆/万兆

ethtool ens33      #ens33替换成实际网卡名

如果是bond,可以直接查看bond状态

cat /proc/net/bonding/bond0     #bond0根据实际bond名替换

如上,两个一万兆网卡做bond平衡轮询模式,所生成的bond速率是两万兆。

2、查看网络负载

2.1、sar命令分析

sar -n DEV 1 5    #每隔1秒显示1次,显示5次

【参数释义】

IFACE:这一列表示设备名称

rxpck/s:这一列表示每秒进入收取的包的数量

txpck/s:这一列表示每秒发送出去的包的数量

rxkB/s:这一列表示每秒收取的数据量(单位为KB)

txkB/s:这一列表示每秒发送的数据量

2.2、nethogs查看

特点:非系统自带,属于nethogs,用于显示网卡上进程级的流量信息

nethogs    #查看所有网卡进程级流量,默认监控所有物理网卡nethogs et0   #查看指定网卡进程级流量nethogs -v 3  #指定网卡流量显示单位,默认KB,(0 = KB/s, 1 = total KB, 2 = total B, 3 = total MB)nethogs -a   #-a参数可以监控所有流量网卡,特别是回环口流量

【银河麒麟V10】【服务器】系统负载分析相关推荐

  1. VMware 16 安装银河麒麟V10服务器系统

    1.新建 Ubuntu 64 位 的虚拟环境 2.设置虚拟机的显示器为最小分辨率1024X768,勾去3D加速图形(防止桌面登录看不到登录) 3.加载系统镜像开始安装 4.进入系统桌面,安装" ...

  2. 银河麒麟V10桌面系统卡于光标处无法进入系统解决方法

    银河麒麟V10桌面系统若遇到卡在光标处无法进入系统的状况,可进单用户尝试修复下分区. 1.进入单用户模式 重启机器,开机引导选第三个高级选项 第三个选项进入后,再选择第二个选择 等待片刻,系统会加载到 ...

  3. 银河麒麟V10服务器系统安装教程及注意事项

    系统安装 1.引导安装 从U盘引导安装时首先进入的是安装引导页面,如下图: 使用向上方向键<↑>选择"Install Kylin Linux Advanced Server V1 ...

  4. 国产操作系统银河麒麟V10桌面系统文件共享配置

    作者使用的系统是国产操作系统银河麒麟V10-2101-arm桌面系统.通过麒麟的文件共享服务,将文件夹共享给局域网中的其他windows和麒麟主机. 设置共享 右击文件夹属性–>共享选项.共享名 ...

  5. 国产系统下的DES,SM4工具,银河麒麟V10桌面系统,飞腾芯片

    在银河麒麟v10,飞腾2000下测试通过 解压 tar -xvf DESandSM4.tar.gz chmod +x DESandSM4 如果无法运行可能是so版本不一致,可以将压缩包下的so考到系统 ...

  6. 银河麒麟v10 服务器 和统信20 1050e 服务器 安装oracle 19c实战(适配成功)

    一.资源: 1.操作系统(二选一,我在适配时,两个环境都测试了)x86_64架构: 银河麒麟服务器版操作系统: Kylin-Server-10-SP2-Release-Build09-20210524 ...

  7. 银河麒麟V10操控系统Qt安装

    下载安装镜像 申请试用https://www.kylinos.cn/support/trial.html, 根据CPU架构选择要下载的安装包. AMD.Intel的CPU下载银河麒麟桌面操作系统V10 ...

  8. 银河麒麟v10服务器操作系统安装配置

    virtualbox设置 镜像下载地址:https://www.kylinos.cn/scheme/server.html 网卡这里给了两张,一张nat模式,一张选择仅主机模式 系统安装 接下来就可以 ...

  9. 银河麒麟V10业务系统适配记录 处理器:FT2000+ 中国信创服务社区

    云服务器配置 实例规格:4核8GB 镜像: KylinV10-Server-SP1 处理器型号:FT2000+ 数据盘:无 公网IP带宽:1M 1.root设置密码     1.1. sudo pas ...

  10. 麒麟服务器v10系统安装时报错,银河麒麟V10服务器版本编译安装php7.2.12

    上传tar包php-7.2.12.tar.gz tar -zxvf php-7.2.12.tar.gz cd php-7.2.12 ./configure --prefix=/home/kookser ...

最新文章

  1. 【mysql dump】 备份原理及脚本
  2. 工作中常用,实用工具推荐!
  3. sql 定时同步两个数据库
  4. Hyperledger Fabric 1.0发布:基于区块链的开源分布式账本
  5. Caffe+Kubuntu16.04_X64+CUDA 8.0配置
  6. OpenCv2 学习笔记(1) Mat创建、复制、释放
  7. 1215 - Cannot add foreign key constraint
  8. 【openMV】openMV之测距
  9. 微课|中学生可以这样学Python(例5.6、例5.7):集合应用
  10. shelve模块简单用法
  11. vim“用sudo写”技巧如何工作?
  12. kaggle谷歌商店预测竞赛
  13. 如何使用Linux匿名上网-四大法宝
  14. 金融数据分析(十)人均国内生产总值的增长率
  15. 阿里 P7 到底该具备什么样的能力?
  16. swat weather 输入数据注意事项
  17. AtCoder Beginner Contest 264笔记
  18. 评分的游戏:Uber是如何将乘客变成可怕的boss的?
  19. 领导绝不会告诉你的,提拔干部的三大关键因素
  20. 常见PCIE X1/X4/X8/X16插槽作用与区别

热门文章

  1. 知道坐标matlab三维作图,MATLAB知道(x,y,z)坐标怎样画三维图? 函数是什么? 希望知道的人能告诉我下,谢谢~~~...
  2. 研究项目管理过程与领域知识及其关系
  3. mciSendCommand 返回错误代码277 的解决方案
  4. python读取mp4文件失败_Python代码打开本地.mp4格式文件的方法-mp4文件
  5. Windwos下搭建MongoDB集群
  6. npm使用淘宝镜像来安装
  7. 打开word、excel弹出控件安装弹窗
  8. TurboMail邮件系统助联东集团成功集成腾讯RTX
  9. 功能强大的编辑器——Vi
  10. python 爬取腾讯全网影视榜 - 电影 top50 名字以及相应地址保存