Slides de la présentation faite lors du PerfUG #3 du 29 août 2013 chez Octo Technology.
Sujet : comment déterminer rapidement les performances unitaires dont un système informatique est capable.
4. • APM vs. perfs unitaires des composants techniques
• Application Performance Monitoring Management
(cf. http://apmblo24g.compuware.com/2013/08/21/devops-is-changing-
the-m-in-apm-performance-requires-management-not-monitoring/)
• collaboration
• expertise
• actions préventives
• disclaimer : ce sont des perfs unitaires !
pas d’extrapolation des perfs applicatives
INTRODUCTION
applica&on)
socle)
technique)
système)
hyperviseur)/)matériel)
réseau)/)stockage)
5. • maîtrise réduite des couches
basses de l’infrastructure
• organisation des DSI en
silos de compétence
• collaboration verrouillée
• incompréhension du
besoin
• manque d’expert
disponible
LES DOULEURS
Source : Next Generation Datacenters in Financial Services : driving extreme efficiency and effective cost savings, byTony Bishop
6. • maîtrise réduite de
l’architecture
• composants mutualisés
• cloud
• virtualisation
LES DOULEURS
Source : Next Generation Datacenters in Financial Services : driving extreme efficiency and effective cost savings, byTony Bishop
8. POUR QUOI FAIRE ?
• Choisir un composant technique
• CPU (taille du cache, hyperthreading,
jeu d’instructions)
• CIFS vs NFS
• RAID matériel vs. logiciel
• AWS EBS avec I/O garantis ou pas
• Apache vs. Nginx vs. shortfin
9. POUR QUOI FAIRE ?
• Tester des hypothèses de tuning
• réservation de RAM en virtualisation
• choix d’un filesystem (et de ses options)
• Tester des hypothèses d’architecture
• load-balancing en round-robin ou en dépassement de quota
• Apache devantTomcat pour servir les fichiers statiques
10. NUMBERS EVERYONE
SHOULD KNOW
The cost of I/O
(by Paolo Fragomeni)
https://medium.com/p/37a93d4e0013
L1-cache
3 cycles
L2-cache
14 cycles
RAM
250 cycles
Disk
41 000 000 cycles
Network
240 000 000 cycles
Numbers everyone should know
(by Jeff Dean, Google)
http://static.googleusercontent.com/external_content/untrusted_dlcp/
research.google.com/en/us/people/jeff/stanford-295-talk.pdf, page 13
L1 cache reference
0.5 ns
Branch mispredict
5 ns
L2 cache reference
7 ns
Mutex lock/unlock
100 ns
Main memory reference
100 ns
Compress 1K bytes with Zippy
10 000 ns
Send 2K bytes over 1 Gbps network
20 000 ns
Read 1 MB sequentially from memory
250 000 ns
Round trip within same datacenter
500 000 ns
Disk seek
10 000 000 ns
Read 1 MB sequentially from network
10 000 000 ns
Read 1 MB sequentially from disk
30 000 000 ns
Send packet CA->Netherlands->CA
150 000 000 ns
11. POUR QUOI FAIRE ?
• Optimiser le capacity planning
(et leTCO)
• CPU vs. GDU
• DB physique / virtuelle, mutualisée vs. dédiée
• NUMA, CPU overcommit
13. COMMENT FAIRE ?
• Tester par comparaison…
• Outillage simple
• peu intrusif
• tests faciles à implémenter
• tests faciles à répliquer
• collecte des données facilitée
• analyse des données facilitée
15. CPU - Cas d’école : chiffrement applicatif
• Question :
• entre 2 processeurs donnés…
• l’un disposant du jeu d’instructions AES-NI (serveur R820)
• l’autre ne disposant pas de ce jeu d’instruction (serveur
R810)
• dans une machine virtuelleVMware…
• quelle différence de performance peut-on attendre…
• sur un traitement applicatif en Java de chiffrement symétrique ?
16. CPU - Cas d’école : chiffrement applicatif
• Traitement applicatif
17. CPU - Cas d’école : chiffrement applicatif
• CPUs à comparer
•
vendor_id : GenuineIntel
cpu family : 6
model : 26
model name : Intel(R) Xeon(R) CPU E7540 @ 2.00GHz
stepping : 4
cpu MHz : 1994.994
cache size : 18432 KB
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8
apic sep mtrr pge mca cmov pat pse36 clflush dts
acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm
constant_tsc arch_perfmon pebs bts rep_good
xtopology tsc_reliable nonstop_tsc aperfmperf pni
ssse3 cx16 sse4_1 sse4_2 popcnt hypervisor lahf_lm
ida
bogomips : 3989.98
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
vendor_id : GenuineIntel
cpu family : 6
model : 37
model name : Intel(R) Xeon(R) CPU E5-4610 0 @
2.40GHz
stepping : 1
cpu MHz : 2399.999
cache size : 15360 KB
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8
apic sep mtrr pge mca cmov pat pse36 clflush dts
acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm
constant_tsc arch_perfmon pebs bts rep_good
xtopology tsc_reliable nonstop_tsc aperfmperf pni
pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes
hypervisor lahf_lm ida arat
bogomips : 4799.99
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
18. CPU - Cas d’école : chiffrement applicatif
• Résultats de tirs de perf applicatifs
220,00$ms$
270,00$ms$
320,00$ms$
370,00$ms$
420,00$ms$
470,00$ms$
520,00$ms$
R810$
R820$
en moy. = +7%
perc. 50 = +10%
perc. 30 = +20%
19. CPU - Cas d’école : chiffrement applicatif
• Une tendance se dégage… timidement
20. CPU - Outil : openSSL
root@xxx:/home/lpiot/poc_crypto-1.0 # openssl speed
(…)
Doing aes-256 cbc for 3s on 16 size blocks: 11985663 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 64 size blocks: 4208819 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 256 size blocks: 1135478 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 1024 size blocks: 276032 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 8192 size blocks: 38026 aes-256 cbc's in 3.00s
(…)
OpenSSL 0.9.8j-fips 07 Jan 2009
built on: Wed Jan 11 17:40:32 UTC 2012
options:bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,4,long) aes(partial) blowfish(ptr2)
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -
DMD32_REG_T=int -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-
unwind-tables -g -fomit-frame-pointer -fno-strict-aliasing -DTERMIO -Wall -fstack-protector -fprofile-use -
DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
(…)
md5 34109.60k 103963.82k 237333.50k 349442.05k 405222.74k
hmac(md5) 26625.30k 96095.57k 193378.38k 281552.21k 404815.87k
sha1 36680.54k 105444.36k 210998.62k 325011.46k 369740.46k
(…)
aes-128 cbc 77020.09k 117352.21k 135510.02k 141283.33k 142879.40k
aes-192 cbc 69790.14k 101752.17k 115271.42k 119376.21k 120384.17k
aes-256 cbc 63923.54k 89788.14k 96894.12k 94218.92k 103836.33k
(…)
aes-256 ige 90340.65k 93965.35k 96967.68k 97552.38k 97957.21k
sign verify sign/s verify/s
rsa 512 bits 0.000137s 0.000013s 7317.0 78349.9
rsa 1024 bits 0.000682s 0.000038s 1466.7 26624.4
rsa 2048 bits 0.004286s 0.000130s 233.3 7666.5
rsa 4096 bits 0.030486s 0.000488s 32.8 2047.4
sign verify sign/s verify/s
dsa 512 bits 0.000134s 0.000142s 7490.3 7039.3
dsa 1024 bits 0.000375s 0.000420s 2667.3 2383.6
dsa 2048 bits 0.001294s 0.001495s 772.6 668.7
22. CPU - Outil : sysbench
• Déploiement
• disponible dans les repositories standards
• 170 ko
• dépendances : libc + libmysqlclient
• Info
• véritable boîte à outil : permet aussi de faire des tests sur
• le scheduler (option --test=threads)
• le mutex (option --test=mutex)
• les accès séquentiels / aléatoires à la mémoire (option --test=memory*)
• les accès séquentiels / aléatoires en I/O (option --test=fileio)
• le moteur de SGBD-R mySQL (option --test=oltp)
• manuel : http://sysbench.sourceforge.net/docs/
23. CPU - Outil : sysbench
• Usage
• compte utilisateur sans droit spécifique
• création de nombres premiers
ubuntu@xxx:~$ sysbench --test=cpu --cpu-max-prime=20000 run
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Doing CPU performance benchmark
Threads started!
Done.
Maximum prime number checked in CPU test: 20000
Test execution summary:
total time: 125.4803s
total number of events: 10000
total time taken by event execution: 125.4679
per-request statistics:
min: 4.71ms
avg: 12.55ms
max: 149.16ms
approx. 95 percentile: 112.83ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 125.4679/0.00
25. RAM - Cas d’école : ressources virtuelles réservées
• Question :
• dans une machine virtuelleVMware…
• quelle différence de performance peut-on attendre…
• si l’on réserve la RAM
• ou si l’on reste en RAM dynamiquement allouée (ballooning)
26. RAM - Outil : bandwidth
• Déploiement
• sources disponibles sur Internet : http://home.comcast.net/~veritas/bandwidth.html
• 332 ko
• dépendances (pour la compilation) : make + nasm + gcc
• Info
• tout automatique
• permet aussi de faire des tests sur la bande passante réseau
27. RAM - Outil : bandwidth
• Usage
• compte utilisateur sans droit spécifique
• usage de nice pour forcer le scheduler (droits de sudo sur nice)
• produit un graphique BMP dans ./
ubuntu@xxx:~/bandwidth-0.32p$ sudo nice -n -2 ./bandwidth64
This is bandwidth version 0.32p.
Copyright (C) 2005-2012 by Zack T Smith.
This software is covered by the GNU Public License.
It is provided AS-IS, use at your own risk.
See the file COPYING for more information.
CPU family: GenuineIntel
CPU features: MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AES AVX XD Intel64
Cache 0: L1 data cache, line size 64, 8-ways, 64 sets, size 32k
Cache 1: L1 instruction cache, line size 64, 8-ways, 64 sets, size 32k
Cache 2: L2 unified cache, line size 64, 8-ways, 512 sets, size 256k
Cache 3: L3 unified cache, line size 64, 20-ways, 16384 sets, size 20480k
Notation: B = byte, kB = 1024 B, MB = 1048576 B.
CPU speed is 1795.67 MHz.
Sequential read (128-bit), size = 128 B, loops = 2169503744, 52957.3 MB/s
Sequential read (128-bit), size = 256 B, loops = 1066926080, 52088.9 MB/s
Sequential read (128-bit), size = 384 B, loops = 722815632, 52933.6 MB/s
Sequential read (128-bit), size = 512 B, loops = 536608768, 52391.5 MB/s
28. RAM - Outil : bandwidth
• Résultats sans réservation de mémoire
29. RAM - Outil : bandwidth
• Résultats avec réservation de mémoire
30. RAM - Outil : sysbench
• Déploiement
• déjà vu
• Info
• paramétrage plus fin que bandwidth
• accès séquentiels / aléatoires (option --memory-access-mode={seq,rnd})
• restriction aux opérations de lecture / écriture (option --memory-oper={read,
write, none})
• restriction à la mémoire globale / locale au thread (option --memory-
scope={global,local})
• 3 défauts
• pas de test complet (il faut enchaîner les tests seq/rnd, read/write, global/local)
• pas de représentation graphique fine
• gros défaut : résultats donnés sous forme très synthétique
31. RAM - Outil : sysbench
• Usage
• compte utilisateur sans droit spécifique
ubuntu@xxx:~$ sysbench --test=memory run
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Doing memory operations speed test
Memory block size: 1K
Memory transfer size: 102400M
Memory operations type: write
Memory scope type: global
Threads started!
Done.
Operations performed: 104857600 (250271.37 ops/sec)
102400.00 MB transferred (244.41 MB/sec)
Test execution summary:
total time: 418.9756s
total number of events: 104857600
total time taken by event execution: 317.1497
per-request statistics:
min: 0.00ms
avg: 0.00ms
max: 24.08ms
approx. 95 percentile: 0.00ms
Threads fairness:
events (avg/stddev): 104857600.0000/0.00
execution time (avg/stddev): 317.1497/0.00
33. I/O - Cas d’école : choix du type de stockage EC2
• Question :
• dans une machine virtuelle Amazon WS EC2…
• quelle différence de performance peut-on attendre…
• si l’on utilise un disque EBS standard
• si l’on utilise un disque EBS avec 100 I/O réservées
• si l’on utilise le disque local (RAW)
• même type de filesystem
• mêmes options de filesystem
34. I/O - Outil : bonnie++
• Déploiement
• disponible dans les repositories standards
• 254 ko
• dépendances : libc + libgcc + libstdc++
• Info
• bonnie++ permet de s’affranchir des mécanismes de buffering propres à l’OS : on obtient des
données d’I/O «pures»
• -b no write buffering. fsync() after every write.
• -D use direct IO (O_DIRECT) for the bulk IO tests.
35. I/O - Outil : bonnie++
• Usage
• compte utilisateur sans droit spécifique
• lecture / écriture de fichiers au contenu aléatoire de taille supérieure à la RAM
ubuntu@xxx:~$ bonnie++ -d ~/bonnie/ -s 3500 -n 10:5000:2000:10
Writing a byte at a time...done
Writing intelligently...done
Rewriting...done
Reading a byte at a time...done
Reading intelligently...done
start 'em...done...done...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
ip-10-33-137- 3500M 131 94 33126 6 27059 6 325 91 118166 13 5126 102
Latency 169ms 320ms 4234ms 95407us 241ms 4340us
Version 1.96 ------Sequential Create------ --------Random Create--------
ip-10-33-137-25 -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
10:5000:2000/10 3894 28 +++++ +++ 13717 69 4423 29 +++++ +++ 13381 78
Latency 72274us 24339us 72206us 72164us 72109us 47368us
1.96,1.96,ip-10-33-137-25,1,1377459694,3500M,,
131,94,33126,6,27059,6,325,91,118166,13,5126,102,10,5000,2000,,10,3894,28,+++++,+++,13717,69,4423,29,+++++,+++,
13381,78,169ms,320ms,4234ms,95407us,241ms,4340us,72274us,24339us,72206us,72164us,72109us,47368us
38. I/O - Outil : iozone
• Déploiement
• sources disponibles sur Internet : http://www.iozone.org/
• 254 ko
• dépendances (pour la compilation) : make + gcc
• Info
• outil ultra-complet
• sait travailler en file / mmap
• sait tester le direct IO
• sait purger le cache processeur, le cache système
• teste avec une large taille de buffers
• outil de diagnostic également
• sait vérifier chaque octet pour débusquer un système I/O défectueux
39. I/O - Outil : iozone
• Usage
• compte utilisateur sans droit spécifique
• lecture / écriture de fichiers au contenu aléatoire de taille supérieure à la RAMubuntu@xxx:~/PerfUG_20130829/iozone3_420/src/current$ ./iozone -Ra
Iozone: Performance Test of File I/O
Version $Revision: 3.420 $
Compiled for 64 bit mode.
Build: linux-AMD64
Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins (…)
Run began: Sun Aug 25 15:32:23 2013
Excel chart generation enabled
Auto Mode
Command line used: ./iozone -Ra
Output is in Kbytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 Kbytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
random random bkwd record stride
KB reclen write rewrite read reread read write read rewrite read fwrite
frewrite fread freread
64 4 492717 942521 1562436 2203800 1518251 842003 1066042 1013707 1421755 913649
998622 1452528 2133730
64 8 520419 1143223 2561267 3363612 1933893 1421755 1484662 1255511 2067979 955947
1124074 1492919 3203069
64 16 608965 1492919 2892445 3165299 2379626 1070292 1421755 1734015 1526887 1083249
969761 1562436 3791156
(…)
128 4 465708 990891 1778862 2202044 1579934 1015251 1243315 1085013 1455701 1123617
753179 1487977 1827299
128 8 592699 1040839 1424795 3468030 2286447 1102844 1508887 1603529 1561553 1102844
1015251 1598754 2608629
42. HTTP - Cas d’école : comparaison de serveurs
• Question :
• dans une même machine virtuelleVMware…
• quelle différence de performance peut-on attendre…
• entre différents serveurs Web
• apache2
• nginx
• shortfin
• pour la publication de fichiers statiques ?
43. HTTP - Outil : apachebench
• Déploiement
• disponible dans les apache-utils
• 55 ko
• dépendances : libapr1, libaprutil1, libc6, libssl1.0.0
• Info
• peut-on faire un outil plus simple et plus parlant ?
44. HTTP - Outil : apachebench
• Usage
• compte utilisateur sans droit spécifique
• -c : nombre de threads simultané (i.e. utilisateurs concurrents)
• -n : nombre de requêtes totales
ubuntu@xxx:~$ ab -c 200 -n 2000 http://localhost:8082/
asf-logo.gif
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd,
http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://
www.apache.org/
Benchmarking localhost (be patient)
Completed 200 requests
(…)
Completed 1800 requests
Completed 2000 requests
Finished 2000 requests
Server Software: nginx/1.1.19
Server Hostname: localhost
Server Port: 8082
Document Path: /asf-logo.gif
Document Length: 7279 bytes
Concurrency Level: 200
Time taken for tests: 1.200 seconds
Complete requests: 2000
Failed requests: 0
Write errors: 0
Total transferred: 14982000 bytes
HTML transferred: 14558000 bytes
Requests per second: 1666.60 [#/sec] (mean)
Time per request: 120.004 [ms] (mean)
Time per request: 0.600 [ms] (mean, across all
concurrent requests)
Transfer rate: 12191.93 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 50 182.8 7 1022
Processing: 3 64 42.7 60 685
Waiting: 2 51 35.0 52 679
Total: 22 114 192.3 78 1126
Percentage of the requests served within a certain
time (ms)
50% 78
66% 89
75% 93
80% 96
90% 111
95% 199
98% 1117
99% 1122
100% 1126 (longest request)
45. HTTP - Outil : apachebench
• Résultats
Server Software: Apache/2.2.22
Server Port: 80
(…)
Concurrency Level: 200
Time taken for tests: 3.897 seconds
Complete requests: 2000
Failed requests: 0
Write errors: 0
Total transferred: 15068000 bytes
HTML transferred: 14558000 bytes
Requests per second: 513.25 [#/sec] (mean)
Time per request: 389.671 [ms] (mean)
Time per request: 1.948 [ms] (mean, across all
concurrent requests)
Transfer rate: 3776.23 [Kbytes/sec] receiv.
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 12 15.5 4 80
Processing: 14 219 689.3 86 3874
Waiting: 6 205 691.3 63 3868
Total: 24 232 688.4 93 3889
Percentage of the requests served within a certain
time (ms)
50% 93
66% 99
75% 108
80% 125
90% 150
95% 185
98% 3882
99% 3885
100% 3889 (longest request)
Server Software: nginx/1.1.19
Server Port: 8082
(…)
Time taken for tests: 1.200 seconds
Complete requests: 2000
Failed requests: 0
Write errors: 0
Total transferred: 14982000 bytes
HTML transferred: 14558000 bytes
Requests per second: 1666.60 [#/sec] (mean)
Time per request: 120.004 [ms] (mean)
Time per request: 0.600 [ms] (mean, across all
concurrent requests)
Transfer rate: 12191.93 [Kbytes/sec]
received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 50 182.8 7 1022
Processing: 3 64 42.7 60 685
Waiting: 2 51 35.0 52 679
Total: 22 114 192.3 78 1126
Percentage of the requests served within a certain
time (ms)
50% 78
66% 89
75% 93
80% 96
90% 111
95% 199
98% 1117
99% 1122
100% 1126 (longest request)
46. HTTP - Outil : apachebench
• Résultats
Server Software: Apache/2.2.22
Server Port: 80
(…)
Concurrency Level: 200
Time taken for tests: 3.897 seconds
Complete requests: 2000
Failed requests: 0
Write errors: 0
Total transferred: 15068000 bytes
HTML transferred: 14558000 bytes
Requests per second: 513.25 [#/sec] (mean)
Time per request: 389.671 [ms] (mean)
Time per request: 1.948 [ms] (mean, across all
concurrent requests)
Transfer rate: 3776.23 [Kbytes/sec] receiv.
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 12 15.5 4 80
Processing: 14 219 689.3 86 3874
Waiting: 6 205 691.3 63 3868
Total: 24 232 688.4 93 3889
Percentage of the requests served within a certain
time (ms)
50% 93
66% 99
75% 108
80% 125
90% 150
95% 185
98% 3882
99% 3885
100% 3889 (longest request)
Server Software: Apache-Coyote/1.1
Server Port: 8080
(…)
Concurrency Level: 200
Time taken for tests: 5.181 seconds
Complete requests: 2000
Failed requests: 0
Write errors: 0
Total transferred: 4626000 bytes
HTML transferred: 4132000 bytes
Requests per second: 386.06 [#/sec] (mean)
Time per request: 518.055 [ms] (mean)
Time per request: 2.590 [ms] (mean, across all
concurrent requests)
Transfer rate: 872.03 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 75 245.6 0 1040
Processing: 8 225 494.1 147 4161
Waiting: 5 212 494.4 144 4157
Total: 8 300 659.0 154 5161
Percentage of the requests served within a certain
time (ms)
50% 154
66% 183
75% 193
80% 205
90% 240
95% 1152
98% 2429
99% 5156
100% 5161 (longest request)
47. HTTP - Outil : apachebench
• Résultats
Server Software: Apache/2.2.22
Server Port: 80
(…)
Concurrency Level: 200
Time taken for tests: 3.897 seconds
Complete requests: 2000
Failed requests: 0
Write errors: 0
Total transferred: 15068000 bytes
HTML transferred: 14558000 bytes
Requests per second: 513.25 [#/sec] (mean)
Time per request: 389.671 [ms] (mean)
Time per request: 1.948 [ms] (mean, across all
concurrent requests)
Transfer rate: 3776.23 [Kbytes/sec] receiv.
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 12 15.5 4 80
Processing: 14 219 689.3 86 3874
Waiting: 6 205 691.3 63 3868
Total: 24 232 688.4 93 3889
Percentage of the requests served within a certain
time (ms)
50% 93
66% 99
75% 108
80% 125
90% 150
95% 185
98% 3882
99% 3885
100% 3889 (longest request)
Server Software: shortfin/0.9.5
Server Port: 8081
(…)
Concurrency Level: 200
Time taken for tests: 11.675 seconds
Complete requests: 2000
Failed requests: 0
Write errors: 0
Total transferred: 14738000 bytes
HTML transferred: 14558000 bytes
Requests per second: 171.31 [#/sec] (mean)
Time per request: 1167.470 [ms] (mean)
Time per request: 5.837 [ms] (mean, across all
concurrent requests)
Transfer rate: 1232.80 [Kbytes/sec]
received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 16 18.7 8 78
Processing: 960 1122 265.3 1061 2070
Waiting: 2 56 39.2 50 220
Total: 975 1138 269.7 1066 2117
Percentage of the requests served within a certain
time (ms)
50% 1066
66% 1078
75% 1103
80% 1116
90% 1150
95% 2073
98% 2117
99% 2117
48. HTTP - Outil : wrk
• Déploiement
• disponible sur GitHub : https://github.com/wg/wrk
• 55 ko
• dépendances (à la compilation) : libssl-dev
• Info
• similaire à apachebench
• Usage
• compte utilisateur sans droit spécifique
• -t : nombre de threads simultané (i.e. utilisateurs concurrents)
• -c : nombre de connexions ouvertes simultanées
• -d : durée du test
51. DB - Outil : sysbench
• Déploiement
• déjà vu
• Info
• permet de bencher une instance de base de données
• crée une table et un jeu de données
• passe des requêtes de différentes natures et produit des restitutions
SELECT c FROM sbtest WHERE id=N
SELECT c FROM sbtest WHERE id BETWEEN N AND M
SELECT SUM(K) FROM sbtest WHERE id BETWEEN N and M
SELECT c FROM sbtest WHERE id between N and M ORDER BY c
SELECT DISTINCT c FROM sbtest WHERE id BETWEEN N and M ORDER BY c
UPDATEs on index / non-index column:
UPDATE sbtest SET k=k+1 WHERE id=N
UPDATE sbtest SET c=N WHERE id=M
DELETE FROM sbtest WHERE id=N
INSERT INTO sbtest VALUES (...)