0

如何使用Stress-ng工具在 Linux 上施加高 CPU 负载和压力测试

 2 years ago
source link: https://os.51cto.com/article/708047.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

e1ffdba28c5963d08be347c930499c58aee239.png

在日常工作中,CPU压力测试是一项常见的工作,主要用到如下场景:

  • 微调系统上的活动。
  • 监控操作系统内核接口。
  • 测试您的Linux 硬件组件,例如 CPU、内存、磁盘设备和许多其他组件,以观察它们在压力下的性能。
  • 测量系统上不同的功耗负载。

今天介绍两个重要的工具:stress和stress-ng,用于在您的 Linux 系统下进行压力测试。

(1) stress– 是一种工作负载生成器工具,旨在让您的系统承受 CPU、内存、I/O 和磁盘压力的可配置测量。

(2) stress -ng – 是压力工作负载生成器工具的更新版本,可测试您的系统的以下功能:

  • CPU 计算
  • I/O 同步
  • 管道 I/O
  • 虚拟机压力
  • socket压力
  • 进程创建和终止
  • 上下文切换属性

重要提示:强烈建议您以 root 用户权限使用这些工具,因为它们可以如此快速地对您的 Linux 机器施加压力,并避免在设计不佳的硬件上出现某些系统错误。

二、如何在 Linux 中安装stress工具

1. 安装stress

要在RHEL / CentOS和Fedora Linux上安装压力,您需要有 EPEL 存储库,然后键入以下 yum 命令进行安装:

# yum install stress

stress的使用方法:

$ sudo stress option argument
  • 要产生N个在 sqrt() 函数上运行的worker,请使用–cpu N选项。
  • 要产生N个在 sync() 函数上运行的worker,请使用–io N选项。
  • 要生成在 malloc()/free() 函数上运行的N个工作程序,请使用–vm N选项。
  • 要为每个 vm worker 分配内存,请使用–vm-bytes N选项。
  • 您可以使用–vm-keep选项重新分配内存,而不是释放和重新分配内存资源。
  • 使用–vm-hang N选项在释放内存之前将睡眠设置为N秒。
  • 要产生 N个在 write()/unlink() 函数上旋转的工作人员,请使用–hdd N选项。
  • 您可以使用–timeout N选项在N秒后设置超时。
  • 通过使用–backoff N选项在任何工作开始之前设置N微秒的等待。

2. 如何在 Linux 系统上使用stress

(1) 要检查每次运行命令的效果,首先运行uptime命令并记下平均负载。

接下来,运行压力命令以生成 8 个在sqrt()上运行的worker,超时时间为20秒。运行压力后,再次运行uptime命令并比较负载平均值。

localhost ~ $  uptime 
localhost ~ $  sudo stress --cpu 8 --timeout 20 
localhost ~ $  uptime

(2) 要生成 8 个在 sqrt() 上运行且超时为30秒的worker,显示有关操作的详细信息,请运行以下命令:

localhost ~ $  uptime 
localhost ~ $  sudo stress --cpu 8 -v --timeout 30s 
localhost ~ $  uptime

(3) 要生成一个具有60秒超时时间的malloc()和free()函数的worker ,请运行以下命令。

localhost ~ $  uptime 
localhost ~ $  sudo stress --vm 1 --timeout 60s  
localhost ~ $  uptime

(4) 要在 sqrt() 上生成 4 个 worker,在 sync() 上生成 2 个 worker,在 malloc()/free() 上生成 2 个 worker,超时时间为 20 秒,并为每个 vm worker 分配 256MB 的内存,运行这个下面的命令:

localhost ~ $  uptime 
localhost ~ $  sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s  
localhost ~ $  uptime

三、如何在 Linux 中安装stress-ng工具

1. 安装stress-ng

要安装stress-ng,请运行以下命令:

# yum install stress-ng [在基于RedHat的系统上]

使用stress-ng的一般语法是:

$ sudo stress-ng 选项参数

您可以与stress-ng一起使用的一些选项:

  • 要启动每个压力测试的 N 个实例,请使用–all N选项,如下所示。
  • 要通过顺序执行所有不同的 CPU 压力测试方法来启动 N 个进程来锻炼 CPU,请使用–cpu N选项,如下所示。
  • 要使用给定的 CPU 压力测试方法,请使用–cpu-method选项。您可以使用许多方法,查看手册页以查看所有要使用的方法。
  • 要在 N 个 bogo 操作后停止 CPU 压力过程,请使用–cpu-ops N选项。
  • 要启动 NI/O 压力测试过程,请使用–io N选项。
  • 要在 N 个 bogo 操作后停止 io 压力过程,请使用 –io -ops N选项。
  • 要启动 N 个 vm 压力测试进程,请使用–vm N选项。
  • 要指定每个 vm 进程的内存量,请使用–vm-bytes N选项。
  • 要在 N 个 bogo 操作后停止 vm 压力进程,请使用–vm-ops N 个选项
  • 使用–hdd N选项启动 N 个硬盘运行进程。
  • 要在 N 个 bogo 操作后停止硬盘压力过程,请使用–hdd-ops N选项。
  • 您可以使用–timeout N选项在 N 秒后设置超时。
  • 要在 bogo 操作后生成摘要报告,您可以使用–metrics或–metrics-brief选项。–metrics -brief显示非零指标。
  • 您还可以使用–dir N选项启动 N 个进程,这些进程将使用 mkdir 和 rmdir 创建和删除目录。
  • 要停止目录操作进程,请使用–dir-ops N选项。
  • 要启动 N 个 CPU 消耗进程来执行当前的 nice 级别,包括
  • -nice N选项。使用此选项时,每次迭代都会派生一个子进程,该子进程会运行一个繁忙的循环,每个级别运行 0.1 秒,然后退出所有不同的 nice 级别。
  • 要停止 nice 循环,请使用–nice-ops N选项,如下所示。
  • 要启动通过 chmod(2) 和 fchmod(2) 在同一文件上更改文件模式位的 N 个进程,请使用–chmod N选项。请记住,N 的值越大,文件的争用就越多。压力源将通过您使用 chmod(2) 指定的所有模式位组合来工作。
  • 您可以通过–chmod-ops N选项停止 chmod 操作。
  • 您可以使用-v选项来显示有关正在进行的操作的更多信息。
  • 使用-h查看stress-ng 的帮助。

2. 如何在 Linux 系统中使用stress-ng

(1) 运行 8 个 CPU 压力源,超时时间为 60 秒,并在操作结束时进行汇总。

localhost:~$ uptime
localhost:~$ sudo stress-ng --cpu 8 --timeout 60 --metrics-brief
localhost:~$ uptime

(2) 运行4 个FFT CPU 压力源,超时时间为 2 分钟。

localhost:~$ uptime
localhost:~$ sudo stress-ng --cpu 4 --cpu-method fft --timeout 2m
localhost:~$ uptime

(3) 要运行 5 个硬盘压力源并在 100000 次 bogo 操作后停止,请运行此命令::

localhost:~$ uptime
localhost:~$ sudo stress-ng --hdd 5 --hdd-ops 100000
localhost:~$ uptime

(4) 要使用 1GB 虚拟内存运行 8 个 CPU 压力源、4 个 I/O 压力源和 1 个虚拟内存压力源一分钟,请运行以下命令

localhost:~$ uptime
localhost:~$ sudo stress-ng --cpu 4 --io 4 --vm 1 --vm-bytes 1G --timeout 60s --metrics-brief
localhost:~$ uptime

这些工具应该与超级用户权限一起使用,因为它们对系统有一定的影响。这些工具适用于 Linux中的系统管理。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK