ΠΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².: ΡΡΠ° ΡΡΠ°ΡΡΡ β ΠΈΡΠΎΠ³ΠΈ ΠΌΠΈΠ½ΠΈ-ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ°ΠΌΠΈ IBM Cloud Π² ΠΏΠΎΠΈΡΠΊΠ°Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ Ρ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠ΅ΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ etcd. ΠΠ»Ρ Π½Π°Ρ Π±ΡΠ»Π° Π°ΠΊΡΡΠ°Π»ΡΠ½Π° ΡΡ ΠΎΠΆΠ°Ρ Π·Π°Π΄Π°ΡΠ°, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ ΠΎΠ΄ ΡΠ°Π·ΠΌΡΡΠ»Π΅Π½ΠΈΠΉ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π°Π²ΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅.
ΠΡΠ°ΡΠΊΠΎΠ΅ ΡΠ΅Π·ΡΠΌΠ΅ Π²ΡΠ΅ΠΉ ΡΡΠ°ΡΡΠΈ: fio ΠΈ etcd
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° etcd ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΊΠΎΡΠΎΡΡΠΈ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, Π»Π΅ΠΆΠ°ΡΠ΅Π³ΠΎ Π² Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π΅. ΠΠ»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ etcd ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Prometheus. ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ
ΡΠ²Π»ΡΠ΅ΡΡΡ wal_fsync_duration_seconds
. Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ etcd
ΠΡΠ»ΠΈ Π²Ρ ΠΎΠ±Π΄ΡΠΌΡΠ²Π°Π΅ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° etcd Π½Π° ΠΌΠ°ΡΠΈΠ½Π°Ρ
ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Linux ΠΈ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π»ΠΈ Π±ΡΡΡΡΡ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, SSD), ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ ΡΠ΅ΡΡΠ΅ΡΠΎΠΌ I/O ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ test-data
Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° Π² ΠΏΡΠΈΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»Ρ):
fio --rw=write --ioengine=sync --fdatasync=1 --directory=test-data --size=22m --bs=2300 --name=mytest
ΠΡΡΠ°Π»ΠΎΡΡ Π»ΠΈΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° Π²ΡΠ²ΠΎΠ΄ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ Π»ΠΈ 99-ΠΉ ΠΏΡΠΎΡΠ΅Π½ΡΠΈΠ»Ρ fdatasync
fsync/fdatasync/sync_file_range:
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
Π½Π°Π³ΡΡΠΆΠ°Π΅Ρ Π΄ΠΈΡΠΊΠΎΠ²ΡΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ. Π ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΡΠΎ Π½Π° Π΄ΠΈΡΠΊ Π±ΡΠ΄ΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ (ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΠ΅Ρ , ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½Ρ Ρwal_fsync_duration_seconds
). ΠΠΎΠ΄ΠΎΠ±Π½Π°Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡwal_fsync_duration_seconds
. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π΅ΡΠ»ΠΈ 99-ΠΉ ΠΏΡΠΎΡΠ΅Π½ΡΠΈΠ»Ρ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΏΠΎ ΠΈΡΠΎΠ³Π°ΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρfio
, Π»ΠΈΡΡ ΡΠ»Π΅Π³ΠΊΠ° ΠΌΠ΅Π½ΡΡΠ΅ 10 ΠΌΡ, Π²Π΅Π»ΠΈΠΊΠ° Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½Π°. - ΠΠ»Ρ ΡΠ΅ΡΡΠ° Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π²Π΅ΡΡΠΈΡ
fio
Π½Π΅ Π½ΠΈΠΆΠ΅ 3.5, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π΅ Π°Π³ΡΠ΅Π³ΠΈΡΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡfdatasync
Π² Π²ΠΈΠ΄Π΅ ΠΏΡΠΎΡΠ΅Π½ΡΠΈΠ»Π΅ΠΉ. - ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ Π²ΡΠ²ΠΎΠ΄ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π»ΠΈΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΡΡΡΠ²ΠΎΠΊ ΠΎΡ ΠΎΠ±ΡΠ΅Π³ΠΎ Π²ΡΠ²ΠΎΠ΄Π°
fio
.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎ fio ΠΈ etcd
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠ² ΠΎ WAL’Π°Ρ etcd
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊΠ»ΡΡ Π² KV-Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»ΡΡΠ°, etcd Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² WAL, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Π² ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠΌ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅. ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ°Π±ΠΎΡΡ, etcd ΠΠΠΠΠΠ Π±ΡΡΡ Π½Π° 100% ΡΠ²Π΅ΡΠ΅Π½Π°, ΡΡΠΎ Π·Π°ΠΏΠΈΡΡ Π² WAL Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π°. Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΡΠΎΠ³ΠΎ Π² Linux, Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² write
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. Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΡ fdatasync
ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°ΠΉΠ» WAL Π±ΡΠ»Π° ΠΌΠ΅Π½ΡΡΠ΅ 10 ΠΌΡ. ΠΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ, Π½ΠΎ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΏΠΎΠΉΠ΄Π΅Ρ ΡΠ΅ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΉ.
ΠΡΠ΅Π½ΠΈΠ²Π°Π΅ΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ fio
ΠΡΠ΅Π½ΠΈΡΡ, ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ Π»ΠΈ Π½Π΅ΠΊΠΎΠ΅ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ etcd, ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΈΠ»ΠΈΡΡ fio
ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½Π° Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ. Π£ ΡΡΠΈΠ»ΠΈΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΈΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠ°Π·Π½ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΎΡΠ΅Π½ΠΊΡ Π² ΡΠ»ΡΡΠ°Π΅ etcd, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π½Π°Π³ΡΡΠ·ΠΊΠ° Π½Π° Π·Π°ΠΏΠΈΡΡ, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΠ°Ρ fio, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΡ
ΠΎΠ΄ΠΈΡ Π½Π° Π½Π°Π³ΡΡΠ·ΠΊΡ etcd ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² WAL-ΡΠ°ΠΉΠ»Ρ:
- ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
fio
Π½Π°Π³ΡΡΠ·ΠΊΠ°, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΡΠ΅ΡΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΡΠ°ΠΉΠ», Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°ΠΏΠΈΡΠΈ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° , Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρwrite
fdatasync
. - Π§ΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ»Π°Π³
--rw=write
. - Π§ΡΠΎΠ±Ρ
fio
ΠΏΠΈΡΠ°Π»Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠ²write
(Π° Π½Π΅ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π°Π³pwrite
--ioengine=sync
. - ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΠ»Π°Π³
--fdatasync=1
Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π·Π° ΠΊΠ°ΠΆΠ΄ΡΠΌwrite
ΡΠ»Π΅Π΄ΡΠ΅Ρfdatasync
. - ΠΠ²Π° Π΄ΡΡΠ³ΠΈΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
--size
ΠΈ--bs
β ΠΌΠΎΠ³ΡΡ ΠΌΠ΅Π½ΡΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΠΈΡΠ°Π½Π° ΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°.
ΠΠΎΡΠ΅ΠΌΡ ΠΌΡ Π²ΡΠ±ΡΠ°Π»ΠΈ fio ΠΈ ΠΎΡΠΊΡΠ΄Π° ΡΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ
ΠΡΠ° Π·Π°ΠΌΠ΅ΡΠΊΠ° ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΈΠ· ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ. Π£ Π½Π°Ρ Π±ΡΠ» ΠΊΠ»Π°ΡΡΠ΅Ρ Π½Π° Kubernetes v1.13 Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΠΎΠΌ Π½Π° Prometheus. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π΄Π»Ρ etcd v3.2.24 Π²ΡΡΡΡΠΏΠ°Π»ΠΈ ΡΠ²Π΅ΡΠ΄ΠΎΡΠ΅Π»ΡΠ½ΡΠ΅ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΠΈ. ΠΠ΅ΡΡΠΈΠΊΠΈ etcd ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π²ΡΡΠΎΠΊΠΈΠ΅ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ fdatasync
, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΏΡΠΎΡΡΠ°ΠΈΠ²Π°Π». ΠΠ°ΠΌ ΡΡΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΊΠ°Π·Π°Π»ΠΈΡΡ Π²Π΅ΡΡΠΌΠ° ΡΠΎΠΌΠ½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ, ΠΈ ΠΌΡ Π½Π΅ Π±ΡΠ»ΠΈ ΡΠ²Π΅ΡΠ΅Π½Ρ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ. ΠΠ΄ΠΎΠ±Π°Π²ΠΎΠΊ, ΠΊΠ»Π°ΡΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ» ΠΈΠ· Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ
ΠΌΠ°ΡΠΈΠ½, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Π»ΠΎΡΡ ΡΠΊΠ°Π·Π°ΡΡ, Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π±ΡΠ»Π° ΡΠ²ΡΠ·Π°Π½Π° Ρ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌ Π²ΠΈΠ½ΠΎΠ²Π°ΡΡ SSD.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΡΡ ΡΠΏΠΎΡΠΎΠ± ΠΈΡ ΠΎΡΠ΅Π½ΠΊΠΈ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ etcd Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Prometheus, Π½ΠΎ ΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎ Π±Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠΈΠ»ΠΈΠΉ. ΠΠ°ΠΌ ΠΆΠ΅ Π±ΡΠ» Π½ΡΠΆΠ΅Π½ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΎΡΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ. ΠΡ Ρ ΠΎΡΠ΅Π»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ²ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΌΠ΅ΡΡΠΈΠΊ Prometheus, ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΡ ΠΎΡ etcd.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ ΡΠ΅ΡΠΈΡΡ Π΄Π²Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ:
- ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ I/O-Π½Π°Π³ΡΡΠ·ΠΊΠ°, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΠ°Ρ etcd ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°ΠΉΠ»Ρ WAL? ΠΠ°ΠΊΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ? ΠΠ°ΠΊΠΎΠ² ΡΠ°Π·ΠΌΠ΅Ρ Π±Π»ΠΎΠΊΠΎΠ² Π·Π°ΠΏΠΈΡΠΈ?
- ΠΠΎ-Π²ΡΠΎΡΡΡ
, Π΄ΠΎΠΏΡΡΡΠΈΠΌ, ΠΎΡΠ²Π΅ΡΡ Π½Π° Π²ΡΡΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ. ΠΠ°ΠΊ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Ρ
fio
? ΠΠ΅Π΄Ρfio
β ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ Π³ΠΈΠ±ΠΊΠ°Ρ ΡΡΠΈΠ»ΠΈΡΠ° Ρ ΠΎΠ±ΠΈΠ»ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² (Π² ΡΡΠΎΠΌ Π»Π΅Π³ΠΊΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,Π·Π΄Π΅ΡΡ Ββ ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².).
ΠΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΎΠ±Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π°, ΠΎΠΏΠΈΡΠ°ΡΡΠ΅Π³ΠΎΡΡ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ lsof
strace
- Π‘ ΠΏΠΎΠΌΠΎΡΡΡ
lsof
ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ½ΠΈ ΠΎΡΠ½ΠΎΡΡΡΡΡ. - Π‘ ΠΏΠΎΠΌΠΎΡΡΡ
strace
ΠΌΠΎΠΆΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΆΠ΅ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈ ΠΏΠΎΠ½Π°Π±Π»ΡΠ΄Π°ΡΡ Π·Π° Π½ΠΈΠΌ. ΠΠΎΠΌΠ°Π½Π΄Π° Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ, ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΠΈ, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π΅Π³ΠΎ ΠΏΠΎΡΠΎΠΌΠΊΠ°ΠΌΠΈ. ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡΠΊΠ°Π΅ΡΡΡ, ΠΈ etcd β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ².
ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ, β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ strace
Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ° etcd Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Kubernetes, ΠΏΠΎΠΊΠ° ΡΠΎΡ ΠΏΡΠΎΡΡΠ°ΠΈΠ²Π°Π».
Π’Π°ΠΊ Π±ΡΠ»ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΎ, ΡΡΠΎ Π±Π»ΠΎΠΊΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² WAL ΠΎΡΠ΅Π½Ρ ΠΏΠ»ΠΎΡΠ½ΠΎ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Ρ, ΡΠ°Π·ΠΌΠ΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π»Π΅ΠΆΠ°Π» Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 2200-2400 Π±Π°ΠΉΡ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ»Π°Π³ --bs=2300
(bs
β ΡΠ°Π·ΠΌΠ΅Ρ Π² Π±Π°ΠΉΡΠ°Ρ
ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π·Π°ΠΏΠΈΡΠΈ Π² fio
).
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ Π±Π»ΠΎΠΊΠΎΠ² Π·Π°ΠΏΠΈΡΠΈ etcd ΠΌΠΎΠΆΠ΅Ρ Π²Π°ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ, deployment’Π°, Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ Ρ.Π΄. β ΡΡΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ fdatasync
. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΏΠΎΡ
ΠΎΠΆΠΈΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ strace
ΡΠ²ΠΎΠΈ ΠΏΡΠΎΡΠ΅ΡΡΡ etcd, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠ°ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΡΠΊΠΎΠ΅ ΠΈ Π²ΡΠ΅ΠΎΠ±ΡΠ΅ΠΌΠ»ΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠ°Π±ΠΎΡΠ΅ etcd Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ, ΠΌΡ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ Π΅Π΅ ΠΈΠ·-ΠΏΠΎΠ΄ strace
Ρ ΡΠ»Π°Π³Π°ΠΌΠΈ -ffttT
. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΠΎΡ
Π²Π°ΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ-ΠΏΠΎΡΠΎΠΌΠΊΠΈ ΠΈ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ». ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π±ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ΅ ΡΡΠ°ΡΡΠ° ΠΈ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ lsof
, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ ΡΠ²ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Π° strace
Π² ΠΏΠ»Π°Π½Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄Π»Ρ ΠΊΠ°ΠΊΠΎΠΉ ΡΠ΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ. ΠΠΎΠ»ΡΡΠΈΠ»ΡΡ Π²ΡΠ²ΠΎΠ΄ strace
, ΠΏΠΎΡ
ΠΎΠΆΠΈΠΉ Π½Π° ΡΠΎΡ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π²ΡΡΠ΅. Π‘ΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π°ΠΌΠΈ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΠ»ΠΈ, ΡΡΠΎ ΠΌΠ΅ΡΡΠΈΠΊΠ° wal_fsync_duration_seconds
ΠΎΡ etcd ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π²ΡΠ·ΠΎΠ²Π°ΠΌ fdatasync
Ρ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ°ΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² WAL.
Π§ΡΠΎΠ±Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ fio
ΡΠ°Π±ΠΎΡΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΎΡ etcd, Π±ΡΠ»Π° ΠΈΠ·ΡΡΠ΅Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΡΠΈΠ»ΠΈΡΡ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°Π½Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΠ΅ Π½Π°ΡΠ΅ΠΉ Π·Π°Π΄Π°ΡΠ΅. ΠΡ ΡΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Ρ Π½ΡΠΆΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ, ΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΠ»ΠΈ ΠΈΡ
ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, Π·Π°ΠΏΡΡΡΠΈΠ² fio
ΠΈΠ· strace
(ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π² ΡΠ»ΡΡΠ°Π΅ etcd).
ΠΡΠΎΠ±ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π΅Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° --size
. ΠΠ½ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±ΡΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ I/O, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ fio. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π°ΠΉΡΠΎΠ², Π·Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π½Π° Π½ΠΎΡΠΈΡΠ΅Π»Ρ. ΠΠ½ΠΎ ΠΏΡΡΠΌΠΎ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΡΠΈΡΠ»Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠ² write
(ΠΈ fdatasync
). ΠΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ bs
ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠ² fdatasync
ΡΠ°Π²Π½ΠΎ size / bs
.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π» ΠΏΡΠΎΡΠ΅Π½ΡΠΈΠ»Ρ, ΠΌΡ ΡΡΡΠ΅ΠΌΠΈΠ»ΠΈΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΡΠΈΡΠ»ΠΎ ΠΏΡΠΎΠ± Π±ΡΠ»ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΈΠΌ Π΄Π»Ρ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π·Π½Π°ΡΠΈΠΌΠΎΡΡΠΈ. Π ΡΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ 10^4
(ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΡ Π² 22 ΠΠ±) Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ. ΠΠ΅Π½ΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° --size
Π΄Π°Π²Π°Π»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½Π½ΡΠΉ ΡΡΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ·ΠΎΠ²Ρ fdatasync
, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΈ Π²Π»ΠΈΡΡΡ Π½Π° 99-ΠΉ ΠΏΡΠΎΡΠ΅Π½ΡΠΈΠ»Ρ).
ΠΠ΅Π»ΠΎ Π·Π° Π²Π°ΠΌΠΈ
Π ΡΡΠ°ΡΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ fio
ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ΅Π½ΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΡΡΡΡΡΠΌ Π½ΠΎΡΠΈΡΠ΅Π»Ρ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ etcd. Π’Π΅ΠΏΠ΅ΡΡ Π΄Π΅Π»ΠΎ Π·Π° Π²Π°ΠΌΠΈ! ΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠΈΠ½Ρ Ρ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ Π½Π° Π±Π°Π·Π΅ SSD ΠΌΠΎΠΆΠ½ΠΎ Π² ΡΠ΅ΡΠ²ΠΈΡΠ΅
P.S. ΠΎΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°
Π‘ Π³ΠΎΡΠΎΠ²ΡΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ fio
Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄ΡΡΠ³ΠΈΡ
Π·Π°Π΄Π°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Π²
P.P.S. ΠΎΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«
etcd 3.4.3: ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°Π΄ΡΠΆΠ½ΠΎΡΡΠΈ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Β»; - Β«
ΠΠ°Ρ ΠΎΠΏΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π² etcd Kubernetes-ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π½Π°ΠΏΡΡΠΌΡΡ (Π±Π΅Π· K8s API) Β»; - Β«
6 Π·Π°Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π±Π°Π³ΠΎΠ² ΠΏΡΠΈ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ Kubernetes [ΠΈ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅] Β».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com