查看CPU负载
uptime
这些字段显示:当前时间,系统已运行的时间,当前登录用户的数量,相应最近5、10和15分钟内的平均负载。
w
Linux w命令用于显示目前登入系统的用户信息。执行这项指令可得知目前登入系统的用户有哪些人,以及他们正在执行的程序。单独执行 w 指令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
top
top命令的顶部显示与uptime命令相似的输出,这些字段显示:当前时间,系统已运行的时间,当前登录用户的数量,相应最近5、10和15分钟内的平均负载。
任务(进程),系统现在共有457个进程,其中处于运行中的有1个,456个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
这里显示不同模式下所占cpu时间百分比,这些不同的cpu时间表示:
us, user: 运行(未调整优先级的) 用户进程的CPU时间
sy,system: 运行内核进程的CPU时间
ni,niced:运行已调整优先级的用户进程的CPU时间
wa,IO wait: 用于等待IO完成的CPU时间
hi:处理硬件中断的CPU时间
si: 处理软件中断的CPU时间
st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。
接下来两行显示内存使用率。第一行是物理内存,第二行是虚拟内存。物理内存显示如下:全部可用内存、已使用内存、空闲内存、缓冲内存。相似地,交换部分显示的是:全部、已使用、空闲和缓冲交换空间。
PID:进程ID,进程的唯一标识符
USER:进程所有者的实际用户名。
PR:进程的调度优先级。这个字段的一些值是’rt’。这意味这这些进程运行在实时态。
NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR:SHR是进程使用的共享内存。共享内存大小,单位kb
S:这个是进程的状态。它有以下不同的值:
- D - 不可中断的睡眠态。
- R – 运行态
- S – 睡眠态
- T – 被跟踪或已停止
- Z – 僵尸态
%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。
%MEM:进程使用的可用物理内存百分比。
TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。
COMMAND:运行进程所使用的命令。进程名称(命令名/命令行)
更多内容可以查看https://www.cnblogs.com/zhoug2020/p/6336453.html
压力测试工具:stress
安装
1 | yum install -y epel-release |
使用方式
1 | `stress' imposes certain types of compute stress on your system |
查看CPU功耗
方法1:s-tui
安装
1 | yum install python-pip stress |
使用
需要root权限。需要以下命令启动:
1 | s-tui |
s-tui里面包含cpu的功耗,温度,频率,利用率等信息。
方法2:turbostat
需要root权限。需要以下命令使用:
1 | turbostat |
一、turboastat可以用来查看CPU核心处在C1 C3 C6 C7状态下时间。
在CPU超线程的核心中,如果某个核心处于工作状态,会阻止该超线程的另一个核心进入比C1更加深入的省电模式。
二、turbostat可以查看CPU的温度信息。
CoreTmp:每个物理cpu核心的温度。
PkgTmp:每个物理CPU的温度。
三、turbostat查看CPU的忙碌状态。
AVG_MHz 执行周期数除以经过的时间
%Busy 处于“ C0”状态的时间百分比。
Bzy_MHz cpu繁忙时的平均时钟频率。 (in “c0” state).
TSC_MHz TSC在整个时间间隔内运行的平均MHz。TSC是一个64bit的寄存器,用来记录cpu的cycle个数。
四、查看能耗消耗位置
PkgWatt 整个CPU消耗的瓦特数。
CorWatt 核心消耗的瓦特数。
GFXWatt 图像部分消耗的瓦特数。
RAMWatt DRAM DIMMS 部分消耗的瓦特数。
五、查看RAPL信息
RAPL是Running Average Power Limit的缩写。
PKG_% cpu RAPL节流活动间隔的百分比。
RAM_% cpu RAPL节流在DRAM上处于活动状态的时间间隔的百分比。
方法3:powertop
安装
1 | yum install powertop |
使用
Powertop需要root权限。详细可以参考https://linux.cn/article-10560-1.html。
方法4:MSR寄存器
MSR(Model Specific Register)是x86架构中的概念,指的是在x86架构处理器中,一系列用于控制CPU运行、功能开关、调试、跟踪程序执行、监测CPU性能等方面的寄存器。
RAPL
RAPL全称为: running average power limit
RAPL是x86处理器用于限制功耗、获取功耗的一组工具,rapl提供了一系列的设置接口用于限制和获取cpu的功耗以及CPU的能量消耗,而我们调用这些功能的入口就是学会读写msr寄存器。关于RAPL的操作说明,参考Intel开发者帮助手册第3卷14.9章节。
在RAPL中获取功耗的思路是:
- 首先使用cpuid代码或者lscpu查看cpu是否支持msr (这个一般都支持)
- 读取MSR_RAPL_POWER_UNIT寄存器的内容,得到能量的基本计算单元。
- 读取MSR_PKG_ENERGY_STATUS寄存器的内容,用来乘以能量基本计算单元,得到具体的累积能量消耗(单位:焦耳)。
- 程序暂停一段时间。
- 再次读取MSR_PKG_ENERGY_STATUS寄存器的内容,乘以能量基本计算单元,得到累积能量消耗。
- 用第二次得到的累积能量消耗减去第一次的,除以时间,就得到了这段时间的平均功耗。
查看服务器功耗
ipmitool
安装
1 | yum install -y OpenIPMI ipmitool |
使用
需要root权限。使用命令:
1 | ipmitool -I open sdr elist |
此命令可以获取传感器中的各种监测值和该值的监测阈值,包括(CPU温度,电压,风扇转速,电源调制模块温度,电源电压等信息)。
使用以下命令查看功耗:
1 | ipmitool -I open sdr elist | grep Sys_Total_Power |
更多ipmitool功能可以参考https://blog.csdn.net/xinqidian_xiao/article/details/80924897。
参考文献
https://www.cnblogs.com/zhoug2020/p/6336453.html
https://blog.csdn.net/weixin_44793395/article/details/106167831
https://linux.cn/article-10560-1.html
https://blog.csdn.net/xinqidian_xiao/article/details/80924897