サーバに負荷をかけてみる

負荷試験や監視/通知機能の検証のため、CPU、メモリ、ディスク、それぞれの使用率に意図的に影響を与える方法を確認しておく。

stressコマンドを使うのでまずはインストール。
```
$ sudo dnf install stress
Last metadata expiration check: 0:07:51 ago on Tue Mar 12 22:23:51 2024.
Dependencies resolved.
================================================================================================================================================================================
 Package                              Architecture                         Version                                              Repository                                 Size
================================================================================================================================================================================
Installing:
 stress                               x86_64                               1.0.4-28.amzn2023.0.2                                amazonlinux                                37 k

Transaction Summary
================================================================================================================================================================================
Install  1 Package

Total download size: 37 k
Installed size: 78 k
Is this ok [y/N]: y
Downloading Packages:
stress-1.0.4-28.amzn2023.0.2.x86_64.rpm                                                                                                         513 kB/s |  37 kB     00:00    
-------------------------------------------------
```

CPUに負荷をかける場合はstressコマンドに`c`オプションとワーカープロセス数を指定する。
今回は2コアのサーバなのでワーカープロセス数を2としてみる。
```
$ stress -c 2
stress: info: [25370] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd

```

その間のCPU使用状況をsarで確認
```
22:43:37        CPU     %user     %nice   %system   %iowait    %steal     %idle
22:43:40        all     87.69      0.00      0.00      0.00     12.31      0.00
22:43:40          0     87.71      0.00      0.00      0.00     12.29      0.00
22:43:40          1     87.67      0.00      0.00      0.00     12.33      0.00

22:43:40        CPU     %user     %nice   %system   %iowait    %steal     %idle
22:43:43        all     90.65      0.00      0.00      0.00      9.35      0.00
22:43:43          0     90.64      0.00      0.00      0.00      9.36      0.00
22:43:43          1     90.67      0.00      0.00      0.00      9.33      0.00

22:43:43        CPU     %user     %nice   %system   %iowait    %steal     %idle
22:43:46        all     96.01      0.00      0.00      0.00      3.99      0.00
22:43:46          0     96.01      0.00      0.00      0.00      3.99      0.00
22:43:46          1     96.00      0.00      0.00      0.00      4.00      0.00

22:43:46        CPU     %user     %nice   %system   %iowait    %steal     %idle
22:43:49        all     91.99      0.00      0.00      0.00      8.01      0.00
22:43:49          0     91.97      0.00      0.00      0.00      8.03      0.00
22:43:49          1     92.00      0.00      0.00      0.00      8.00      0.00
```

%userと%stealでCPU使用率が100%となることを確認。

次はstressコマンドに`m`オプションでメモリに負荷をかけてみる。
`m`オプションの後ろの`2`はワーカープロセス数を指定している。
(メモリサイズをどれだけ確保するかなどのオプションもあるが省略)
```
$ stress -m 2
stress: info: [26981] dispatching hogs: 0 cpu, 0 io, 2 vm, 0 hdd

```

sarで観測。
```
23:47:37    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
23:47:40         9252     16000    355244     85.08         0      1540    816480     97.86       648    262528         0
23:47:43         9016     15680    355540     85.15         0      1412    816480     97.86       800    260048         0
23:47:46        74940     86712    289516     69.34         0      1484    816480     97.86       344    195460         0
23:47:49         9032     15684    355636     85.17         0      1328    816480     97.86       632    261364         0
23:47:52         8868     15588    355624     85.17         0      1452    816480     97.86       708    260936       
```
`kbbuffers`と`kbcached`を差し引いても`kbmemused`が大半を占めてることを確認。

最後にディスク使用率を操作するため、任意のサイズのファイルを作成する方法を確認する。

まずは現状確認。
```
$ df -h
Filesystem        Size  Used Avail Use% Mounted on
devtmpfs          4.0M     0  4.0M   0% /dev
tmpfs             204M     0  204M   0% /dev/shm
tmpfs              82M  452K   82M   1% /run
/dev/nvme0n1p1    8.0G  1.6G  6.4G  20% /
tmpfs             204M     0  204M   0% /tmp
/dev/nvme0n1p128   10M  1.3M  8.7M  13% /boot/efi
tmpfs              41M     0   41M   0% /run/user/1000
$
```

ddコマンドで1GBのダミーファイルを作成する。
```
$ 
$ dd if=/dev/zero of=DUMMYFILE bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 6.69777 s, 157 MB/s
$ 
```

結果。
1GBのファイルが作成され、空き容量が変化したことを確認。
``` 
$ ls -lh DUMMYFILE 
-rw-r--r--. 1 ec2-user ec2-user 1000M Mar 17 00:53 DUMMYFILE
$ 
$ 
$ df -h
Filesystem        Size  Used Avail Use% Mounted on
devtmpfs          4.0M     0  4.0M   0% /dev
tmpfs             204M     0  204M   0% /dev/shm
tmpfs              82M  452K   82M   1% /run
/dev/nvme0n1p1    8.0G  2.6G  5.4G  33% /
tmpfs             204M     0  204M   0% /tmp
/dev/nvme0n1p128   10M  1.3M  8.7M  13% /boot/efi
tmpfs              41M     0   41M   0% /run/user/1000
$ 
```


---
参考文献

- [CPU / メモリ / ディスクに負荷をかける stress コマンド](https://kakakakakku.hatenablog.com/entry/2018/10/22/023643)
- [容量指定のダミーファイルを作成したい](https://www.itmedia.co.jp/help/tips/linux/l0606.html)