Π‘Ρ€Π·ΠΈΠ½Π° Π½Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ ΠΏΠΎΠ³ΠΎΠ΄Π½Π° Π·Π° etcd? Π”Π° Π³ΠΎ ΠΏΡ€Π°ΡˆΠ°ΠΌΠ΅ Π€ΠΈΠΎ

Π‘Ρ€Π·ΠΈΠ½Π° Π½Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ ΠΏΠΎΠ³ΠΎΠ΄Π½Π° Π·Π° etcd? Π”Π° Π³ΠΎ ΠΏΡ€Π°ΡˆΠ°ΠΌΠ΅ Π€ΠΈΠΎ

ΠšΡ€Π°Ρ‚ΠΊΠ° ΠΏΡ€ΠΈΠΊΠ°Π·Π½Π° Π·Π° Ρ„ΠΈΠΎ ΠΈ Π΄Ρ€

ИзвСдба Π½Π° кластСрот ΠΈΡ‚Π½ Π²ΠΎ Π³ΠΎΠ»Π΅ΠΌΠ° ΠΌΠ΅Ρ€Π° зависи ΠΎΠ΄ пСрформанситС Π½Π° Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅. etcd ΠΈΠ·Π²Π΅Π·ΡƒΠ²Π° Π½Π΅ΠΊΠΎΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π²ΠΎ ΠŸΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜Π·Π° Π΄Π° сС ΠΎΠ±Π΅Π·Π±Π΅Π΄Π°Ρ‚ саканитС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π·Π° пСрформанситС Π½Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°Ρ‚Π° wal_fsync_duration_seconds. Π’ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° etcd ΠΏΠΈΡˆΡƒΠ²Π°: Π—Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π΄Π° сС смСта Π·Π° Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ Π±Ρ€Π·ΠΎ, 99-ΠΎΡ‚ ΠΏΠ΅Ρ€Ρ†Π΅Π½Ρ‚ΠΈΠ» Π½Π° ΠΎΠ²Π°Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° ΠΌΠΎΡ€Π° Π΄Π° Π±ΠΈΠ΄Π΅ ΠΏΠΎΠΌΠ°Π» ΠΎΠ΄ 10 ms. Ако ΠΏΠ»Π°Π½ΠΈΡ€Π°Ρ‚Π΅ Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ ΠΈΡ‚Π½. кластСр Π½Π° машини со Linux ΠΈ сакатС Π΄Π° ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅ Π΄Π°Π»ΠΈ Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ Π±Ρ€Π·ΠΎ (Π½Π° ΠΏΡ€. SSD), ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° користитС Π€ΠΈΠΎ Π΅ ΠΏΠΎΠΏΡƒΠ»Π°Ρ€Π½Π° Π°Π»Π°Ρ‚ΠΊΠ° Π·Π° Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° I/O ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π˜Π·Π²Ρ€ΡˆΠ΅Ρ‚Π΅ ја слСднава ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΊΠ°Π΄Π΅ тСст-ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ ΠΏΠΎΠ΄ Ρ‚ΠΎΡ‡ΠΊΠ°Ρ‚Π° Π·Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅:

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

