MAMAS performance, stability and benchmark tests This specifies a set of methodics: (1) Original comparison methodics - set from MAMAS BETA (v 0.5.0) - deprecated (2) Production methodics and benchmark - set from MAMAS 0.6.0 - includes peak tests - includes benchmark - includes stability test The targets: - Linux container on HW machine (4 combinations) - 1 CPU thread, 512 MiB RAM - 2 CPU threads, 1 GiB RAM - 4 CPU threads, 2 GiB RAM - 8 CPU threads, 4 GiB RAM - Amazon instance (3 combinations) - small - medium - big - Linux server (1 combination) - for benchmark testing only; only one used for MAMAS BETA (0.5.0) - 4CPU, HT (8 CPU cores) - 32 GiB memory - dedicated 1 GiB ethernet The deployments: - development with default development debug with default listener threads (2) - 0.5.0, 0.6.0 - with 4 listener threads - production with default production debug with default listener threads (2) - 0.5.0, 0.6.0 - with 4 listener threads - with 8 listener threads NOTE: socket backlog size is not changed from the version default. What is being measured: - number of accepted and dropped requests (and resulting percentage) FOR ALL TESTS - time for peak and benchmark tests - memory usage for stability tests - CPU utilization (%) for stability tests - mamasd log review to make detail search for warnings and errors (for stability tests) - number of pushing threads causing requests drops+resends (peak test) What is being calculated: - ideal maximal throughput (benchmark test) - typical maximal throughput (20% of ideal) (benchmark test) - number of pushes per second (benchmark and peak test) Methodics: - in case SSL is enabled, it is handled by Apache using local self-signed certificate; this may differ to the real-world case where SSL would probably be terminated on a reverse-proxy - Benchmark test, measures time (both with / without SSL): - [bench-4-noSSL] noSSL small datapush, 3000 clients, 10 immediate loops, 4 pushing threads - [bench-16-noSSL] noSSL small datapush, 10000 clients, 10 immediate loops, 16 pushing threads - [bench-32-noSSL] noSSL small datapush, 30000 clients, 10 immediate loops, 32 pushing threads - [bench-4-SSL] SSL small datapush, 3000 clients, 10 immediate loops, 4 pushing threads - [bench-16-SSL] SSL small datapush, 10000 clients, 10 immediate loops, 16 pushing threads - [bench-32-SSL] SSL small datapush, 30000 clients, 10 immediate loops, 32 pushing threads - Stability test, measures load and stability (complete system): - [stab-2-2] SSL real life test (in 2 push.threads) for 1000 clients for 2 hours - [stab-4-2] SSL real life test (in 4 push.threads) for 3000 clients for 2 hours - [stab-8-2] SSL real life test (in 8 push.threads) for 10000 clients for 2 hours - [stab-16-2] SSL real life test (in 16 push.threads) for 30000 clients for 2 hours - [stab-4-48] SSL real life test (in 4 push.threads) for 3000 clients for 48 hours - [stab-4-672] SSL real life test (in 4 push.threads) for 3000 clients for one month - Peak tests (mamas service only): - [peakR-64-max] - noSSL registration test for 60000 clients in 64 registration threads for 10 minutes - [peakR-256-max] - noSSL registration test for 60000 clients in 256 registration threads for 10 minutes - [peakR-1024-max] - noSSL registration test for 60000 clients in 1024 registration threads for 10 minutes - [peakD-64-max] - noSSL regular datapush test for 60000 clients in 64 pushing threads for 10 minutes - [peakD-256-max] - noSSL regular datapush test for 60000 clients in 256 pushing threads for 10 minutes - [peakD-1024-max] - noSSL regular datapush test for 60000 clients in 1024 pushing threads for 10 minutes - [peakF-64-max] - noSSL full profile reg+push test for 60000 clients in 64 full threads for 10 minutes - [peakF-256-max] - noSSL full profile reg+push test for 60000 clients in 256 full threads for 10 minutes - [peakF-1024-max] - noSSL full profile reg+push test for 60000 clients in 1024 full threads for 10 minutes Tools used for measuring: - pidstat -p -ur 1 - proxmox UI statistics - free -h - emulator.py analytics (MAMAS suite)