Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для etcd? Бпросим fio

Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для etcd? Бпросим fio

ΠšΠΎΡ€ΠΎΡ‚ΠΊΠ°Ρ история ΠΎ fio ΠΈ etcd

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ кластСра etcd Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ зависит ΠΎΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΅Π³ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. etcd экспортируСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π² Prometheus, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ свСдСния ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. НапримСр, ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΡƒ wal_fsync_duration_seconds. Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊ etcd сказано: Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΡΡ‡ΠΈΡ‚Π°Π»ΠΎΡΡŒ достаточно быстрым, 99-ΠΉ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΈΠ»ΡŒ этой ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ мСньшС 10 мс. Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ кластСр etcd Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… Linux ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ, достаточно Π»ΠΈ быстроС Ρƒ вас Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, SSD), ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ fio β€” популярный инструмСнт для тСстирования ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. ЗапуститС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Π³Π΄Π΅ test-data β€” это ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΠΎΠ΄ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°:

fio --rw=write --ioengine=sync --fdatasync=1 --directory=test-data --size=22m --bs=2300 --name=mytest

НуТно просто ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ 99-ΠΉ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΈΠ»ΡŒ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ fdatasync мСньшС 10 мс. Если Π΄Π°, Ρƒ вас достаточно быстроС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²:

  sync (usec): min=534, max=15766, avg=1273.08, stdev=1084.70
  sync percentiles (usec):
   | 1.00th=[ 553], 5.00th=[ 578], 10.00th=[ 594], 20.00th=[ 627],
   | 30.00th=[ 709], 40.00th=[ 750], 50.00th=[ 783], 60.00th=[ 1549],
   | 70.00th=[ 1729], 80.00th=[ 1991], 90.00th=[ 2180], 95.00th=[ 2278],
   | 99.00th=[ 2376], 99.50th=[ 9634], 99.90th=[15795], 99.95th=[15795],
   | 99.99th=[15795]

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

  • ΠœΡ‹ настроили значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² —size ΠΈ —bs для своСго ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ сцСнария. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚ fio ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ свои значСния. Π“Π΄Π΅ ΠΈΡ… Π²Π·ΡΡ‚ΡŒ? Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΠΌΡ‹ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ fio.
  • Π’ΠΎ врСмя тСстирования вся Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° поступаСт ΠΎΡ‚ fio. Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ сцСнарии, скорСС всСго, Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ запросы Π½Π° запись, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ связаны с wal_fsync_duration_seconds. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ wal_fsync_duration_seconds. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли 99-ΠΉ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΈΠ»ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ дотянул Π΄ΠΎ 10 мс, Π²Π°ΡˆΠ΅ΠΌΡƒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Ρƒ Π½Π΅ Ρ…Π²Π°Ρ‚ΠΈΡ‚ скорости.
  • Π‘Π΅Ρ€ΠΈΡ‚Π΅ Π²Π΅Ρ€ΡΠΈΡŽ fio Π½Π΅ Π½ΠΈΠΆΠ΅ 3.5 (ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΈΠ»ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ fdatasync).
  • Π’Ρ‹ΡˆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΎΡ‚ fio.

Длинная история ΠΎ fio ΠΈ etcd

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ WAL Π² etcd

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΆΡƒΡ€Π½Π°Π» ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅ΠΉ записи; etcd Ρ‚ΠΎΠΆΠ΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ ΠΆΡƒΡ€Π½Π°Π» ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅ΠΉ записи (write-ahead log, WAL). Нам достаточно Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‡Π»Π΅Π½ кластСра etcd Π²Π΅Π΄Π΅Ρ‚ Π΅Π³ΠΎ Π² постоянном Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. etcd записываСт ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ с ΠΏΠ°Ρ€Π°ΠΌΠΈ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅) Π² WAL, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Если ΠΌΠ΅ΠΆΠ΄Ρƒ снимками ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‡Π»Π΅Π½ΠΎΠ² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈ пСрСзапускаСтся, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ локально Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго снимка ΠΏΠΎ содСрТимому WAL.