Π’Ρ€Π΅Π±Π° само Π΄Π° Π³ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π΄Π°Π»ΠΈ Π΅ 99-Ρ‚ΠΈΠΎΡ‚ ΠΏΠ΅Ρ€Ρ†Π΅Π½Ρ‚ΠΈΠ» ΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Ρ‚Ρ€Π°Π΅ΡšΠ΅Ρ‚ΠΎ fdatasync ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ ΠΎΠ΄ 10 ms. Ако Π΅ Ρ‚Π°ΠΊΠ°, ΠΈΠΌΠ°Ρ‚Π΅ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ Π±Ρ€Π·ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅. Π•Π²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅:

  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.
  • Π—Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ, Ρ†Π΅Π»ΠΎΡ‚ΠΎ ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° I/O Π΄ΠΎΠ°Ρ“Π° ΠΎΠ΄ fio. Π’ΠΎ Ρ€Π΅Π°Π»Π½ΠΎ сцСнарио, Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎ ќС ΠΈΠΌΠ° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Π±Π°Ρ€Π°ΡšΠ° Π·Π° ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ ΠΊΠΎΠΈ Π΄ΠΎΠ°Ρ“Π°Π°Ρ‚ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ, освСн ΠΎΠ½ΠΈΠ΅ ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ со wal_fsync_duration_seconds. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈΠΎΡ‚ Ρ‚ΠΎΠ²Π°Ρ€ ќС ја Π·Π³ΠΎΠ»Π΅ΠΌΠΈ врСдноста Π½Π° wal_fsync_duration_seconds. Π—Π½Π°Ρ‡ΠΈ, Π°ΠΊΠΎ 99-ΠΎΡ‚ ΠΏΠ΅Ρ€Ρ†Π΅Π½Ρ‚ΠΈΠ» Π΅ блиску Π΄ΠΎ 10 ms, Π²Π°ΡˆΠ°Ρ‚Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° Π΅ Π±Π΅Π· Π±Ρ€Π·ΠΈΠ½Π°.
  • Π—Π΅ΠΌΠ΅Ρ‚Π΅ ја Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° Π€ΠΈΠΎ Π½Π΅ ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ ΠΎΠ΄ 3.5 (ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ Π½Π΅ ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π°Π°Ρ‚ ΠΏΠ΅Ρ€Ρ†Π΅Π½Ρ‚ΠΈΠ»ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚Ρ€Π°Π΅ΡšΠ΅ Π½Π° fdatasync).
  • ΠŸΠΎΠ³ΠΎΡ€Π΅ Π΅ само Π΄Π΅Π» ΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΠ΄ fio.

Π”ΠΎΠ»Π³Π° ΠΏΡ€ΠΈΠΊΠ°Π·Π½Π° Π·Π° Fio ΠΈ etcd

Π¨Ρ‚ΠΎ Π΅ WAL Π²ΠΎ ΠΈΡ‚Π½

ΠžΠ±ΠΈΡ‡Π½ΠΎ користат Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π΄Π½Π΅Π²Π½ΠΈΠΊ Π·Π° ΠΎΠ΄Π½Π°ΠΏΡ€Π΅Π΄ Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅; Π³ΠΎ користи ΠΈ etcd. ОвдС Π½Π΅ΠΌΠ° Π΄Π΅Ρ‚Π°Π»Π½ΠΎ Π΄Π° Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€Π°ΠΌΠ΅ Π·Π° Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ‚ Π·Π° ΠΎΠ΄Π½Π°ΠΏΡ€Π΅Π΄ Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ (WAL). Π”ΠΎΠ²ΠΎΠ»Π½ΠΎ Π΅ Π΄Π° Π·Π½Π°Π΅ΠΌΠ΅ Π΄Π΅ΠΊΠ° сСкој Ρ‡Π»Π΅Π½ Π½Π° кластСрот etcd Π³ΠΎ ΠΎΠ΄Ρ€ΠΆΡƒΠ²Π° Π²ΠΎ ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅. etcd ја Π·Π°ΠΏΠΈΡˆΡƒΠ²Π° сСкоја ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° со врСдност Π½Π° ΠΊΠ»ΡƒΡ‡ΠΎΡ‚ (ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ΅) Π²ΠΎ WAL ΠΏΡ€Π΅Π΄ Π΄Π° ја ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈ Π²ΠΎ ΠΏΡ€ΠΎΠ΄Π°Π²Π½ΠΈΡ†Π°Ρ‚Π°. Ако нСкој ΠΎΠ΄ Ρ‡Π»Π΅Π½ΠΎΠ²ΠΈΡ‚Π΅ Π½Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ ΠΏΠ°Π΄Π½Π΅ ΠΈ сС рСстартира ΠΏΠΎΠΌΠ΅Ρ“Ρƒ снимкитС, ΠΌΠΎΠΆΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ Π΄Π° Π³ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈ трансакциитС ΠΎΠ΄ послСдната снимка спорСд содрТината Π½Π° WAL.

