ΠΠΎΡΠΎΡΠΊΠ°Ρ ΠΈΡΡΠΎΡΠΈΡ ΠΎ fio ΠΈ etcd
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°
fio --rw=write --ioengine=sync --fdatasync=1 --directory=test-data --size=22m --bs=2300 --name=mytest
ΠΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ 99-ΠΉ ΠΏΡΠΎΡΠ΅Π½ΡΠΈΠ»Ρ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
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 Π²Π½ΠΎΡΠΈΡ Π·Π°ΠΏΠΈΡΡ ΠΎΠ± ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² WAL, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Π² ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠΌ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅. ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ, etcd ΠΠΠΠΠΠ Π±ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ Π·Π°ΠΏΠΈΡΡ Π² WAL Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π°. Π Linux Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°
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 ΠΏΠ°Π΄Π°Π΅Ρ.
ΠΡΠ΅Π½ΠΊΠ° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ fio
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠ΅Π½ΠΈΡΡ, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π»ΠΈ Π²Π°ΡΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π»Ρ etcd, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ fio β ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°. Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ Π΄ΠΈΡΠΊΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°ΠΌΡΠΌΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ: ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅, ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΈ Ρ. Π΄. ΠΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ β fio Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. Π£ Π½Π΅Π³ΠΎ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΈ ΡΠ°Π·Π½ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²ΡΠ΄Π°ΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ΠΏΠΎΡ ΠΎΠΆΠΈΠ΅ ΡΠ°Π±ΠΎΡΠΈΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΡΠ΅ ΡΠΈΡΡΡ Π΄Π»Ρ etcd, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΠ΅ΡΡΠΎΠ²Π°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ° Π·Π°ΠΏΠΈΡΠΈ ΠΎΡ fio ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π±Π»ΠΈΠ·ΠΊΠ° ΠΊ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΎΡ etcd ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² WAL.
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, fio Π΄ΠΎΠ»ΠΆΠ΅Π½, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π² Π²ΠΈΠ΄Π΅ ΡΡΠ΄Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°ΠΉΠ», ΠΊΠ°ΠΆΠ΄Π°Ρ Π·Π°ΠΏΠΈΡΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°
ΠΠΎΡΠ΅ΠΌΡ ΠΈΠΌΠ΅Π½Π½ΠΎ fio ΠΈ ΠΊΠ°ΠΊ ΠΌΡ Π½Π°ΡΡΠΈΠ»ΠΈΡΡ Π΅Π³ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ
Π ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΅ ΠΌΡ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ. Π£ Π½Π°Ρ Π±ΡΠ» ΠΊΠ»Π°ΡΡΠ΅Ρ
ΠΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ΅ΡΠΈΡΡ Π΄Π²Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠ° Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΡ etcd ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² WAL? ΠΠ°ΠΊΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ? ΠΠ°ΠΊΠΎΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ? ΠΠΎ-Π²ΡΠΎΡΡΡ
, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΎΡΠ²Π΅ΡΠΈΠΌ Π½Π° ΡΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ, ΠΊΠ°ΠΊ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Ρ fio? ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅, ΡΡΠΎ fio β ΠΎΡΠ΅Π½Ρ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΎΠ±Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠΌ β Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ 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 Π²
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com