Когда ΠΊΠ»ΠΈΠ΅Π½Ρ‚ добавляСт ΠΊΠ»ΡŽΡ‡ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΏΠ°Ρ€ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ обновляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, etcd вносит запись ΠΎΠ± этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² WAL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² постоянном Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, etcd Π”ΠžΠ›Π–Π•Π Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ запись Π² WAL Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π°. Π’ Linux для этого нСдостаточно ΠΎΠ΄Π½ΠΎΠ³ΠΎ систСмного Π²Ρ‹Π·ΠΎΠ²Π° write, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ фактичСски запись Π² физичСскоС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π°. НапримСр, Linux ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ запись WAL Π² кэшС Π² памяти ядра (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, страничном кэшС). А для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ записались Π² постоянноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π½ΡƒΠΆΠ΅Π½ систСмный Π²Ρ‹Π·ΠΎΠ² fdatasync послС записи, ΠΈ etcd ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ (ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ strace, Π³Π΄Π΅ 8 β€” это дСскриптор Ρ„Π°ΠΉΠ»Π° WAL):

21:23:09.894875 lseek(8, 0, SEEK_CUR)   = 12808 <0.000012>
21:23:09.894911 write(8, ". 20210220361223255266632$10 20103026"34"rn3fo"..., 2296) = 2296 <0.000130>
21:23:09.895041 fdatasync(8)            = 0 <0.008314>

К соТалСнию, запись Π² постоянноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ. Если Π²Ρ‹Π·ΠΎΠ² fdatasync Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ систСмы etcd ΠΏΠ°Π΄Π°Π΅Ρ‚. Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ etcd говорится, Ρ‡Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ считаСтся достаточно быстрым, Ссли Π² 99-ΠΌ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΈΠ»Π΅ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² fdatasync ΠΏΡ€ΠΈ записи Π² Ρ„Π°ΠΉΠ» WAL Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ мСньшС 10 мс. Π•ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ для Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, Π½ΠΎ Π² этом постС ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ± этой ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ΅.

ΠžΡ†Π΅Π½ΠΊΠ° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ fio

Если Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ вашС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ для etcd, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ fio β€” ΠΎΡ‡Π΅Π½ΡŒ популярный инструмСнт тСстирования Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ дисковыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ самыми Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ: синхронныС ΠΈ асинхронныС, мноТСство классов систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈ Ρ‚. Π΄. Как слСдствиС β€” fio достаточно ΠΎΡ‡Π΅Π½ΡŒ слоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π£ Π½Π΅Π³ΠΎ имССтся мноТСство ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Ρ‹Π΄Π°ΡŽΡ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Ρ‹Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹ для etcd, слСдуСт ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ тСстовая Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° записи ΠΎΡ‚ fio максимально Π±Π»ΠΈΠ·ΠΊΠ° ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΎΡ‚ etcd ΠΏΡ€ΠΈ записи Ρ„Π°ΠΉΠ»ΠΎΠ² WAL.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, fio Π΄ΠΎΠ»ΠΆΠ΅Π½, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π² Π²ΠΈΠ΄Π΅ ряда ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи Π² Ρ„Π°ΠΉΠ», каТдая запись Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· систСмного Π²Ρ‹Π·ΠΎΠ²Π° write, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт систСмный Π²Ρ‹Π·ΠΎΠ² fdatasync. Для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи fio Π½ΡƒΠΆΠ΅Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ —rw=write. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ записи fio использовал систСмный Π²Ρ‹Π·ΠΎΠ² write, Π° Π½Π΅ pwrite, стоит ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ —ioengine=sync. НаконСц, Ρ‡Ρ‚ΠΎΠ±Ρ‹ послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ записи вызывался fdatasync, Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ —fdatasync=1. Π”Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ (—size ΠΈ —bs) зависят ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ сцСнария. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ расскаТСм, ΠΊΠ°ΠΊ ΠΈΡ… Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ fio ΠΈ ΠΊΠ°ΠΊ ΠΌΡ‹ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ Π΅Π³ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ

Π’ этом постС ΠΌΡ‹ описываСм Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ случай. Π£ нас Π±Ρ‹Π» кластСр Kubernetes v1.13, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Prometheus. etcd v3.2.24 размСщался Π½Π° SSD. ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΏΠΎ etcd ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ слишком высокиС Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ для fdatasync, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° кластСр Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π». ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π±Ρ‹Π»ΠΈ странными, ΠΈ ΠΌΡ‹ Ρ‚ΠΎΠ»ΠΊΠΎΠΌ Π½Π΅ Π·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚. ΠšΠ»Π°ΡΡ‚Π΅Ρ€ состоял ΠΈΠ· Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин, Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π² Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Π² физичСских SSD ΠΈΠ»ΠΈ Π² слоС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΌΡ‹ часто вносили измСнСния Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ оборудования ΠΈ ПО, ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π±Ρ‹Π» способ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. ΠœΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ etcd Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Prometheus, Π½ΠΎ это слишком Ρ…Π»ΠΎΠΏΠΎΡ‚Π½ΠΎ. ΠœΡ‹ искали достаточно простой способ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ. ΠœΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Prometheus ΠΎΡ‚ etcd.

