Linux 环境下的性能测试——top与stress

对于Linux 环境,top命令是使用频繁且信息较全的命令, 它对于所有正在运行的进行和系统负荷提供实时更新的概览信息。stress是个简单且全面的性能测试工具。通过它可以模拟各种高负载情况。

通过topstress这两个命令的结合使用,基本可以达到压力测试的目的。

1. 查看硬件资源

# 查看cpu个数
cat /proc/cpuinfo

# 查看内存大小
cat /proc/meminfo

# 查看当前内存使用情况
free -h

# 查看磁盘大小
df -h

# 查看当前文件夹已用磁盘大小
du -sh ./*

2. 查看资源实时使用率——top命令

执行top命令

请添加图片描述

2.1 第一行

top - 03:13:05 up 7 days, 1:29, 4 users, load average: 0.85,0.67.0.57
  • top: 当前时间
  • up: 机器运行了多长时间
  • users: 当前登录用户数
  • load average: 系统负载,即任务队列的平均长度。三个数值分别为 过去的1分钟、5分钟和15分钟里,有多少进程在等待CPU资源。 如果这几个数字高于了CPU核心数(比如在4核CPU上,如果3个数字之和超过了4,就表示负载较大),则说明系统负载较高,需要优化,否则就表示系统运行稳定。

2.2 第二行

Tasks: 182 total, 1 running, 181 sleeping, 0 stopped, 0 zombie
  • Tasks: 当前有多少进程。
  • running: 正在运行的进程数 。
  • sleeping: 正在休眠的进程数 。
  • stopped: 停止的进程数 。
  • zombie: 僵尸进程数。

2.3 第三行

%Cpu(s):3.6 us, 5.1 sy, 0.0 ni, 91.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
  • us:用户空间占CPU的百分比(像shell程序、各种语言的编译器、各种应用、web服务器和各种桌面应用都算是运行在用户地址空间的进程,这些程序如果不是处于idle状态,那么绝大多数的CPU时间都是运行在用户态)。
  • sy:内核空间占CPU的百分比(所有进程要使用的系统资源都是由Linux内核处理的,对于操作系统的设计来说,消耗在内核态的时间应该是越少越好,在实践中有一类典型的情况会使sy变大,那就是大量的IO操作,因此在调查IO相关的问题时需要着重关注它)。
  • ni:用户进程空间改变过优先级(ni是nice的缩写,可以通过nice值调整进程用户态的优先级,这里显示的ni表示调整过nice值的进程消耗掉的CPU时间,如果系统中没有进程被调整过nice值,那么ni就显示为0)。
  • id:空闲CPU占用率。
  • wa:等待输入输出的CPU时间百分比(和CPU的处理速度相比,磁盘IO操作是非常慢的,有很多这样的操作,比如,CPU在启动一个磁盘读写操作后,需要等待磁盘读写操作的结果。在磁盘读写操作完成前,CPU只能处于空闲状态。Linux系统在计算系统平均负载时会把CPU等待IO操作的时间也计算进去,所以在我们看到系统平均负载过高时,可以通过wa来判断系统的性能瓶颈是不是过多的IO操作造成的)。
  • hi:硬中断占用百分比(硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息,当CPU收到中断消息后需要进行适当的处理,消耗CPU时间)。
  • st:软中断占用百分比(软中断是由程序发出的中断,最终也会执行相应的处理程序,消耗CPU时间)。
  • st:steal time, 系统花了百分之多少等待得到真正的cpu资源 。

2.4 第四行

KiB Mem :7888320 total, 1695796 free, 4378504 used, 1814020 buff/cache
  • total:物理内存总量。
  • free:空闲内存量。
  • used:使用的内存量。
  • buffer/cache:用作内核缓存的内存量。

2.5 第五行

KiB Swap: 8126460 total, 8126460 free, 0 used. 3156100 avail Mem
  • total:交换区内存总量。
  • free:空闲交换区总量。
  • used:使用的交换区总量。
  • buffer/cache:缓冲的交换区总量。

第四第五行分别是内存信息和swap信息,所有程序的运行都是在内存中进行的,所以内存的性能对与服务器来说非常重要。不过当内存的free变少的时候,其实我们并不需要太紧张。真正需要看的是Swap中的used信息。

Swap分区是由硬盘提供的交换区,当物理内存不够用的时候,操作系统才会把暂时不用的数据放到Swap中。所以当这个数值变高的时候,说明内存是真的不够用了。

2.6 进程信息

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  • PID: 进程id
  • USER: 进程所有者的用户名
  • PR:优先级
  • NI: nice值,负值表示高优先级,正值表示低优先级
  • VIRT: 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
  • RES: 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
  • SHR: 共享内存大小,单位kb
  • S: 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
  • %CPU: 上次更新到现在的CPU时间占用百分比
  • %MEM: 进程使用的物理内存百分比
  • TIME+: 进程使用的CPU时间总计,单位1/100秒
  • COMMAND: 命令名/命令行

3. 压力测试工具——stress

3.1 安装

  • 在RHEL/CentOS 系统可以使用 yum install stress

  • 在Debian/Ubuntu系统中,可以使用apt-get install stress

  • 源码离线安装 stress-1.0.4.tar.gz

tar -zxvf stress-1.0.4.tar.gz
cd stress-1.0.4
./configure
make 
make install

3.2 压测命令

帮助命令:stress --help

`stress' imposes certain types of compute stress on your system

Usage: stress [OPTION [ARG]] ...
 -?, --help         show this help statement
     --version      show version statement
     				显示版本号
 -v, --verbose      be verbose
 					显示详细的信息
 -q, --quiet        be quiet
 					程序在运行的过程中不输出信息
 -n, --dry-run      show what would have been done
 					输出程序会做什么而并不实际执行相关的操作
 -t, --timeout N    timeout after N seconds
 					在 N 秒后结束程序
     --backoff N    wait factor of N microseconds before work starts
     				等待N微妙后开始运行
 -c, --cpu N        spawn N workers spinning on sqrt()
 					产生 N 个进程,每个进程都反复不停的计算随机数的平方根
 -i, --io N         spawn N workers spinning on sync()
 					产生 N 个进程,每个进程反复调用 sync() 将内存上的内容写到硬盘上
 -m, --vm N         spawn N workers spinning on malloc()/free()
 					产生 N 个进程,每个进程不断分配和释放内存
     --vm-bytes B   malloc B bytes per vm worker (default is 256MB)
     				指定分配内存的大小
     --vm-stride B  touch a byte every B bytes (default is 4096)
     				不断的给部分内存赋值,让 COW(Copy On Write)发生
     --vm-hang N    sleep N secs before free (default none, 0 is inf)
     				指示每个消耗内存的进程在分配到内存后转入睡眠状态 N 秒,然后释放内存,一直重复执行这个过程
     --vm-keep      redirty memory instead of freeing and reallocating 
     				一直占用内存,区别于不断的释放和重新分配(默认是不断释放并重新分配内存)。
 -d, --hdd N        spawn N workers spinning on write()/unlink()
 					产生 N 个不断执行 write 和 unlink 函数的进程(创建文件,写入内容,删除文件)
     --hdd-bytes B  write B bytes per hdd worker (default is 1GB)
     				指定文件大小

Example: stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s

Note: Numbers may be suffixed with s,m,h,d,y (time) or B,K,M,G (size).

stress常用压测命令

# CPU压力测试
# 启动2个CPU进程
stress -c 2
# 启动2个CPU进程,持续时间为60s
stress -c 2 -t 60

# 内存压测
# 启动2个进程,每个进程分配1G内存,分配后不释放
stress --vm 2 --vm-bytes 1G --vm-keep

# IO压测
# 启动4个进程,将内存上的内容写到硬盘上,top命令可看到sy升高,wa升高
stress -i 4

# 磁盘IO压测
# 创建一个进程不断地在磁盘上创建10M大小的文件并写入内容
stress -d 1 --hdd-bytes 10M

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决:ModuleNotFoundError: No module named ‘exceptions’

解决:ModuleNotFoundError: No module named ‘exceptions’ 文章目录 解决:ModuleNotFoundError: No module named exceptions背景报错问题翻译:报错位置代码报错原因解决方法今天的分享就到此结束了 背景 在使用之前的代码时,报…

报表控件Stimulsoft 操作演示:访问编译的报告

使用编译计算模式的报告能够执行使用报告脚本语言实现的各种脚本。然而,这些场景并不总是安全的,从网络安全的角度来看,可能会导致负面情况。经过分析情况,我们决定加强有关编译模式报告的安全策略。但让我们一步一步来。顺便说一…

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Mybatis核心配置详解

第一章 Mybatis核心配置详解【mybatis-config.xml】 1.1 核心配置文件概述 MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 1.2 核心配置文件根标签 没有实际语义,主要作用:所有子标签均需要设置在跟标签内部 1.3 核心配置文件…

【数电笔记】17-具体函数的卡诺图填入

目录 说明: 用卡诺图表示逻辑函数 1. 基本步骤 2. 例题 2.1 例1-真值表转换卡诺图 2.2 例2-标准与或式画卡诺图 2.3 例3-非标准与或式画卡诺图(常见,重点掌握) 说明: 笔记配套视频来源:B站;本系列笔…

学生档案管理系统研究

摘 要 学生档案管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生档案管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低…

gpt阅读论文利器

1. txyz.ai 读论文 严伯钧 3. consensus 两亿科学论文的资源库. 用英文. 中国经济发展, 美国加州没有,减肥没有. 2. chrome插件 gpt sidebar 3. gpt academic 论文润色和学术翻译 ,一键输出公式. 英语口语8000句. 托福备考计划表. 百词斩托福. 薄荷外刊. 分区笔记精读法.…

java--接口的其他细节

1.jdk8开始,接口新增了三种形式的方法 ①默认方法(实例方法):使用用default修饰,默认会被加上public修饰。注意:只能使用接口的实现类对象调用 ②私有方法:必须用private修饰(jdk9开始才支持) ③类方法(静态方法)&a…

数字化车间|用可视化技术提升车间工作效率

数字化车间正在成为现代制造业的重要组成部分。随着科技的不断进步,传统的车间生产方式逐渐地被数字化和自动化取代。数字化车间将机器和软件进行整合,实现了生产过程的高效、精确和可追溯。在数字化车间中,机器之间可以进行无缝的通信和协作…

vue: 线上项目element-ui的icon偶尔乱码问题

线上环境偶尔会复现, 具体: 一般使用不会出现这个问题,因为一般引入的是element-ui的css文件,问题出在于为了主题色变化啊,需要用到scss变量引入了scss文件。 import “~element-ui/packages/theme-chalk/src/index”…

XCharts——Unity上最好用的免费开源图表插件!(一)基本介绍

只讲实用干货!!!(过于细节的或是未提及到的可直接问) 目录 XCharts介绍 插件简介 插件下载 XCharts基本使用 类型介绍 1.折线图(LineChart) 2.柱形图(BarChart) …

Spring---事务

事务 学习了MySQL的朋友应该大致了解事务的含义。所谓事务就是一系列操作,要么都执行,要么都不执行。在spring中事务有两种形式:声明式事务和编程式事务。一般使用声明式事务,用的比较多的就是注解Transactional。如下图所示&…

深入理解指针3

hello,各位小伙伴,本篇文章跟大家一起继续深入学习指针,感谢大家对我上一篇的支持,如有什么问题,还请多多指教 如果本篇文章对你有帮助,还请各位点点赞!!! 话不多说&am…

Unity环境配置并解决visual studio 不能智能代码提示Unity代码问题(一)

1、请先安装好unity和Visual Studio 2019 2、Visual Studio需要安装如图(2019才会有那个移动的可以勾选) 3、Unity配置 file->build setting windows->package manager 安装如下图 edit->preferences 3、创建c#脚本 如果还是没能智能提…

计算机基础知识65

cookie和session的使用 # 概念:cookie 是客户端浏览器上的键值对 # 目的:为了做会话保持 # 来源:服务端写入的,服务端再返回的响应头中写入,浏览器会自动取出来 存起来是以key value 形式,有过期时间、path…

嵌入式Linux开发——解决uboot无法使用nfs服务从ubuntu中下载文件(TTT、cannot mount等错误)

前言: 最近在学习正点原子嵌入式Linux开发板uboot的移植实验,移植完之后想测试网络部分的驱动能否工作正常。最后经过测试发现tftp可以正常下载,nfs却一直报错无法下载文件,最后也是折磨了两天才解决了问题,特写下此博…

基于ssm vue的风景文化管理平台源码和论文

摘 要 随着信息化时代的到来,管理系统都趋向于智能化、系统化,基于vue的木里风景文化管理平台也不例外,但目前国内的市场仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对…

sort by modulus of a complex number

描述 复数E包含实部x和虚部y, Exyi;E的模为: 输入n(<1000)和n对(x,y); 按模数升序对复合体进行排序&#xff0c;如果模数相等&#xff0c;则按输入顺序排序。 排序后输出n行of (x_i,y_i,mod_i)&#xff0c;保留2个十进制小数。 输入 输入n和n对(x,y); 输出 输出排序后的n行(…

智能优化算法应用:基于金鹰算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于金鹰算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于金鹰算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.金鹰算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

android开发市场被抢占,鸿蒙能入行吗?

根据最新的数据&#xff0c;华为Mate60系列在上市第二周就成功占据了国内手机市场的17%份额&#xff0c;排名第二。而机构预测&#xff0c;华为手机在第37周有望超过20%的市场份额&#xff0c;成为国内手机市场的冠军。 一开始&#xff0c;人们对HarmonyOSNEXT持保留态度&…

SpringBoot集成mail发送邮件

前言 发送邮件功能&#xff0c;借鉴 刚果商城&#xff0c;根据文档及项目代码实现。整理总结便有了此文&#xff0c;文章有不对的点&#xff0c;请联系博主指出&#xff0c;请多多点赞收藏&#xff0c;您的支持是我最大的动力~ 发送邮件功能主要借助 mail、freemarker以及rocke…