Labels

Aws (32) MySQL (20) Aurora (12) Rds (7) DynamoDB (6) Cloudformation (4) Python3 (4) Unix (3) MongoDB (1)

Friday, 4 March 2022

Elasticache Memcache stress test

 These stress test results are useful to figure out how much workload a single Memcached cluster node can cope with.

A fleet of Ec2 has been used to split the traffic coming toward the cache cluster.

Settings:

  • Memcache 1.4.14
  • Max Memory Size 1.3GiB
  • Pointer Size 64bit
  • Elasticache instance class cache.t3.small


Workload type: set,sleep,get each request

This workload generates 100% evictions 
Sleep time is various from 0.01 and 0.001


while True:
    magic_number = random.randrange(1, 1000000000)
    key = "key_{}".format(magic_number)
    value = os.urandom(size_payload)
    mc.set(key, value)
    time.sleep(sleep_time)
    mc.get(key)

Payload 100KiB sleep 0.01 

10c - 0.01s - payload 100KiB - CPU 8%
    time  cnct    used    gets    hits    miss    sets    evic   miss%   evic%      in     out
16:36:48    18   11.0M    4.8k    4.8k       0    4.8k       0    0.00    0.00  483.0M  483.4M
16:36:53    18   11.0M    4.9k    4.9k       0    4.9k       0    0.00    0.00  486.3M  486.3M
16:36:58    18   11.0M    4.8k    4.8k       0    4.8k       0    0.00    0.00  482.4M  482.3M
 
20c - 0.01s - payload 100KiB ~ CPU 20%
    time  cnct    used    gets    hits    miss    sets    evic   miss%   evic%      in     out
16:44:34    29   12.2M    9.6k    9.6k       0    9.6k       0    0.00    0.00  961.6M  961.7M
16:44:39    29   12.2M    9.6k    9.6k       0    9.6k       0    0.00    0.00  958.1M  957.9M
16:44:45    29   12.2M    9.6k    9.6k       0    9.6k       0    0.00    0.00  958.3M  958.3M
 
30c - 0.01s - payload 100KiB ~ CPU 28%
    time  cnct    used    gets    hits    miss    sets    evic   miss%   evic%      in     out
16:51:56    40   13.3M   14.2k   14.2k       0   14.2k       0    0.00    0.00    1.4G    1.4G
16:52:01    40   13.3M   14.0k   14.0k       0   14.0k       0    0.00    0.00    1.4G    1.4G
16:52:06    40   13.3M   13.9k   13.9k       0   13.9k       0    0.00    0.00    1.4G    1.4G
 
40c - 0.01s - payload 100KiB ~ CPU 34%
    time  cnct    used    gets    hits    miss    sets    evic   miss%   evic%      in     out
17:01:19    51   32.0M   18.1k   18.1k       0   18.1k       0    0.00    0.00    1.8G    1.8G
17:01:24    51   32.0M   18.4k   18.4k       0   18.4k       0    0.00    0.00    1.8G    1.8G
17:01:29    51   32.0M   18.4k   18.4k       0   18.4k       0    0.00    0.00    1.8G    1.8G
 
80c - 0.01s - payload 10KiB ~ CPU 15%
    time  cnct    used    gets    hits    miss    sets    evic   miss%   evic%      in     out
11:22:41    92    1.2G   32.8k   32.8k       0   32.8k   32.8k    0.00   99.99  329.3M  329.2M
11:22:46    92    1.2G   32.8k   32.8k       0   32.8k   32.7k    0.00   99.98  329.1M  328.9M
11:22:51    92    1.2G   31.9k   31.9k       0   31.9k   31.9k    0.00   99.99  320.4M  320.1M


Payload 10KiB sleep 0.01

160c - 10K ~ 5% CPU
    time  cnct    used    gets    hits    miss    sets    evic   miss%   evic%      in     out
13:04:30   170    1.2G    7.5k    7.5k       0    7.5k    7.5k    0.00   99.99   75.7M   75.8M
13:04:35   168    1.2G    7.5k    7.5k       0    7.5k    7.5k    0.00  100.00   75.5M   75.4M
13:04:40   168    1.2G    7.5k    7.5k       1    7.5k    7.5k    0.01  100.00   75.3M   75.4M
 
240c - 10K ~ 11% CPU
  time  cnct    used    gets    hits    miss    sets    evic   miss%   evic%      in     out
13:09:32   250    1.2G    7.5k    7.5k       1    7.5k    7.5k    0.01   99.99   75.3M   75.4M
13:09:37   249    1.2G    7.5k    7.5k       0    7.5k    7.5k    0.00  100.00   75.6M   75.4M
13:09:43   249    1.2G    8.3k    8.3k       8    8.3k    8.3k    0.10   99.99   83.2M   83.0M


Payload 1KiB sleep 0.01

160c - 1K - 33% CPU
    time  cnct    used    gets    hits    miss    sets    evic   miss%   evic%      in     out
13:16:33   173    1.2G   64.6k   64.6k       0   64.6k   64.6k    0.00   99.99   69.4M   69.0M
13:16:39   173    1.2G   64.6k   64.6k       0   64.6k   64.6k    0.00   99.98   69.4M   69.0M
13:16:44   173    1.2G   64.6k   64.6k       0   64.7k   64.6k    0.00   99.99   69.5M   69.0M
 
240c - 1K ~ 33% CPU
13:23:39   257    1.2G   65.8k   65.6k     224   65.8k   65.8k    0.34  100.00   69.6M   68.9M
13:23:44   257    1.2G   65.7k   65.5k     254   65.7k   65.7k    0.39   99.99   69.6M   68.9M
13:23:49   257    1.2G   65.8k   65.6k     217   65.8k   65.8k    0.33   99.99   69.5M   68.9M
 
