13
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

yes, stress コマンド

Posted at

この記事は Linux コマンド 全部オレ Advent Calendar 2017 の18日目の記事です。

yes

NAME
       yes - output a string repeatedly until killed

SYNOPSIS
       yes [STRING]...
       yes OPTION

DESCRIPTION
       Repeatedly output a line with all specified STRING(s), or 'y'.

       --help display this help and exit

       --version
              output version information and exit

       GNU coreutils online help: <http://www.gnu.org/software/coreutils/> Report yes translation
       bugs to <http://translationproject.org/team/>

指定した文字列をひたすら出力するコマンド。負荷試験やインタラクティブに「y/N」を求められる場面で利用する。

CPU 負荷をかける

[sinsengumi ~]$ yes > /dev/null
[sinsengumi ~]$ top
top - 11:04:00 up 11 days, 19:39,  3 users,  load average: 0.70, 0.34, 0.17
Tasks:  99 total,   2 running,  97 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  : 99.3 us,  0.7 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

標準出力を /dev/null にリダイレクトしないと、1 CPU を使い切るほどは負荷はかからない。
/dev/null にリダイレクトすると、画面描写が無いので超高速で、CPU が働きまくるらしい)

論理 CPU が複数ある場合は、バックグラウンドで複数動かせばよい。

メモリに負荷をかける

[sinsengumi ~]$ /dev/null < $(yes)

[sinsengumi ~]$ free -h -s 3
              total        used        free      shared  buff/cache   available
Mem:           3.7G        275M        2.1G        624K        1.3G        3.1G
Swap:          4.0G          0B        4.0G

              total        used        free      shared  buff/cache   available
Mem:           3.7G        349M        2.1G        624K        1.3G        3.0G
Swap:          4.0G          0B        4.0G

              total        used        free      shared  buff/cache   available
Mem:           3.7G        646M        1.8G        624K        1.3G        2.7G
Swap:          4.0G          0B        4.0G

              total        used        free      shared  buff/cache   available
Mem:           3.7G        953M        1.5G        624K        1.3G        2.4G
Swap:          4.0G          0B        4.0G

              total        used        free      shared  buff/cache   available
Mem:           3.7G        1.2G        1.2G        624K        1.3G        2.1G
Swap:          4.0G          0B        4.0G

3秒間隔で free すると available がどんどん減っていくのがわかる。

ちなみに、ずっとやっているとスワップ領域まで使い始めるかと思ったが、その前に以下のようなエラーが出て止まってしまった。

-bash: xrealloc: cannot allocate 18446744071562067968 bytes (1392640 bytes allocated)

stress

NAME
       stress - tool to impose load on and stress test systems

SYNOPSIS
       stress [OPTION [ARG]] ...

DESCRIPTION
       `stress' imposes certain types of compute stress on your system

Switch User.

CPU(ユーザ)に負荷をかける

--cpu で起動するプロセス数を指定する。中身は sqrt 関数を実行している。

[sinsengumi ~]$ stress --cpu 2
stress: info: [20622] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd

[sinsengumi ~]$ top
top - 11:34:10 up 11 days, 20:09,  3 users,  load average: 0.87, 0.38, 0.25
Tasks: 100 total,   3 running,  97 sleeping,   0 stopped,   0 zombie
%Cpu0  : 99.7 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
%Cpu1  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3881668 total,  2231112 free,   284220 used,  1366336 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  3239072 avail Mem

   PID USER        PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 20677 sinsengumi  20   0    7260     96      0 R  99.3  0.0   0:14.71 stress
 20678 sinsengumi  20   0    7260     96      0 R  99.3  0.0   0:14.67 stress

CPU(システム)に負荷をかける

--io で起動するプロセス数を指定する。中身は sync コマンドを実行している。

[sinsengumi ~]$ stress --io 2
stress: info: [20890] dispatching hogs: 0 cpu, 2 io, 0 vm, 0 hdd

[sinsengumi ~]$ top
top - 11:38:34 up 11 days, 20:13,  3 users,  load average: 0.79, 0.48, 0.33
Tasks: 100 total,   3 running,  97 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.0 us,100.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.0 us,100.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3881668 total,  2232128 free,   283160 used,  1366380 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  3240240 avail Mem

   PID USER        PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 20941 sinsengumi  20   0    7260     96      0 R  96.8  0.0   0:11.72 stress
 20942 sinsengumi  20   0    7260     96      0 R  96.8  0.0   0:11.83 stress

メモリーに負荷をかける

--vm で起動するプロセス数を指定する。中身は malloc, free 関数を繰り返し実行している。
--vm-bytes で確保するメモリを指定する。また、デフォルトでは malloc, free を繰り返すので、--vm-keep を指定すると、free を行わず確保したままにしてくれる。

[sinsengumi ~]$ stress --vm 2 --vm-bytes 1G --vm-keep
stress: info: [21808] dispatching hogs: 0 cpu, 0 io, 2 vm, 0 hdd

[sinsengumi ~]$ top
top - 11:55:40 up 11 days, 20:30,  3 users,  load average: 0.00, 0.08, 0.20
Tasks:  99 total,   1 running,  98 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3881668 total,   130672 free,  2383972 used,  1367024 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  1139364 avail Mem

   PID USER        PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 21809 sinsengumi  20   0 1055840 1.000g    184 S   0.0 27.0   0:00.48 stress
 21810 sinsengumi  20   0 1055840 1.000g    184 S   0.0 27.0   0:00.47 stress

ディスク IO(CPU wait)に負荷をかける

--io で起動するプロセス数を指定する。中身は write, unlink 関数を繰り返し実行している。
デフォルトでは、各プロセス 1GB ずつ書き込みを行う。

[sinsengumi ~]$ stress --hdd 2
stress: info: [22803] dispatching hogs: 0 cpu, 0 io, 0 vm, 2 hdd

[sinsengumi ~]$ top
top - 12:06:17 up 11 days, 20:41,  3 users,  load average: 0.52, 0.84, 0.63
Tasks: 111 total,   3 running, 108 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.3 us, 52.4 sy,  0.0 ni,  6.1 id, 41.2 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.3 us, 58.4 sy,  0.0 ni,  3.4 id, 37.8 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3881668 total,  2693320 free,   114276 used,  1074072 buff/cache
KiB Swap:  4194300 total,  4088112 free,   106188 used.  3518900 avail Mem

   PID USER        PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 22804 sinsengumi  20   0    8164   1120    120 R  46.2  0.0   0:03.15 stress
 22805 sinsengumi  20   0    8164   1120    120 D  45.2  0.0   0:03.32 stress

[sinsengumi ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda2        40G  5.3G   35G  14% /
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G  624K  1.9G   1% /run
[sinsengumi ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda2        40G  7.3G   33G  19% /
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G  624K  1.9G   1% /run
13
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?