Linux系统性能分析
查看系统中的处理器单元数量
nproc

lscpu

grep 'model name' /proc/cpuinfo | wc -l【在/proc/cpuinfo中查找model name字符串并统计个数】

查看平均负载
top【具体的值会动态变化】

uptime

解析:load average:分别记录了过去一分钟、五分钟、以及十五分钟的系统平均负载
stress工具的使用
简介
stress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高负荷和监督这些设备运行的用户。
安装
- 下载安装包:下载地址为https://fossies.org/linux/privat/stress-1.0.4.tar.gz/
- 将stress-1.0.4.tar.gz复制到“/usr/local/src/”目录下
cd /usr/local/srctar -xzpvf stress-1.0.4.tar.gzcd stress-1.0.4./configuremakemake checkmake installmake clean
使用
产生3个cpu进程
每个进程都反复不停的计算由rand ()产生随机数的平方根
stress -c 13
产生4个io进程
每个进程反复调用sync(),sync()用于将内存上的内容写到硬盘上
stress -i 4
产生3个cpu进程4个io进程2分钟后停止运行
stress -c 3 -i 4 --verbose --timeout 2m
产生2个10M的malloc()/free()进程,并且vm进程中malloc的字节不释放
stress --vm 2 --vm-bytes 10000000 --vm-keep --verbose
测试硬盘
通过mkstemp()生成800K大小的文件写入硬盘,对CPU、内存的使用要求很低
stress -d 1 --hdd-noclean --hdd-bytes 800k
Linux执行程序出现killed

原因分析:整个系统的内存已经不足,如果不杀死进程的话,就会导致系统的崩溃。Linux 内核有个机制叫OOM killer(Out Of Memory killer),该机制会监控那些占用内存过大,尤其是瞬间占用内存很快的进程,然后防止内存耗尽而自动把该进程杀掉。如下图,MEM已经到83.7%了。

解决办法:
- 通过系统日志信息查看Killed的进程:
dmesg | grep "Out of memory"

- 看看程序是不是存在问题,优化程序
- 加内存
Python测量某段代码执行的利用率
参考链接:https://blog.csdn.net/Hubz131/article/details/94414013
这个问题困扰了我很久,期间一直在百度linux命令,在python中通过os.popen()来调用top,sar等命令,试了好多种方法都不准确,最终找到psutil这个工具,不得不敢开Python的强大!
import os
import psutil
import time
_timer = getattr(time, 'monotonic', time.time)
num_cpus = psutil.cpu_count() or 1
def timer():
return _timer() * num_cpus
def GetProcessCPU_Pre(id):
p = psutil.Process(id)
pt = p.cpu_times()
st1,pt1_0,pt1_1 = timer(),pt.user,pt.system # new
# ...这里是你要测量的代码块...
pt = p.cpu_times()
st0,pt0_0,pt0_1 = pid_cpuinfo.get(id,(0,0,0)) # old
delta_proc = (pt1_0 - pt0_0) + (pt1_1 - pt0_1)
delta_time = st1 - st0
try:
cpus_percent = ((delta_proc / delta_time) * 100)
except:
cpus_percent = 0.0
return "{:.2f}".format(cpus_percent)
if __name__ == '__main__':
pid = os.popen("pidof 进程描述信息【比如python3】").read().split(' ')[0]
GetProcessCPU_Pre(pid)
本文主要介绍了如何分析Linux系统的性能,包括查看处理器单元数量、平均负载,以及使用stress工具进行压力测试。stress是一个用于测试系统高负荷运行的工具,可以产生CPU和IO进程。当Linux执行程序被killed时,可能是由于内存不足,可通过系统日志找出原因。此外,还提到了Python使用psutil库测量代码执行的CPU利用率。

4151

被折叠的 条评论
为什么被折叠?



