Saturday, March 26, 2016

How to generate CPU load?

Sometimes, system administrators are asked to generate 'dummy' load on CPU to test the load vs performance. Here is a short example which shows how to generate load per CPU or per Core basis (actually threads):

 # perl -e 'while (--$ARGV[0] and fork) {}; while () {}' 4


The last digit "4" in this case indicates how many CPUs or threads or cores you want to load by this method. This indeed is a good idea to test the CPU performance when some of the threaded/virtual CPUs are loaded.

When I gave the above command, in other terminal window for same server, I can observe something like this:


# mpstat 5
CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
  0    0   0   10   213  105   17    0    0    0    0    38    0   2   0  98
  1    0   0    0     1    0    0    0    0    0    0     0    0   0   0 100
  2    0   0    0     2    0    2    0    0    0    0     0    0   0   0 100
  3    0   0    0     1    0    0    0    0    0    0     0    0   0   0 100
  4    0   0    0     2    0    2    0    0    0    0     5    0   0   0 100
  5    0   0    3     4    0    6    0    0    0    0     0    0   0   0 100
  6    0   0    1    13    6   11    0    0    0    0     0    0   0   0 100
  7    0   0    4     3    0    4    0    0    0    0    10    0   0   0 100
CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
  0   21   7  139   227  118   18    9    0    1    0    53   85   1   0  14
  1    4   0    7     9    0   16    0    4    0    0     4    1   1   0  98
  2   10   0    0     8    0    5    5    0    1    0     1   85   0   0  15
  3    0   1   34     7    0   11    0    1    0    0     3    0   0   0 100
  4    6   0    0     6    0    2    4    0    0    0     4   84   0   0  16
  5    7   0    0     2    0    1    0    1    1    0     1    0   0   0 100
  6   10   0    4    12    5    3    5    0    0    0     1   85   0   0  15
  7    0   0   21    16    0   31    0    0    0    0    10    0   0   0 100
CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
  0    0   0   30   207  106    0    8    0    0    0     0  100   0   0   0
  1    0   0    0     9    0   15    0    1    0    0    23    0   1   0  99
  2    0   0    0     6    0    0    5    0    0    0     0  100   0   0   0
  3    0   0    3     8    0   13    0    1    0    0    12    0   0   0 100
  4    0   0    0     6    0    0    5    0    0    0     0  100   0   0   0
  5    0   0    0     2    0    0    0    0    0    0     0    0   0   0 100
  6    0   0    1    10    3    2    7    0    0    0     0  100   0   0   0
  7    0   0    0     1    0    0    0    0    0    0     0    0   0   0 100
^C


The 'top' command output in this case will look like following:

# top
last pid:   698;  load avg:  1.61,  0.44,  0.19;       up 25+19:31:24                                                                             10:59:01
34 processes: 29 sleeping, 5 on cpu
CPU states: 49.8% idle, 50.0% user,  0.2% kernel,  0.0% iowait,  0.0% swap
Memory: 8192M phys mem, 6680M free mem, 4099M total swap, 4099M free swap

   PID USERNAME LWP PRI NICE  SIZE   RES STATE    TIME    CPU COMMAND
   694 root       1   0    0 6368K 3256K cpu/0    0:35 12.50% perl
   696 root       1   0    0 6360K 1672K cpu/7    0:35 12.45% perl
   697 root       1   0    0 6360K 1672K cpu/1    0:35 12.45% perl
   695 root       1   0    0 6360K 1800K cpu/6    0:35 12.14% perl
   698 root       1  59    0 2944K 2104K cpu/3    0:00  0.03% top
   679 root       1  59    0   10M 3576K sleep    0:00  0.00% sshd
   119 root      24  59    0 4576K 4232K sleep    1:25  0.00% nscd
     9 root      15  59    0   10M 9704K sleep    0:42  0.00% svc.configd
   238 root       4  59    0 7888K 4664K sleep    0:29  0.00% inetd
     7 root      12  59    0   13M 9904K sleep    0:34  0.00% svc.startd
   302 root      16  59    0   15M 9400K sleep    0:27  0.00% fmd
   202 root       1  59    0 1360K 1176K sleep    0:04  0.00% utmpd
   183 daemon     1  59    0 2848K 2360K sleep    0:11  0.00% rpcbind
   253 root       3  59    0 7464K 3160K sleep    0:08  0.00% automountd
     1 root       1  59    0 2512K 1920K sleep    0:05  0.00% init

No comments:

Post a Comment