Кога ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ Π΄ΠΎΠ΄Π°Π²Π° ΠΊΠ»ΡƒΡ‡ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ со врСдност Π½Π° ΠΊΠ»ΡƒΡ‡ΠΎΡ‚ ΠΈΠ»ΠΈ ја Π°ΠΆΡƒΡ€ΠΈΡ€Π° врСдноста Π½Π° постоСчкиот ΠΊΠ»ΡƒΡ‡, ΠΈΡ‚Π½. etcd МОРА Π΄Π° Π±ΠΈΠ΄Π΅ цСлосно сигурСн Π΄Π΅ΠΊΠ° Π²Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ WAL навистина сС случило ΠΏΡ€Π΅Π΄ Π΄Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈ со ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°. На Linux, Π΅Π΄Π΅Π½ систСмски ΠΏΠΎΠ²ΠΈΠΊ Π½Π΅ Π΅ Π΄ΠΎΠ²ΠΎΠ»Π΅Π½ Π·Π° ΠΎΠ²Π°. ΠΏΠΈΡˆΡƒΠ²Π°ΠΌ, бидСјќи вистинското Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ Ρ„ΠΈΠ·ΠΈΡ‡ΠΊΠΎΡ‚ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½ΠΎ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Linux ΠΌΠΎΠΆΠ΅ Π΄Π° складира запис Π½Π° WAL Π²ΠΎ кСш Π²ΠΎ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ (ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ ΠΊΠ΅ΡˆΠΎΡ‚ Π½Π° страницата) Π½Π΅ΠΊΠΎΠ΅ Π²Ρ€Π΅ΠΌΠ΅. И Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ Π΄Π° сС Π·Π°ΠΏΠΈΡˆΠ°Ρ‚ Π½Π° ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅, ΠΏΠΎΡ‚Ρ€Π΅Π±Π΅Π½ Π΅ систСмски ΠΏΠΎΠ²ΠΈΠΊ fdatasync ΠΏΠΎ Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ, Π° etcd само Π³ΠΎ користи (ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π²ΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΎΡ‚ ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Ρ‚Ρ€Π°Π³Π°, ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ 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 ΠΈΠΌ Ρ‚Ρ€Π΅Π±Π°Π°Ρ‚ ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ ΠΎΠ΄ 10 ms Π·Π° Π΄Π° сС Π·Π°ΠΏΠΈΡˆΠ°Ρ‚ Π²ΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° WAL. ΠŸΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ корисни ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅, Π½ΠΎ Π²ΠΎ овој пост Π·Π±ΠΎΡ€ΡƒΠ²Π°ΠΌΠ΅ само Π·Π° ΠΎΠ²Π°Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°.

ΠŸΡ€ΠΎΡ†Π΅Π½ΠΊΠ° Π½Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ со fio

Ако Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅ Π΄Π°Π»ΠΈ Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π΅ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ Π·Π° etcd, користСтС fio, ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΠΎΠΏΡƒΠ»Π°Ρ€Π½Π° Π°Π»Π°Ρ‚ΠΊΠ° Π·Π° Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π°ΡšΠ΅ Π’/И. Π’Ρ€Π΅Π±Π° Π΄Π° сС Π·Π°ΠΏΠΎΠΌΠ½ΠΈ Π΄Π΅ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° дискот ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ ΠΌΠ½ΠΎΠ³Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ: синхрони ΠΈ асинхрони, ΠΌΠ½ΠΎΠ³Ρƒ класи Π½Π° систСмски ΠΏΠΎΠ²ΠΈΡ†ΠΈ ΠΈΡ‚Π½. Како Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ°, fio Π΅ доста Ρ‚Π΅ΡˆΠΊΠΎ Π΄Π° сС користи. Има ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ, Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π½Π° Π½ΠΈΠ²Π½ΠΈΡ‚Π΅ врСдности создаваат ΠΌΠ½ΠΎΠ³Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π’/И ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ°. Π—Π° Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅Ρ‚Π΅ соодвСтни Π±Ρ€ΠΎΡ˜ΠΊΠΈ Π·Π° ΠΈΡ‚Π½.

Π—Π°Ρ‚ΠΎΠ°, fio Ρ‚Ρ€Π΅Π±Π°, ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Π΄Π° создадС ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ° Π½Π° ΡΠ΅Ρ€ΠΈΡ˜Π° послСдоватСлни Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ° Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π°, сСкоС Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ ќС сС состои ΠΎΠ΄ систСмски ΠΏΠΎΠ²ΠΈΠΊ ΠΏΠΈΡˆΡƒΠ²Π°ΠΌΠΏΡ€ΠΎΡΠ»Π΅Π΄Π΅Π½ΠΎ со систСмскиот ΠΏΠΎΠ²ΠΈΠΊ fdatasync. Π‘Π΅ΠΊΠ²Π΅Π½Ρ†ΠΈΡ˜Π°Π»Π½ΠΈΡ‚Π΅ Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ° Π²ΠΎ fio Π±Π°Ρ€Π°Π°Ρ‚ ΠΎΠΏΡ†ΠΈΡ˜Π° --rw=write. Π—Π° fio Π΄Π° Π³ΠΎ користи систСмот Π·Π° ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅, ΠΏΠΎΠ²ΠΈΠΊ ΠΏΡ€ΠΈ ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅, намСсто ΠΏΠΈΡˆΡƒΠ²Π°Π°Ρ‚, Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΎ Π½Π°Π²Π΅Π΄Π΅Ρ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ΠΎΡ‚ --ioengine=sync. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π·Π° Π΄Π° ΠΏΠΎΠ²ΠΈΠΊΠ°Ρ‚Π΅ fdatasync послС сСкоС Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅, Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΎ Π΄ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ΠΎΡ‚ --fdatasync=1. Π”Ρ€ΡƒΠ³ΠΈΡ‚Π΅ Π΄Π²Π΅ ΠΎΠΏΡ†ΠΈΠΈ Π²ΠΎ овој ΠΏΡ€ΠΈΠΌΠ΅Ρ€ (--size ΠΈ -bs) сС спСцифични Π·Π° скриптата. Π’ΠΎ слСдниот Π΄Π΅Π», ќС Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΈ поставитС.

Π—ΠΎΡˆΡ‚ΠΎ Ρ‚ΠΎΠΊΠΌΡƒ Ρ„ΠΈΠΎ ΠΈ ΠΊΠ°ΠΊΠΎ Π½Π°ΡƒΡ‡ΠΈΠ²ΠΌΠ΅ Π΄Π° Π³ΠΎ поставимС

Π’ΠΎ овој пост, ΠΎΠΏΠΈΡˆΡƒΠ²Π°ΠΌΠ΅ вистински ΡΠ»ΡƒΡ‡Π°Ρ˜. ИмамС кластСр ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚ΠΈ v1.13 ΡˆΡ‚ΠΎ Π³ΠΎ слСдСвмС со ΠŸΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜. etcd v3.2.24 бСшС хостиран Π½Π° SSD. Etcd ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°Ρ‚Π° ΠΏΠΎΠΊΠ°ΠΆΠ°Π»Π° прСвисока латСнтност Π½Π° fdatasync, Π΄ΡƒΡ€ΠΈ ΠΈ ΠΊΠΎΠ³Π° кластСрот Π½Π΅ ΠΏΡ€Π°Π²Π΅Π» Π½ΠΈΡˆΡ‚ΠΎ. ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠ°Ρ‚Π° бСшС Ρ‡ΡƒΠ΄Π½Π° ΠΈ навистина Π½Π΅ Π·Π½Π°Π΅Π²ΠΌΠ΅ ΡˆΡ‚ΠΎ Π·Π½Π°Ρ‡Π°Ρ‚. ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΎΡ‚ сС ΡΠΎΡΡ‚ΠΎΠ΅ΡˆΠ΅ ΠΎΠ΄ Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ машини, бСшС Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½ΠΎ Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π΅ ΡˆΡ‚ΠΎ Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΡ‚: Π²ΠΎ Ρ„ΠΈΠ·ΠΈΡ‡ΠΊΠΈ SSD-дискови ΠΈΠ»ΠΈ Π²ΠΎ ΡΠ»ΠΎΡ˜ΠΎΡ‚ Π·Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ, чСсто ΠΏΡ€Π°Π²Π΅Π²ΠΌΠ΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° Ρ…Π°Ρ€Π΄Π²Π΅Ρ€ΠΎΡ‚ ΠΈ софтвСрот ΠΈ Π½ΠΈ Ρ‚Ρ€Π΅Π±Π°ΡˆΠ΅ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° Π³ΠΈ ΠΎΡ†Π΅Π½ΠΈΠΌΠ΅ Π½ΠΈΠ²Π½ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ. МоТСмС Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌΠ΅ etcd Π²ΠΎ сСкоја ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° ΠΈ Π΄Π° Π³ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈΡ‚Π΅ Π½Π° Prometheus, Π½ΠΎ Ρ‚ΠΎΠ° Π΅ ΠΏΡ€Π΅Π³ΠΎΠ»Π΅ΠΌΠ° ΠΌΠ°ΠΊΠ°. Π‘Π°Ρ€Π°Π²ΠΌΠ΅ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ СдноставСн Π½Π°Ρ‡ΠΈΠ½ Π΄Π° ΠΎΡ†Π΅Π½ΠΈΠΌΠ΅ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°. Π‘Π°ΠΊΠ°Π²ΠΌΠ΅ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌΠ΅ Π΄Π°Π»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ја Ρ€Π°Π·Π±ΠΈΡ€Π°ΠΌΠ΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°Ρ‚Π° Π½Π° ΠŸΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜ ΠΎΠ΄ etcd.

Но, Π·Π° ΠΎΠ²Π° Ρ‚Ρ€Π΅Π±Π°ΡˆΠ΅ Π΄Π° сС Ρ€Π΅ΡˆΠ°Ρ‚ Π΄Π²Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. ΠŸΡ€Π²ΠΎ, ΠΊΠ°ΠΊΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π° Π’/И ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ ΡˆΡ‚ΠΎ Π³ΠΎ создава etcd ΠΏΡ€ΠΈ ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π²ΠΎ WAL? Кои систСмски ΠΏΠΎΠ²ΠΈΡ†ΠΈ сС користат? Која Π΅ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°Ρ‚Π° Π½Π° записитС? Π’Ρ‚ΠΎΡ€ΠΎ, Π°ΠΊΠΎ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌΠ΅ Π½Π° ΠΎΠ²ΠΈΠ΅ ΠΏΡ€Π°ΡˆΠ°ΡšΠ°, ΠΊΠ°ΠΊΠΎ Π΄Π° Ρ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΡ†ΠΈΡ€Π°ΠΌΠ΅ сличСн ΠΎΠ±Π΅ΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° со fio? НС Π·Π°Π±ΠΎΡ€Π°Π²Π°Ρ˜Ρ‚Π΅ Π΄Π΅ΠΊΠ° fio Π΅ ΠΌΠ½ΠΎΠ³Ρƒ флСксибилна Π°Π»Π°Ρ‚ΠΊΠ° со ΠΌΠ½ΠΎΠ³Ρƒ ΠΎΠΏΡ†ΠΈΠΈ. Π“ΠΈ Ρ€Π΅ΡˆΠΈΠ²ΠΌΠ΅ Π΄Π²Π°Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎ Π΅Π΄Π΅Π½ пристап - ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅ лсоф ΠΈ Ρ‚Ρ€Π°Π³Π°. lsof Π³ΠΈ Π½Π°Π²Π΅Π΄ΡƒΠ²Π° ситС дСскриптори Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ ΡˆΡ‚ΠΎ сС користат Π²ΠΎ процСсот ΠΈ Π½ΠΈΠ²Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ. И со ΡˆΡ‚Ρ€Π°Ρ˜Ρ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° испитатС вСќС ΠΈΠ·Π²Ρ€ΡˆΠ΅Π½ процСс, ΠΈΠ»ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ процСс ΠΈ Π΄Π° Π³ΠΎ испитатС. strace Π³ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ ситС систСмски ΠΏΠΎΠ²ΠΈΡ†ΠΈ ΠΎΠ΄ процСсот ΡˆΡ‚ΠΎ сС испитува (ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ Π²Ρ‚ΠΎΡ€ΠΈ процСси). ПослСдново Π΅ ΠΌΠ½ΠΎΠ³Ρƒ Π²Π°ΠΆΠ½ΠΎ, бидСјќи etcd само Π·Π°Π·Π΅ΠΌΠ° сличСн пристап.

ΠŸΡ€Π²ΠΎ користСвмС strace Π·Π° Π΄Π° Π³ΠΎ истраТимС сСрвСрот etcd Π·Π° Kubernetes ΠΊΠΎΠ³Π° нСмашС ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° кластСрот. Π’ΠΈΠ΄ΠΎΠ²ΠΌΠ΅ Π΄Π΅ΠΊΠ° скоро ситС записи Π½Π° WAL Π±Π΅Π° ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ со иста Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°: 2200–2400 Π±Π°Ρ˜Ρ‚ΠΈ. Π—Π°Ρ‚ΠΎΠ°, Π²ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π½Π° ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊΠΎΡ‚ Π½Π° постот, Π³ΠΎ Π½Π°Π²Π΅Π΄ΠΎΠ²ΠΌΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ΠΎΡ‚ -bs=2300 (bs Π·Π½Π°Ρ‡ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π²ΠΎ Π±Π°Ρ˜Ρ‚ΠΈ Π·Π° сСкој Ρ„ΠΈΠΎ запис). Π˜ΠΌΠ°Ρ˜Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°Ρ‚Π° Π½Π° записот etcd зависи ΠΎΠ΄ Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° etcd, Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π°Ρ‚Π°, врСдноститС Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ ΠΈΡ‚Π½., ΠΈ влијаС Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚Ρ€Π°Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° fdatasync. Ако ΠΈΠΌΠ°Ρ‚Π΅ слично сцСнарио, ΠΈΡΠΏΠΈΡ‚Π°Ρ˜Ρ‚Π΅ Π³ΠΈ Π²Π°ΡˆΠΈΡ‚Π΅ процСси ΠΈΡ‚Π½.Π΄.

ΠŸΠΎΡ‚ΠΎΠ°, Π·Π° Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅ΠΌΠ΅ Π΄ΠΎΠ±Ρ€Π° идСја Π·Π° Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈΠΎΡ‚ систСм etcd, Π³ΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π°Π²ΠΌΠ΅ со strace ΠΈ ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ -ffttT. Π—Π°Ρ‚ΠΎΠ°, сС ΠΎΠ±ΠΈΠ΄ΠΎΠ²ΠΌΠ΅ Π΄Π° Π³ΠΈ испитамС дСтскитС процСси ΠΈ Π΄Π° Π³ΠΎ снимимС ΠΈΠ·Π»Π΅Π·ΠΎΡ‚ ΠΎΠ΄ сСкој ΠΎΠ΄ Π½ΠΈΠ² Π²ΠΎ посСбна Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°, Π° исто Ρ‚Π°ΠΊΠ° Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅ΠΌΠ΅ Π΄Π΅Ρ‚Π°Π»Π½ΠΈ ΠΈΠ·Π²Π΅ΡˆΡ‚Π°ΠΈ Π·Π° ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊΠΎΡ‚ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Ρ‚Ρ€Π°Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° сСкој систСмски ΠΏΠΎΠ²ΠΈΠΊ. Π“ΠΎ користСвмС lsof Π·Π° Π΄Π° ја ΠΏΠΎΡ‚Π²Ρ€Π΄ΠΈΠΌΠ΅ Π½Π°ΡˆΠ°Ρ‚Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΠΈΠ·Π»Π΅Π·ΠΎΡ‚ Π½Π° трасата ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ кој дСскриптор Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° сС користи Π·Π° која Ρ†Π΅Π». Π’Π°ΠΊΠ°, со помош Π½Π° Ρ‚Ρ€Π°Ρ˜Ρ сС Π΄ΠΎΠ±ΠΈΠ΅Π½ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΊΠ°ΠΆΠ°Π½ΠΈ ΠΏΠΎΠ³ΠΎΡ€Π΅. Бтатистиката Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° ΠΏΠΎΡ‚Π²Ρ€Π΄ΠΈ Π΄Π΅ΠΊΠ° wal_fsync_duration_seconds ΠΎΠ΄ etcd Π΅ конзистСнтна со ΠΏΠΎΠ²ΠΈΡ†ΠΈΡ‚Π΅ fdatasync со дСскриптори Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ WAL.

ПоминавмС Π½ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° fio ΠΈ ΠΈΠ·Π±Ρ€Π°Π²ΠΌΠ΅ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° Π½Π°ΡˆΠ°Ρ‚Π° скрипта, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ fio ќС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ слично Π½Π° etcd. Π“ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ²ΠΌΠ΅ ΠΈ систСмскитС ΠΏΠΎΠ²ΠΈΡ†ΠΈ ΠΈ Π½ΠΈΠ²Π½ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅Ρ‚Ρ€Π°Π΅ΡšΠ΅ со ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° fio ΠΎΠ΄ strace, слично Π½Π° etcd.

Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΎ ја ΠΈΠ·Π±Ρ€Π°Π²ΠΌΠ΅ врСдноста Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ΠΎΡ‚ --size Π·Π° Π΄Π° Π³ΠΎ прСтстави Ρ†Π΅Π»ΠΎΡ‚ΠΎ I/O ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ ΠΎΠ΄ fio. Π’ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ ΡΠ»ΡƒΡ‡Π°Ρ˜, ΠΎΠ²Π° Π΅ Π²ΠΊΡƒΠΏΠ½ΠΈΠΎΡ‚ Π±Ρ€ΠΎΡ˜ Π½Π° Π±Π°Ρ˜Ρ‚ΠΈ запишани Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ. Π‘Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ° Π΄Π΅ΠΊΠ° Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ Π½Π° Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° систСмски ΠΏΠΎΠ²ΠΈΡ†ΠΈ Π·Π° ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ (ΠΈ fdatasync). Π—Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° врСдност Π½Π° bs, Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° fdatasync ΠΏΠΎΠ²ΠΈΡ†ΠΈ = Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°/бс. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ Π±Π΅Π²ΠΌΠ΅ заинтСрСсирани Π·Π° ΠΏΠ΅Ρ€Ρ†Π΅Π½Ρ‚ΠΈΠ»ΠΎΡ‚, ΠΌΠΎΡ€Π°Π²ΠΌΠ΅ Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ†ΠΈ Π·Π° Π΄Π° Π±ΠΈΠ΄Π΅ΠΌΠ΅ сигурни, ΠΈ прСсмСтавмС Π΄Π΅ΠΊΠ° ќС Π½ΠΈ Π±ΠΈΠ΄Π°Ρ‚ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΈ 10^4 (Ρ‚ΠΎΠ° сС 22 ΠΌΠ΅Π±ΠΈΠ±Π°Ρ˜Ρ‚ΠΈ). Ако --size Π΅ ΠΏΠΎΠΌΠ°Π»Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΠΎΡ˜Π°Π²Π°Ρ‚ ΠΎΠ΄Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΈ (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ fdatasync ΠΏΠΎΠ²ΠΈΡ†ΠΈ Ρ‚Ρ€Π°Π°Ρ‚ ΠΏΠΎΠ΄ΠΎΠ»Π³ΠΎ ΠΎΠ΄ Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΎΡ‚ΠΎ ΠΈ Π²Π»ΠΈΡ˜Π°Π°Ρ‚ Π½Π° 99-ΠΎΡ‚ ΠΏΠ΅Ρ€Ρ†Π΅Π½Ρ‚ΠΈΠ»).

ΠžΠ±ΠΈΠ΄Π΅Ρ‚Π΅ сС сами

Π’ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ°Π²ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° користитС fio ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π΄Π°Π»ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ Π±Ρ€Π·ΠΎ Π·Π° etcd Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π΄ΠΎΠ±Ρ€ΠΎ. Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сами Π΄Π° Π³ΠΎ испробатС ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ машини со ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° SSD IBM Cloud.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€