Memory测试工具-stressapptest详解

✨前言:

stressapptest 是一个用于在各种系统组件上施加压力的工具,特别专注于内存和CPU。通过运行各种模式的访问测试,stressapptest 旨在模拟高负载下的系统行为,并帮助发现潜在的错误,比如硬件故障、过热或系统组件的不稳定性。

🌟下面是stressapptest命令的一些详细说明:

内存和CPU压力: stressapptest 主要用于在内存和处理器上施加压力,检查它们在高负荷情况下的可靠性。它可以通过执行读写操作、内存复制和反转等来达到这个目的。
磁盘I/O 测试: 除了内存和CPU测试之外,stressapptest 还能进行磁盘I/O测试,这通过向指定的设备或文件进行读写操作来完成。
网络测试: stressapptest 可以进行网络测试,这是通过添加指定向特定IP地址或响应网络请求的线程来实现的。
NUMA支持: NUMA系统允许将内存和处理器绑定到特定的NUMA节点上,stressapptest 支持这一点,并利用numactl工具来指定节点。
错误检测: 它包含了检测硬件错误(如ECC错误)的组件,当系统在高压力下运行时,这对于确认系统稳定性至关重要。
日志记录: stressapptest 可以记录测试期间的所有输出到日志文件中,供以后分析和故障排除。
参数调整: stressapptest 提供了许多参数,允许用户自定义测试的各个方面,包括测试持续的时间、使用的内存量、测试工作线程的数量等。

✨Centos下工具安装

🌟先下载源码(需要安装git)

git clone https://github.com/stressapptest/stressapptest.git

🌟编译和安装 stressapptest:

cd stressapptest
./configure
make && make install

编译完成之后会看到这个可执行文件
在这里插入图片描述

🌟stressapptest – help 可以看到常用参数

在这里插入图片描述

🌟参数解释

-M mbytes: 指定测试时要使用的内存大小(以兆字节为单位)。

–reserve-memory: 如果不使用大页面(hugepages),则为系统保留的内存量。

-H mbytes: 要求的最小大页面内存大小(以兆字节为单位)。

-s seconds: 测试运行的时间(秒)。

-m threads: 启动进行内存复制任务的线程数目。

-i threads: 启动进行内存反转任务(即对内存中的数据取反)的线程数目。

-C threads: 启动用于CPU压力测试的线程数目。

–findfiles: 自动查找磁盘I/O操作的位置。

-d device: 添加一个直接写操作磁盘的线程,针对块设备(或文件)‘device’。

-f filename: 添加一个使用临时文件 ‘filename’ 的磁盘线程。

-l logfile: 将输出日志写入 ‘logfile’ 文件。

–no_timestamps: 日志消息中不添加时间戳前缀。

–max_errors n: 在发现 ‘n’ 个错误后早期退出。

-v level: 详细信息级别(0-20),默认是8。

–printsec secs: 指定每隔多少秒打印「剩余秒数」的信息。

-W: 使用更多CPU资源以提高内存复制任务的压力。

-A: 在不兼容的系统上以降级模式运行。

-p pagesize: 内存块的大小(字节)。

–filesize size: 磁盘I/O临时文件的大小。

-n ipaddr: 添加一个网络线程,连接到IP地址为 ‘ipaddr’ 的系统。

–listen: 运行线程来监听并响应网络线程。

–no_errors: 在不检查ECC或其他错误的情况下运行。

–force_errors: 注入假错误来测试错误处理。

–force_errors_like_crazy: 注入大量假错误来测试错误处理。

-F: 不检查每项事务的结果。

–stop_on_errors: 在发现第一个错误后停止测试。

–read-block-size: 用于读取的块大小(用于 -d 参数)。

–write-block-size: 用于写入的块大小(用于 -d 参数),如果未定义,则使用读取的块大小作为写入的块大小。

–segment-size: 分割磁盘的段大小(用于 -d 参数)。

–cache-size: 磁盘缓存的大小(用于 -d 参数)。

–blocks-per-segment: 每次迭代每个段读/写的块数量(用于 -d 参数)。

–read-threshold: 一个块读操作应该花费的最长时间(微秒)(用于 -d 参数)。

–write-threshold: 一个块写操作应该花费的最长时间(微秒)(用于 -d 参数)。

–random-threads: 每个磁盘写线程的随机线程数(用于 -d 参数)。

–destructive: 写入/擦除磁盘分区(用于 -d 参数)。

–monitor_mode: 只进行ECC错误轮询,不产生压力负载。

–cc_test: 进行缓存一致性测试。

–cc_inc_count: 增加缓存线成员的次数。

–cc_line_count: 分配的缓存线大小数据结构的数量,用于缓存一致性线程操作。

🌟工具使用

 stressapptest -s 100 -M 2048 -m 4 -W

👉这条命令的含义是:
-s 100 : 测试持续100秒。

-M 2048: 使用2048MB(即2GB)内存进行测试。
-m 4: 启动4个线程执行测试。
-W: 启用更强的数据完整性验证。

⚠️注意事项
在进行内存压测时,请注意以下几点:
监控系统行为:在压测期间,监控系统的响应,以确保系统不会出现过载导致的严重问题。
确保系统稳定性:在生产环境中,确保您了解运行压测的潜在风险。压测可能会导致系统使用大量资源,从而影响到其他应用或服务。
测试结果:压测结束后,stressapptest会报告测试结果,包括是否有错误发生。仔细检查这些结果以确保内存的稳定性和可靠性。

✨numactl和stressapp的结合:

日常中如果我们要对一些numa的节点,例如cxl的memory的测试的话,
在 NUMA 架构下,我们可以将 CPU 绑定到节点 0,将内存分配绑定到节点 2,然后使用 stressapptest 工具在这种配置下运行压力测试,测试持续 100 秒,使用 2 GB 的内存,并启动 4 个执行内存操作的线程,同时应用更多的 CPU 压力。这可以帮助你观察在特定 NUMA 维度上系统组件(特别是内存和CPU)的性能表现和稳定性。

numactl -N 0 -m 2 stressapptest -s 100 -M 2048 -m 4 -W

在这里插入图片描述

watch -n 1 "numactl -H"

可以使用上面的命令查看numa节点的内存消耗情况。

相关推荐

  1. postman接口测试工具详解

    2024-06-06 16:32:03       7 阅读
  2. postman接口测试工具详解

    2024-06-06 16:32:03       7 阅读
  3. postman接口测试工具详解

    2024-06-06 16:32:03       5 阅读
  4. postman接口测试工具详解

    2024-06-06 16:32:03       7 阅读
  5. postman接口测试工具详解

    2024-06-06 16:32:03       11 阅读
  6. Postman接口测试工具详解

    2024-06-06 16:32:03       6 阅读
  7. Postman接口测试工具详解

    2024-06-06 16:32:03       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 16:32:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 16:32:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 16:32:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 16:32:03       18 阅读

热门阅读

  1. 网络数据库后端框架相关面试题

    2024-06-06 16:32:03       9 阅读
  2. MySQL数据库主从配置

    2024-06-06 16:32:03       7 阅读
  3. MySQL迁移达梦数据库避坑

    2024-06-06 16:32:03       8 阅读
  4. 二叉树的中序遍历-力扣

    2024-06-06 16:32:03       11 阅读
  5. 二叉树的前序遍历-力扣

    2024-06-06 16:32:03       9 阅读
  6. mysql数据备份和还原知识点

    2024-06-06 16:32:03       8 阅读
  7. WPF 按键图标转动效果示例

    2024-06-06 16:32:03       7 阅读