mirroir readonly du Gitit wiki.evolix.org (attention, ne rien commiter/merger sur ce dépôt) https://wiki.evolix.org
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

HowtoBenchmarks.md 6.7 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. # Howto Benchmarks
  2. **ATTENTION, CES TESTS NE DOIVENT PAS ÊTRE EFFECTUÉS SUR UN SERVEUR EN PRODUCTION**
  3. ## Tests sur les performances du disque
  4. ### dd
  5. On essaye plus ou moins de désactiver le cache mémoire pour l'écriture du filesystem
  6. (en fait, le cache mémoire se remplit quand même pour optimiser une éventuelle lecture !) :
  7. ~~~
  8. # echo 3 > /proc/sys/vm/drop_caches
  9. # sysctl -w vm.dirty_background_ratio=0
  10. # sysctl -w vm.dirty_ratio=0
  11. ~~~
  12. Note importante : ces paramètres sont à activer avec précaution : ils peuvent dégrader les performances...
  13. même pour les tests (en provoquant une sorte de yoyo en terme de vitesse d'accès). L'idéal est de tester via
  14. un volume beaucoup plus grand que le taille de la mémoire du serveur.
  15. Performances en écriture :
  16. Un test simple est d'écrire un très gros fichier via la commande _dd_.
  17. ~~~
  18. # time dd if=/dev/zero bs=4096 count=52398080 2>/tmp/out | pv > 200G ; cat /tmp/out
  19. 200GB 0:24:40 [ 138MB/s] [ <=> ]
  20. real 24m40.378s
  21. user 0m35.902s
  22. sys 11m17.146s
  23. 52398080+0 records in
  24. 52398080+0 records out
  25. 214622535680 bytes (215 GB) copied, 1480.38 s, 145 MB/s
  26. ~~~
  27. Note : la combinaison des options bs/count n'a apparemment que peu d'influence sur les résultats.
  28. Et en lecture :
  29. ~~~
  30. # echo 2 > /proc/sys/vm/drop_caches
  31. # time dd if=200G bs=4096 count=52398080 2>/tmp/out | pv > /dev/null ; cat /tmp/out
  32. 200GB 0:09:13 [ 370MB/s] [ <=> ]
  33. real 9m13.131s
  34. user 0m39.322s
  35. sys 9m6.602s
  36. 52398080+0 records in
  37. 52398080+0 records out
  38. 214622535680 bytes (215 GB) copied, 553.056 s, 388 MB/s
  39. ~~~
  40. Et en effacement :
  41. ~~~
  42. # time rm /home/32gb
  43. ~~~
  44. ### cryptsetup
  45. ~~~
  46. # cryptsetup benchmark
  47. # Tests are approximate using memory only (no storage IO).
  48. PBKDF2-sha1 1024000 iterations per second
  49. PBKDF2-sha256 668734 iterations per second
  50. PBKDF2-sha512 344926 iterations per second
  51. PBKDF2-ripemd160 624152 iterations per second
  52. PBKDF2-whirlpool 182044 iterations per second
  53. # Algorithm | Key | Encryption | Decryption
  54. aes-cbc 128b 506.0 MiB/s 2019.3 MiB/s
  55. serpent-cbc 128b 78.3 MiB/s 272.1 MiB/s
  56. twofish-cbc 128b 166.4 MiB/s 321.7 MiB/s
  57. aes-cbc 256b 405.2 MiB/s 1497.9 MiB/s
  58. serpent-cbc 256b 81.7 MiB/s 272.2 MiB/s
  59. twofish-cbc 256b 169.5 MiB/s 321.5 MiB/s
  60. aes-xts 256b 1684.1 MiB/s 1688.8 MiB/s
  61. serpent-xts 256b 279.3 MiB/s 268.1 MiB/s
  62. twofish-xts 256b 311.6 MiB/s 317.7 MiB/s
  63. aes-xts 512b 1304.0 MiB/s 1304.6 MiB/s
  64. serpent-xts 512b 280.2 MiB/s 268.3 MiB/s
  65. twofish-xts 512b 315.6 MiB/s 317.7 MiB/s
  66. ~~~
  67. ### Bonnie++
  68. Bonnie++ est un utilitaire qui permet de faire un bench sur les disques en écrite/lecture de façon différente, par bloc, et par en mode « random ».
  69. Une bonne explication : <http://www.googlux.com/bonnie.html>
  70. Un exemple qui test le disque avec un fichier de 6Go ` bonnie++ -d ./ -s 6144`:
  71. ~~~
  72. Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
  73. Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
  74. Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
  75. client 6G 607 99 50366 13 22989 4 2738 92 57663 7 109.1 5
  76. Latency 30503us 736ms 496ms 41723us 52395us 841ms
  77. Version 1.96 ------Sequential Create------ --------Random Create--------
  78. client -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
  79. files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
  80. 16 20037 41 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
  81. Latency 21643us 2840us 4224us 1399us 481us 2791us
  82. ~~~
  83. ### iozone
  84. ~~~
  85. $ iozone -T -t 4 -s 16g -r 256k -T -I -i0 -i1 -i2
  86. ~~~
  87. Crée 4 threads, dont chacun écrit et lit dans un fichier de 16Go, avec un buffer de 256Ko, utilisant O_DIRECT, pour désactiver le cache.
  88. ~~~
  89. $ iozone -a -I -b test.ods
  90. ~~~
  91. Fais tout les tests iozone en désactivant le cache, et en créant en fichier ODS pour faire un graphique des résultats, exemple :
  92. ### pg_test_fsync
  93. ~~~
  94. # aptitude install postgresql-contrib
  95. ~~~
  96. ~~~
  97. $ usr/lib/postgresql/9.2/bin/pg_test_fsync
  98. 2000 operations per test
  99. O_DIRECT supported on this platform for open_datasync and open_sync.
  100. Compare file sync methods using one 8kB write:
  101. (in wal_sync_method preference order, except fdatasync is Linux's default)
  102. open_datasync n/a
  103. fdatasync 3806.232 ops/sec
  104. fsync 3096.090 ops/sec
  105. fsync_writethrough n/a
  106. open_sync 3523.832 ops/sec
  107. Compare file sync methods using two 8kB writes:
  108. (in wal_sync_method preference order, except fdatasync is Linux's default)
  109. open_datasync n/a
  110. fdatasync 2974.951 ops/sec
  111. fsync 2238.596 ops/sec
  112. fsync_writethrough n/a
  113. open_sync 1777.819 ops/sec
  114. Compare open_sync with different write sizes:
  115. (This is designed to compare the cost of writing 16kB in different write open_sync sizes.)
  116. 16kB open_sync write 3608.877 ops/sec
  117. 8kB open_sync writes 2009.499 ops/sec
  118. 4kB open_sync writes 1238.880 ops/sec
  119. 2kB open_sync writes 135.783 ops/sec
  120. 1kB open_sync writes 67.377 ops/sec
  121. Test if fsync on non-write file descriptor is honored:
  122. (If the times are similar, fsync() can sync data written on a different descriptor.)
  123. write, fsync, close 2962.546 ops/sec
  124. write, close, fsync 3015.991 ops/sec
  125. Non-Sync'ed 8kB writes:
  126. write 376151.965 ops/sec
  127. ~~~
  128. ### fio
  129. <https://github.com/axboe/fio>
  130. /!\ Attention on fait les tests sur le disque, sans partition ou FS. /!\
  131. ~~~
  132. Read bandwidth:
  133. fio --direct=1 --rw=randread --bs=1m \
  134. --size=5G --numjobs=4 --runtime=10 --group_reporting --name=file1
  135. Read IOPS:
  136. fio --direct=1 --rw=randread --bs=4k \
  137. --size=5G --numjobs=64 --runtime=10 --group_reporting --name=file1
  138. Write bandwidth:
  139. fio --direct=1 --rw=randwrite --bs=1m \
  140. --size=5G --numjobs=4 --runtime=10 --group_reporting --name=file1
  141. Write IOPS:
  142. fio --direct=1 --rw=randwrite --bs=4k \
  143. --size=5G --numjobs=64 --runtime=10 --group_reporting --name=file1
  144. read : io=1859.1MB, bw=190420KB/s, iops=47604 , runt= 10002msec
  145. write: io=956556KB, bw=95627KB/s, iops=23906 , runt= 10003msec
  146. read : io=2632.0MB, bw=268952KB/s, iops=262 , runt= 10021msec
  147. write: io=2258.0MB, bw=230827KB/s, iops=225 , runt= 10017msec
  148. ~~~