α αααΆαα ααααααα α’ααααααααααΊααΆααααααααααΆαααααΆαααααΆαααααΆαααΌα αααααααΎα‘αΎαααααα·ααααα IBM Cloud αααα»αααΆαααααααααααααααααΆαα αααααααα αΆαα·αααααΆαααααααΆααααααΉαααααα·ααααα·ααΆαααααΌαααααΆααα·αααααα etcd α αα·α αα ααΆαααααααααααΆαααααΊααΆααααααααααααΆααααΎα αααααΆαααΆαααΆααααα ααααΎαααααΆααααα»ααααα αΆαα αα·ααααααααΆαααααα’ααααα·ααααα’αΆα αα½αα±ααα αΆααα’αΆαααααααα αααα»αααα·ααααααΌααααΌααΆαα
ααα ααααΈααααααααααΈαααα’αααααααΆααααΌαα α αααΈα’αΌ αα·α α
ααααΎαααΆαααα
ααααα etcd ααΊααΉαααα’αααααΆαααααΆαααα
ααΎααααΏαααααΆααααα»αααΌαααααΆαα etcd ααΆαα
αααααααα Prometheus αααααα ααΎααααΈααΆαααΆαααααΎαααΆαα αα½ααααα»αα
αααααα½αααααΊ wal_fsync_duration_seconds
. αα
αααα»αα―αααΆααααααΆαα αα
ααααα·αααΎα’ααααααα»ααα·α
αΆαααΆααΎααΆαααα‘αΎα etcd cluster αα
ααΎαααΆαααΈαααΈαα»α
α αΎαα
αααα·αα·αααααΎαααΆααΎ drives (ααΌα
ααΆ SSDs) ααΆαααααΏαααΏααααααααααΆαααααα¬αα ααΎαααΌαααααΆαα±ααααααΎ I/O tester ααααααα·αααααα α
ααΆ 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 ms ααααα·α ααΆαα±ααΆαααα’αααααααΎαααΆααααα»ααα·ααααααααααΆααα - αααααΆααααΆαααααΎαααααα’αααααΉαααααΌαααΆααααα
fio
αα·ααα·α ααΆα α¨α αααααΆαααααααα αΆαααα·αααα»αααααααfdatasync
αααα»αααααααααΆααΆαααα - ααΆαβααααα·ααααΆαβααΆαβααΎβαααβααααΆααβααβααΆβααΆαβααβαααααβααααα·α
ααααα½α
βααΈβααΆαβααααα·ααααΆαβααΌαα
βααα»αααααα
fio
.
αααααααααα’αααΈ fio αα·α αα
ααΆαααααΈαααΈα’αααΈ WALs ααα
ααΆααΌαα
ααΌαααααΆααα·ααααααααααΎααααΆαα
ααΌα
αααα ααΆααααααααα’αα·αα·ααααααααααΌααααα
α αΆα KV α¬ααααΎαα
αα
α»ααααααααΆαααααααααααααααΆαααααΆαα α.α. ααααααααΆααα·αααααΆα’αααΈααααα·ααααα·ααΆααα
WAL αααααΆα―αααΆαααααααΆαα
αααα»αα αΆαααΆααααΆααα etcd ααααΌαααααααΆαα 100% ααΆααΆαα» WAL αα·αααΆααααΌαααΆααααααΆαα»ααα»ααααααααΎαααΆαα ααΎααααΈαααααα
ααΆαααΆαα
ααΎααΈαα»α
ααΆαα·ααααααααααΆαααααααα»αααΆαααααΎααΆαα α
ααΆααααααααα 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$1020103026"34"rn3fo"..., 2296) = 2296 <0.000130>
21:23:09.895041 fdatasync(8) = 0 <0.008314>
ααΆα’αα»αα ααΆαααααααα
ααΆααααΆααααα»αααΆααααΆααααααΌαααΆααααααααΆααααα ααΆαααααα·ααααα·ααΌαααααΆαα α
fdatasync α’αΆα
αααααΆαααααααααΎαααΆααααα etcd α αα
αααα»αα―αααΆαααααΆαα fdatasync
αα
αααααααααα
α―αααΆα WAL ααΊαα·α
ααΆα 10 ms α ααΆααααααΆαααααααααααααααΆααααααΉαααΆααααα»α ααα»ααααα’ααααααααααΉααααααααΎααΆα
ααΆαααΆααααααααΆααααα»αααΆαα½α fio
α’αααα’αΆα
ααΆααααααααΆααΎααα ααααα»αααΆααααΆαααα½ααααααααααααΆααααααΎααΆαα½α etcd αααααααΎα§αααααααααΎααααΆαα fio
αα·ααΆαααααΎααΆααα α§αααααααααΎααααΆααααΆααααΆαααΆααααααααΆα
αααΎα α αΎαααΆααα½ααααααααααααααΆαααααααααααααΆααΆαα±ααααΆααααααααα»αααααΆααΆαααααα»αα ααΎααααΈααα½αααΆαααΆααααΆαααααααΆαααα ααα»αααααααΆαα etcd α’αααααααΌαααααΆααααΆααΆααααα»αααΆααααααααααααααΎαααα fio ααΊαα·ααααα»αααΆααααα’αΆα
ααααΎαα
ααΆαα
ααααααΆααααα»αα―αααΆα WAL αααα etcd:
- αααααΆααααααΆααΆααααααΎα
fio
ααααα»ααα½αααααΆαααααΈααααΆααααααααΆαααααααΆαα ααΆααα―αααΆα αααααΆααααααααΈαα½ααααΆαααΆαα α ααΆαααααααα ααΆαααΆαβαααwrite
fdatasync
. - ααΎααααΈααΎαααΆααααααααΆαααααΆααααααα α’αααααααΌααααααααΆααααα
--rw=write
. - ααΆ
fio
ααααααααααααΎααΆαα α ααΌααααααwrite
(ααΆααΆαααΆαα α ααΆααααααααααααααααα - α§ααΆα ααα ) ααααΎαααααΆαα·pwrite
--ioengine=sync
. - ααΈαααα»ααααααΆαα·
--fdatasync=1
ααΆααΆααΆααΆααwrite
ααααΌαααααΆfdatasync
. - αααΆαααΆααααααααΈααααααααααα
αααα»αα§ααΆα αααααααααΎαααΊ:
--size
ΠΈ--bs
- α’αΆα αααααααα½αα’αΆαααααααΎααααΈααααΎααααΆααααΆααααΆααα ααααααααααΆααααΉααα·αααααΆα’αααΈααΆαααααααα ααΆαααααααααααααα½αααα
α ααα»α’αααΈααΆαααΆααΎαααααΎαααΎα fio αα·ααααααααααΎαααΆααααααΈαααααααα αααΆα
ααααααααααΆαααααααΎαα
ααααΈααααΈαα·ααααααΎααα½ααααααα ααΎαααΆαα
ααααααα
ααΎ Kubernetes v1.13 ααΆαα½αααΉαααΆααααα½ααα·αα·ααααα
ααΎ Prometheus α SSDs ααααΌαααΆαααααΎααΆαααααααααα»ααααααΆαα etcd v3.2.24 α Etcd metrics ααΆααααα αΆαααΈααΆαααΊααααΆααααααααα fdatasync
ααΌααααΈαααα
ααααααα
ααααααα
αααααα α
ααααααΎα ααΆαααααααΆαααΆαααααα αΆααααΌα
ααΆαα½αα±ααααααααααΆαα α αΎαααΎααα·αααααΆααααΆα’αααΈαααααααΆαα±αααα·αααααΆαααααααα ααΎαααΈααα α
αααααααΆααααΆαααΈααα·αααα·α ααΌα
ααααααΆαα·αα’αΆα
αα·ααΆαααΆαααΆααΎααΆααααααΆααααααααααααΆαααααΈαα·αααα·α α¬ SSD ααααΌαααααΈαααααααααααα
ααΎαααΈαααααα ααΎαααΆααα·α αΆαααΆααΎααΆαααααΆααααααΌααααααααα αααα»αααΆαααααααα ααΆαααααααααααααααΉα αα·αααΌα ααααα ααΌα ααααααΎαααααΌαααΆααα·ααΈααΎααααΈααΆαααααααα½αααα ααΆααΆααα·αααΆαα ααΆααΉαα’αΆα ααααΎαααΆα etd αααα»αααΆαααααααα ααΆααααααααααΈαα½αα α αΎαααΎαααΎαααααΆαα Prometheus αααααααΌαααααΆ ααα»ααααααΆααΉαααααΌαααΆαααΆααα·αααααααΉαααααααααΆαααααΆααα α’αααΈβαααβααΎαβααααΌαβααΆαβααΊβααΆβαα·ααΈβααΆααααβαα½αβααΎααααΈβααΆαβαααααβααΆαβαααααβαα ααΆααααααααβααΆααααΆααα ααΎαα ααααΆαααααααΆααααααΉαααααααΎαα’αααΈαααααΆαα Prometheus αααααααΈ αα
ααααααααΌαα±ααααΆαααΆααααααααΆααααα αΆααΈα:
- ααΈαα½α ααΎααΆααααα»α I/O ααααααααΎαααα etcd αα αααααααααα α―αααΆα WAL ααΎααα ααΌα α’αααΈ? ααΎβααΆαβα α βααΌαααααβααααααααβα’αααΈβααααΌαβααΆαβααααΎ? ααΎαααα»ααααααααααΆααΆαααα αααα»αααΆ?
- ααΈααΈα α§αααΆααΆααΎαααΆαα
ααααΎαα
αααααααα½αααΆαααΎα αααααααααΎαααααα»ααααααααΌαααααΆααΆαα½α
fio
? αααααΆααααΈααΆααα’αααfio
- α§αααααααααΎααααΆαααααα’αΆα ααααααααΆαααΆαα½αααΉααααΆαααΆαααααααααααααΌαααα (α§ααΆα ααααααααΆααααα½ααααααααααΆααααα ααΈααα - αααα αα ααααααα ).
ααΎαααΆααααααααΆααααα αΆααΆααααΈαααΆαα½αααΉααα·ααΈααΆααααααααααΆαααΌαααααΆαααΎααΆααααααααΆααΌα
ααααΆα lsof
strace
- αααααΆααααα½αααΈ
lsof
α’αααβα’αΆα βααΎαβα―αααΆαβαααααΆβααΆααα’ααβαααβααΆαβααααΎβαααβααααΎαααΆαβααααΌα ααΆβα―αααΆαβαααβαα½αααβαααβαα αβ - αααααΆααααα½αααΈ
strace
α’αααα’αΆα αα·ααΆαααααΎαααΆαααααααα»αααααΎαααΆααα½α α αΎα α¬ααααΎαααΆαααααΎαααΆα α αΎαααΎαααΆα ααΆααααααααΆαααα αΆαααΆαα α ααααααααααΆααα’αααααααααΎα‘αΎααααααααΎαααΆαααα α αΎαααΎα αΆαααΆα α ααΌαα α ααααααΆα ααααααααααααΊααΆαααΆααααααΆαααααααΆααααααΎαααΆααααααααΌαααΆα forking α αΎα etcd ααΊααΆααααΎαααΆαααααααα
ααΏαααααΌααααααΎαααΆαααααΎααΊααααΌαααααΎ strace
ααΎααααΈαα·αα·αααααΎααααΆαααΈααα etcd αα
αααα»αα
ααααα Kubernetes αααααααααααΆαα
αααααα
ααΌα
ααααααΆααααΌαααΆαααααααΎαααΆαααα»ααααααααααΆ WAL ααααΌαααΆαααΆααααΆαααα»ααααΆαααααΆαα ααα αααααΆαα
αααΎαααΊαααα·ααα
αααα»αα
αααααααΈ 2200-2400 ααα αααα αΎαααΆααΌαα ααα»αααααΆααααααααΆαα
ααΎαα’ααααααααααααΎααα --bs=2300
(bs
ααΊααΆααα ααα·αααΆαααααααα»ααααααααΈαα½αα fio
).
ααΌαα
αααΆαααΆααα ααααααα»αααααα etcd α’αΆα
αααααααα½αα’αΆαααααααΎαααα ααΆαααΆαααααααΆα ααααααααΆαααΆααααααααα - ααΆαααααΆααααααααααα fdatasync
. ααααα·αααΎα’αααααΆαααααΈααααΎααααΆααααααααααααΆ ααΌααα·ααΆαααΆαα½α strace
ααααΎαααΆα etcd ααααα’αααααΎααααΈααα½αααΆααααααααΆααααααα
αααααΆαααα ααΎααααΈααα½αααΆααααα·αα
αααΆααααΆαα αα·αααΌααααΌααΆαα’αααΈααααααα etcd ααααΎαααΆαααΆαα½αααααααααα―αααΆα ααΎαααΆαα
αΆααααααΎαααΆααΈααααα strace
ααΆαα½αααΉααααααΆαα· -ffttT
. αααααααΎα±ααααΆα’αΆα
α
αΆααααααααΎαααΆααααααα»ααΆα αα·ααααααααααααααΈαα½αααα
ααΆα―αααΆαααΆα
ααααα‘αααα½αα ααΎαααΈααα ααααααΆαααα’α·αα’αααΈαααααααΆα
αΆααααααΎα αα·αααααααααααΆαα α
ααΆαααααααααααΈαα½ααααααΌαααΆαααα½αα
ααΎαααααΆαααααΎααΆααααααααΆαααααα lsof
ααΎααααΈαααααΆααααΆααααααΉαααααα’αααα’αααΈαααααα strace
αα
αααα»αααααααααααα―αααΆααα·αααααΆαααααααΌαααΆαααααΎαααααΆαααααααααααΆαα½αα αααα»αααΆαααα½αααΆαααααα·ααααΆα strace
αααααααα
ααΉαα’αααΈαααααΆαααΎα α§ααΆααααααα·αα·ααΆαα½αααΉααααααααΆααααΎααααΆαααααααΆααααααΆααααΆαααααα wal_fsync_duration_seconds
ααΈααΆαα α
ααΆαααααα½α etcd fdatasync
ααΆαα½αααΉαααΆααα·αααααΆα―αααΆα WAL α
ααΎααααΈαααααΎαααΆαα½α fio
ααααα»αααΆαααΆαααααααααΉαα―αααΆαααΈ etcd α―αααΆαααα§αααααααααΎααααΆααααααΌαααΆααα·ααααΆ α αΎααααΆαααΆααααααααααααααααααααΆαααα·α
αα
ααΆαααααααΎαααααΌαααΆαααααΎαααΎαα ααΎαβααΆαβαααααααααΆααβααΆβααΆαβα α
βααΌαααααβααααααααβαααβααααΉαααααΌαβαααα»αβααααΎαααΆαβα αΎαβααΆαβαααααΆααβααΈβααααααβαααβααΆαβααααΎαααΆα fio
ααΈ strace
(ααΌα
αααααΆααααΌαααΆαααααΎαααα»αααααΈ αα ) α
ααΆαααα
α·ααααα»αααΆααααΆαα·αααααααΌαααΆααααααΎααααΈαααααααααααααααΆαααΆαααααα --size
. ααΆααααΆαα±ααααααα»α I/O ααα»αααααααααΎαα‘αΎααααα§αααααααααΎααααΆαα fio α αααα»αααααΈααααααΎα αααααΊααΆα
ααα½αααα»ααααααααααααααα
ααΆααααααααααααααααααααΆαα ααΆαααΆααΆααααααααααΆαααα
ααΉαα
ααα½αααααΆαα α
ααΌαααααα write
(αα·α fdatasync
) αααααΆααααΆααααΆαααα½αα bs
α
ααα½αααααΆαα α
ααΌαααααα fdatasync
ααααΎ size / bs
.
αααααΆαααΎαα
αΆααα’αΆααααααααΎααΆααα ααΎαα
ααα±ααα
ααα½αααααΌααΆαααα αααααααααΎααααΈα±ααααΆαααΆαααααΆααααΆααααα·αα·α α αΎαβααΆαβαααααα
βα
α·αααβαααα 10^4
(αααααααΌαααΉαααα α 22 MB) ααΉααααααααααΆααα ααααααααΆαααΆααααααααΌα
ααΆα --size
ααααααααααααΊα
αααΆααααΆααα»α (α§ααΆα ααα ααΆαα α
ααΌααααα fdatasync
αααα
αααΆααααααΌαααΆαααααααΆ αα·ααααααΆαααααααΆαααααΈ 99)α
ααΆαβααβα α·αααβααααβα’αααβα α»α
α’ααααααααα αΆαααΈααααααααΎ fio
ααα’αΆα
αα·αα·α
ααααααΆααΎααααααααααααααααααΆααααααΆαααααααααΎααΆαα½α etcd ααΏααααααααααΆααα¬α’ααα α₯α‘αΌααααααΆα’αΆαααααααΎα’ααα! α’αααα’αΆα
αα»ααααααΆαααΈααα·αααα·αααΆαα½αααΉααααααααααα»ααα·αααααααααααΆαααΌαααααΆαααΎ SSD αα
αααα»αααααΆαααα
PS ααΈα’ααααααααα
ααΆαα½αααΉαααααΈααααΎααααΆαααα½α
ααΆαα fio
αααααΆαααα·α
αα
ααΆααααααααα ααΌαααΎα
PPS ααΈα’ααααααααα
ααΌαα’αΆαααααααα ααΎαααααααααααΎαα
- Β«
etcd 3.4.3α ααΆααα·ααααΆα’αααΈααΆαααΏααΆααααααΆααααα»α αα·ααα»ααααα·ααΆα Β» - Β«
αααα·αααααααααααΎαααΆαα½αααΉααα·αααααααα αααα»α etcd Kubernetes cluster αααααααΆαα (αααααααΆα K8s API) Β» - Β«
ααα α»ααααααααααααααΆαααα ααα½α 6 αα αααα»αααααα·ααααα·ααΆααααα Kubernetes [αα·ααααααααααΆααααααα½ααα] "α
ααααα: www.habr.com