一、任务说明(事件背景)
新上线了一批信创服务器(联想开天,昆仑-鲲鹏),为验证硬件资源使用的稳定性,客户和领导要求进行压力测试。压力测试要求如下:服务器设备性能验证,需要保证CPU、内存使用率在80%,持续时间最少1周,利用stress并生成测试报告。
按照要求做了raid,安装Kylin-Server-10-SP1(麒麟V10)操作系统(昆仑-鲲鹏是arm版,联想开天是X86版)。
二、压测软件的选择
测试报告模板提供了5种压测软件的选择:UnixBech、Fio、netperf、prime95、stress。
因为kylin是用的centos的内核,所以这里选择stress软件进行压测。
三、stress的安装
1、先把stress软件包拷贝到服务器硬盘,这里可以用u盘介质,然后以挂载的方式让服务器识别到U盘,再将u盘的软件包拷贝到服务器硬盘。
df -h #插入u盘前、后各执行一次,对比找到u盘的源名称
mount /u盘的源名称 /mnt #挂载u盘到目录/mnt
cd /mnt #进入mnt,因为已经挂载了u盘,所以实际就是进入u盘
cp /mnt/stress-1.0.4-21.ky10.x86_64.rpm / #拷贝stress安装包到根目录
2、安装stress的软件包
cd /
rpm -ivh stress-1.0.4-21.ky10.x86_64.rpm
四、stress压测命令实操详解
这里我先将使用的命令摆出来,然后对选项、参数逐个进行解释,为什么要用这个参数。
stress -c 80 --vm 10 --vm-bytes 20480M --vm-keep -t 7d&
-c 选项 是对cpu逻辑核心资源的消耗,源要求是80%,这里参数是填80,稍后解释为什么填80.
--vm 选项 和 --vm-bytes 选项 是对内存资源的消耗,这里参数是填10 和20480M ,这里的选项和参数结合起来的意思是 10个进程,每个进程消耗20G,总计消耗200G内存资源。
--vm-keep 选项意味 持续占用这些内存,直到测试结束。
-t 选项是压测命令的持续时间,这里参数是填7d 就是7天。
& 是保证命令后台运行。
以上三个选项-c、--vm、 --vm-bytes 的参数填写需要明确和计算,还记得最开始的背景要求是资源占用80%以上吗?
那么我怎么确认资源占用是80%以上呢?首先我得知道总资源量是多少,就是这台要测试的服务器他本身有多少cpu逻辑核心,有多少总的内存。
4.1 查看CPU逻辑核心
方法 1:使用 lscpu
命令
lscpu
-
关键信息:
-
CPU(s)
:总逻辑 CPU 数(包括物理核心和超线程线程)。 -
Core(s) per socket
:每个物理插槽的物理核心数。 -
Socket(s)
:物理 CPU 插槽数量。 -
物理核心总数 =
Socket(s) × Core(s) per socket
。
-
方法 2:使用 nproc
命令
nproc --all #直接输出总逻辑 CPU 数量
CPU逻辑核心数总数是100
4.2 查询内存总量
free -h
内存容量总数是250G
4.3 按照要求计算,并执行命令的选项、参数
因为CPU逻辑核心数总数是100,内存容量总数是250G,这里要求是80%,那么CPU逻辑核心数消耗量就是100*0.8=80,内容容量消耗量就是250*0.8=200.
所以执行命令具体选项、参数如下:
stress -c 80 --vm 10 --vm-bytes 20480M --vm-keep -t 7d&
4.4 监测stress执行的结果
free -h #查看内存占用情况
top #查看cpu占用情况
五、一些其他讨论
5.1 stress
参数差异讨论
原命令参数
stress -c 80 --vm 10 --vm-bytes 20480M --vm-keep -t 7d&
-
CPU 负载:生成 80 个 CPU 压力线程,需确保服务器逻辑 CPU ≥80,否则会超分导致严重竞争。
-
内存负载:启动 10 个进程,每个分配 20GB 内存,总计 200GB
新参数方案
stress -c 80 --vm 20 --vm-bytes 10240M --vm-keep -t 7d&
-
CPU 负载:与原始命令相同(80 线程)。
-
内存负载:启动 20 个进程,每个分配 10GB 内存,总计仍为 200GB。
关键区别
-
进程数量与单进程内存分配:
-
新方案创建 更多进程(20 vs 10),但每个进程占用内存更小。
-
对系统的影响:
-
内存碎片:分配更小的内存块可能减少碎片问题。
-
进程调度:更多进程可能增加上下文切换开销。
-
OOM Killer 风险:若系统内存紧张,小进程可能更易被终止。
-
-
-
适用场景:
-
测试内存管理策略时,进程数量和单进程大小的组合可能暴露不同问题(如内存泄漏或分配延迟)。
-