Skip to main content

在 Linux 上简单模拟系统负载的方法

编译自 | https://bash-prompt.net/guides/create-system-load/ 
 作者 | Elliot Cooper
 译者 | lujun9972
系统管理员通常需要探索在不同负载对应用性能的影响。这意味着必须要重复地人为创造负载。当然,你可以通过专门的工具来实现,但有时你可能不想也无法安装新工具。
每个 Linux 发行版中都自带有创建负载的工具。他们不如专门的工具那么灵活,但它们是现成的,而且无需专门学习。
CPU
下面命令会创建 CPU 负荷,方法是通过压缩随机数据并将结果发送到 /dev/null
  1. cat /dev/urandom | gzip -9 > /dev/null
如果你想要更大的负荷,或者系统有多个核,那么只需要对数据进行压缩和解压就行了,像这样:
  1. cat /dev/urandom | gzip -9 | gzip -d | gzip -9 | gzip -d > /dev/null
按下 CTRL+C 来终止进程。
内存占用
下面命令会减少可用内存的总量。它是通过在内存中创建文件系统然后往里面写文件来实现的。你可以使用任意多的内存,只需哟往里面写入更多的文件就行了。
首先,创建一个挂载点,然后将 ramfs 文件系统挂载上去:
  1. mkdir z
  2. mount -t ramfs ramfs z/
第二步,使用 dd 在该目录下创建文件。这里我们创建了一个 128M 的文件:
  1. dd if=/dev/zero of=z/file bs=1M count=128
文件的大小可以通过下面这些操作符来修改:
◈ bs= 块大小。可以是任何数字后面接上 B(表示字节),K(表示 KB),M( 表示 MB)或者 G(表示 GB)。
◈ count= 要写多少个块。
磁盘 I/O
创建磁盘 I/O 的方法是先创建一个文件,然后使用 for 循环来不停地拷贝它。
下面使用命令 dd 创建了一个全是零的 1G 大小的文件:
  1. dd if=/dev/zero of=loadfile bs=1M count=1024
下面命令用 for 循环执行 10 次操作。每次都会拷贝 loadfile 来覆盖 loadfile1
  1. for i in {1..10}; do cp loadfile loadfile1; done
通过修改 {1..10} 中的第二个参数来调整运行时间的长短。(LCTT 译注:你的 Linux 系统中的默认使用的 cp 命令很可能是 cp -i 的别名,这种情况下覆写会提示你输入 y 来确认,你可以使用 -f 参数的 cp 命令来覆盖此行为,或者直接用 /bin/cp 命令。)
若你想要一直运行,直到按下 CTRL+C 来停止,则运行下面命令:
  1. while true; do cp loadfile loadfile1; done

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...