Но для этого Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π΄Π²Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΊΠ°ΠΊ выглядит Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ etcd создаСт ΠΏΡ€ΠΈ записи Π² WAL? КакиС систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ? Какой Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρƒ записСй? Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Ссли ΠΌΡ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠΌ Π½Π° эти вопросы, ΠΊΠ°ΠΊ воспроизвСсти Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ с fio? НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ fio β€” ΠΎΡ‡Π΅Π½ΡŒ Π³ΠΈΠ±ΠΊΠΈΠΉ инструмСнт со мноТСством ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². ΠœΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΎΠ±Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ β€” с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ lsof ΠΈ strace. lsof ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ всС дСскрипторы Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ процСссом, ΠΈ связанныС с Π½ΠΈΠΌΠΈ Ρ„Π°ΠΉΠ»Ρ‹. А с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ strace ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ процСсс ΠΈΠ»ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ процСсс ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. strace Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ всС систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΎΡ‚ ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ процСсса (ΠΈ Π΅Π³ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… процСссов). ПослСднСС вСсьма Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ etcd ΠΊΠ°ΠΊ Ρ€Π°Π· примСняСт ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΌΡ‹ использовали strace для изучСния сСрвСра etcd для Kubernetes, ΠΊΠΎΠ³Π΄Π° Π½Π° кластСр Π½Π΅ Π±Ρ‹Π»ΠΎ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. ΠœΡ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всС записи WAL Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°: 2200–2400 Π±Π°ΠΉΡ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π² Π½Π°Ρ‡Π°Π»Π΅ поста ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ —bs=2300 (bs ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π² Π±Π°ΠΉΡ‚Π°Ρ… для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ записи fio). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ записи etcd зависит ΠΎΡ‚ вСрсии etcd, поставки, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Ρ‚. Π΄. ΠΈ влияСт Π½Π° Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ fdatasync. Если Ρƒ вас ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ сцСнарий, ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ свои процСссы etcd с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ strace, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹.

Π—Π°Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС дСйствия Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС etcd, ΠΌΡ‹ запустили Π΅Π΅ со strace ΠΈ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ -ffttT. Π’Π°ΠΊ ΠΌΡ‹ ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ процСссы ΠΈ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, Π° Π΅Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΎ Π½Π°Ρ‡Π°Π»Π΅ ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ систСмного Π²Ρ‹Π·ΠΎΠ²Π°. ΠœΡ‹ использовали lsof, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ свой Π°Π½Π°Π»ΠΈΠ· Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… strace ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ дСскриптор Ρ„Π°ΠΉΠ»Π° для ΠΊΠ°ΠΊΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ использовался. Π’Π°ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ strace ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅. Бтатистика ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ синхронизации ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ»Π°, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ wal_fsync_duration_seconds ΠΈΠ· etcd соотвСтствуСт Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ fdatasync с Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌΠΈ дСскрипторами WAL.

ΠœΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ fio ΠΈ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для нашСго сцСнария, Ρ‡Ρ‚ΠΎΠ±Ρ‹ fio сгСнСрировал Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ etcd. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΈ ΠΈΡ… Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, запустив fio ΠΈΠ· strace, ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с etcd.

ΠœΡ‹ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° —size, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдставляСт всю Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΡ‚ fio. Π’ нашСм случаС это ΠΎΠ±Ρ‰Π΅Π΅ число Π±Π°ΠΉΡ‚ΠΎΠ², записываСмых Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Оно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ прямо ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ количСству систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² write (ΠΈ fdatasync). Для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ значСния bs количСство Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² fdatasync = size/bs. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ нас интСрСсовал ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΈΠ»ΡŒ, Ρƒ нас Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹Ρ‚ΡŒ достаточно ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠ² для достовСрности, ΠΈ ΠΌΡ‹ подсчитали, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ достаточно 10^4 (получаСтся 22 ΠΌΠ΅Π±ΠΈΠ±Π°ΠΉΡ‚Π°). Если —size мСньшС, ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ выбросы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, нСсколько Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² fdatasync ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ дольшС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΈ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° 99-ΠΉ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΈΠ»ΡŒ).

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ сами

ΠœΡ‹ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ fio ΠΈ ΡƒΠ·Π½Π°Ρ‚ΡŒ, достаточно Π»ΠΈ Ρƒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° скорости для высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ etcd. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ это Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ SSD Π² IBM Cloud.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com