320c - 1K ~ 33% CPU
    time  cnct    used    gets    hits    miss    sets    evic   miss%   evic%      in     out
13:37:11   341    1.2G   66.1k   65.2k     931   66.2k   66.2k    1.41   99.99   70.1M   68.7M
13:37:16   341    1.2G   66.4k   65.4k    1.0k   66.4k   66.4k    1.56   99.99   70.1M   68.7M
13:37:22   341    1.2G   66.8k   65.8k     981   66.7k   66.7k    1.47   99.99   70.1M   68.7M


Payload 100B sleep 0.01

160c - 100B ~ 35% CPU
    time  cnct    used    gets    hits    miss    sets    evic   miss%   evic%      in     out
13:40:34   173    1.2G   75.4k   75.4k       0   75.4k   75.4k    0.00   99.99   15.2M   14.7M
13:40:39   173    1.2G   75.5k   75.5k       0   75.5k   75.5k    0.00   99.99   15.2M   14.7M
13:40:44   173    1.2G   75.3k   75.3k       0   75.3k   75.3k    0.00   99.99   15.1M   14.7M
 
320c - 100B ~ 57% CPU
    time  cnct    used    gets    hits    miss    sets    evic   miss%   evic%      in     out
13:43:56   337    1.2G   87.3k   87.3k       0   87.5k   87.5k    0.00   99.98   16.5M   15.9M
13:44:01   337    1.2G  144.8k  144.8k       0  144.8k  144.8k    0.00   99.99   24.8M   23.9M
13:44:06   337    1.2G  145.5k  145.5k       0  145.5k  145.5k    0.00   99.98   24.9M   24.0M
 
400c - 100B ~ 62% CPU
13:53:23   421    1.2G  170.4k  170.4k       0  170.4k  170.3k    0.00   99.98   27.8M   26.7M
13:53:28   421    1.2G  170.7k  170.7k       0  170.7k  170.7k    0.00   99.98   28.0M   26.9M
13:53:33   421    1.2G  170.5k  170.5k       0  170.5k  170.5k    0.00   99.99   27.7M   26.6M
 
480c - 100B ~ 70% CPU
13:58:02   501    1.2G  182.7k  182.7k       0  182.6k  182.6k    0.00   99.98   29.1M   27.9M
13:58:07   501    1.2G  199.7k  199.7k       0  199.7k  199.7k    0.00   99.98   31.9M   30.6M
13:58:12   501    1.2G  207.6k  207.6k       0  207.6k  207.6k    0.00   99.99   33.0M   31.6M
 
600c - 100B ~ 77% CPU
    time  cnct    used    gets    hits    miss    sets    evic   miss%   evic%      in     out
14:09:05   623    1.2G  250.7k  250.7k      13  250.8k  250.7k    0.01   99.99   39.3M   37.6M
14:09:10   623    1.2G  262.0k  262.0k       0  262.0k  262.0k    0.00   99.99   40.9M   39.2M
14:09:15   623    1.2G  258.6k  258.6k       0  258.6k  258.6k    0.00   99.99   40.4M   38.7M


Payload 100B sleep 0.001

600c - 0.001 - 100B  - 84% CPU
    time  cnct    used    gets    hits    miss    sets    evic   miss%   evic%      in     out
14:24:48   614    1.2G  322.4k  322.4k       3  322.4k  322.3k    0.00   99.98   48.7M   46.5M
14:24:53   614    1.2G  296.3k  296.3k       1  296.2k  296.2k    0.00   99.99   44.8M   42.9M
14:24:58   614    1.2G  318.7k  318.7k       0  318.7k  318.7k    0.00   99.99   48.1M   46.0M


Workload type: set,and loop on get. Read workload

This workload doesn't generate any evictions

Sleep time is various from 0.01 and 0.001 as well as the payload changes


magic_number = random.randrange(1, 1000000000)
key = "key_{}".format(magic_number)
value = os.urandom(size_payload)
mc.set(key, value)
while True:
    time.sleep(sleep_time)
    mc.get(key)


Payload 100B sleep 0.001

150c - 0.001 - 100B ~ 66% CPU
    time  cnct    used    gets    hits    miss    sets    evic   miss%   evic%      in     out
14:49:30   163   27.4k  540.6k  540.6k       0       0       0    0.00    0.00    9.7M   69.0M
14:49:37   163   27.4k  695.5k  695.5k       0       0       0    0.00    0.00   12.5M   88.8M
14:49:42   163   27.4k  615.1k  615.1k       0       0       0    0.00    0.00   11.1M   78.6M
 
300c - 0.001 - 100B ~ 76% CPU ( 5 Ec2 instances hitting 100% CPU)
14:52:05   319   54.8k  618.9k  618.9k       0       0       0    0.00    0.00   11.2M   79.0M
14:52:10   319   54.8k  693.3k  693.3k       0       0       0    0.00    0.00   12.5M   88.5M
14:52:15   319   54.8k  684.4k  684.4k       0       0       0    0.00    0.00   12.3M   87.4M


Payload 1K sleep 0.001

150c - 0.001 - 1K ~ 20% CPU
    time  cnct    used    gets    hits    miss    sets    evic   miss%   evic%      in     out
15:28:46   163  393.6k  517.9k  517.9k       0       0       0    0.00    0.00    9.3M  523.0M
15:28:51   163  393.6k  528.1k  528.1k       0       0       0    0.00    0.00    9.5M  533.2M
15:28:56   163  393.6k  528.1k  528.1k       0       0       0    0.00    0.00    9.5M  533.3M