PRF&PUB:20170924 Simulate System Loads.md

@lujun9972 https://linux.cn/article-9235-1.html
This commit is contained in:
wxy 2018-01-14 10:32:44 +08:00
parent e65f15d761
commit 8b53900e7d

View File

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