有些时候用命令行去查看CPU和内存不太方便,这个时候python就可以很快解决问题。
CPU总核数 = 物理CPU个数 * 每颗物理CPU的核数
总逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数
Python
释放内存:
import gc
del a
gc.collect()
查看内存占用:
import psutil
import os
info = psutil.virtual_memory()
print(u'内存使用:',psutil.Process(os.getpid()).memory_info().rss/1024/1024/1024)
print(u'总内存:',info.total/1024/1024/1024)
print(u'内存占比:',info.percent)
print(u'cpu个数:',psutil.cpu_count())
命令行
查看CPU信息(型号)
[root@AAA ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
12 Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
查看物理CPU个数
[root@AAA ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
6
查看每个物理CPU中core的个数(即核数)
[root@AAA ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores : 1
查看逻辑CPU的个数
[root@AAA ~]# cat /proc/cpuinfo| grep "processor"| wc -l
6
如果不想自己算,也可以直接lscpu
只有1个cpu,2核,支持超线程,所以有4个逻辑CPU
查看CPU使用率命令
1. top
top命令可以看到总体的系统运行状态和cpu的使用率,下面是各数据代表的意思:https://www.cnblogs.com/suway/p/7232620.html
这个命令很常用,在第三行显示CPU当前的使用情况
%us:表示用户空间程序的cpu使用率(没有通过nice调度)
%sy:表示系统空间的cpu使用率,主要是内核程序。
%ni:表示用户空间且通过nice调度过的程序的cpu使用率。
%id:空闲cpu
%wa:cpu运行时在等待io的时间
%hi:cpu处理硬中断的数量
%si:cpu处理软中断的数量
%st:被虚拟机偷走的cpu
第一部分 -- 最上部的 系统信息栏 :
第一行(top):
“00:11:04”为系统当前时刻;
“3:35”为系统启动后到现在的运作时间;
“2 users”为当前登录到系统的用户,更确切的说是登录到用户的终端数 -- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;
“load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程;
第二行(Tasks):
“59 total”为当前系统进程总数;
“1 running”为当前运行中的进程数;
“58 sleeping”为当前处于等待状态中的进程数;
“0 stoped”为被停止的系统进程数;
“0 zombie”为被复原的进程数;
第三行(Cpus):
分别表示了 CPU 当前的使用率;
第四行(Mem):
分别表示了内存总量、当前使用量、空闲内存量、以及缓冲使用中的内存量;
第五行(Swap):
表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。
第二部分 -- 最下部分的进程列表栏:https://blog.csdn.net/black_little_/article/details/82659265
在进程中 按 M P T 可以进行排序:
M:按照%MEM排行
P:按照%CPU使用率排行
T:按照MITE+排行
参数解释:
PID:所有进程的ID
USER:所有者
PR:进程的优先级,越小会被优先执行
NInice:值
VIRT:当前进程所占用的虚拟内存
RES:当前进程所占用的物理内存
SHR:进程所使用的共享内存
S:进程的状态。S:表示休眠,R:表示正在运行,Z:表示僵死,N:表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:对应进程的启动命令
2. vmstat
一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。如:vmstat 1 5
3. sar
sar命令语法和vmstat一样。命令不存在时需要安装sysstat包,这个包很有用。
安装sysstat包的命令:yum install sysstat
每1秒采集一次CPU使用率,共采集5次:sar -u 1 5
和top一样,可以看到所有cpu的使用情况。如果需要查看某颗cpu的使用可以用-P参数,指定显示0号cpu 的使用情况:sar -P 0 -u 1 5
进程队列长度和平均负载状态,每1秒采集一次,共采集5次:sar -q 1 5
输出项:
runq-sz:运行队列的长度(等待运行的进程数)
plist-sz:进程列表中进程(processes)和线程(threads)的数量
ldavg-1:最后1分钟的系统平均负载(System load average)
ldavg-5:过去5分钟的系统平均负载
ldavg-15:过去15分钟的系统平均负载
sar命令也可以获取过去指定日期的性能参数: sar -u -f /var/log/sa/sa20
4. mpstat
这个命令也在sysstat包中,语法类似
例如每1秒收集一次,共5次: mpstat 1 5
5. dstat
每秒cpu使用率情况获取:dstat -c
最占cpu的进程获取:dstat --top-cpu
“当你的才华还撑不起你的野心的时候,你就应该静下心来学习”
以后这句话将会出现在我的每一篇博文中,用于提醒我自己,静下来好好学习。