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 ã®èšå®æ¹æ³ãã©ã®ããã«åŠãã ã . - ãã¹ãäžããã¹ãŠã® I/O è² è·ã¯ fio ããçºçããŸãã å®éã®ã·ããªãªã§ã¯ãwal_fsync_duration_seconds ã«é¢é£ãããã®ä»¥å€ã«ããä»ã®æžã蟌ã¿ãªã¯ãšã¹ããã¹ãã¬ãŒãžã«éä¿¡ãããå¯èœæ§ããããŸãã è¿œå ã®è² è·ã«ãããwal_fsync_duration_seconds ã®å€ãå¢å ããŸãã ãããã£ãŠã99 ããŒã»ã³ã¿ã€ã«ã 10 ããªç§ã«è¿ãå Žåãã¹ãã¬ãŒãžã®é床ãäžè¶³ããŠããŸãã
- ããŒãžã§ã³ãåã
FIO 3.5ä»¥äž (以åã®ãã®ã§ã¯ fdatasync æéã®ããŒã»ã³ã¿ã€ã«ã衚瀺ãããŸãã)ã - äžèšã¯ fio ã®çµæã®ã»ãã®äžéšã§ãã
fio ãš etcd ã«ã€ããŠã®é·ã話
etcdã®WALãšã¯äœã§ãã
éåžžãããŒã¿ããŒã¹ã䜿çšããã®ã¯
ã¯ã©ã€ã¢ã³ããããŒ/å€ã¹ãã¢ã«ããŒãè¿œå ããããæ¢åã®ããŒã®å€ãæŽæ°ãããšãetcd ã¯æ°žç¶ã¹ãã¬ãŒãžå
ã®éåžžã®ãã¡ã€ã«ã§ãã WAL ã«æäœãèšé²ããŸãã etcd ã¯ãåŠçãç¶è¡ããåã«ãWAL ãšã³ããªãå®éã«çºçããããšãå®å
šã«ç¢ºèªããå¿
èŠããããŸãã Linux ã§ã¯ãXNUMX ã€ã®ã·ã¹ãã ã³ãŒã«ã§ã¯ããã«ååã§ã¯ãããŸããã
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 ã«é©ããŠãããã©ãããè©äŸ¡ããå¿ èŠãããå Žåã¯ãéåžžã«äººæ°ã®ãã I/O è² è·ãã¹ã ããŒã«ã§ãã fio ã䜿çšããŠãã ããã ãã£ã¹ã¯æäœã¯ãåæãšéåæãå€ãã®ã¯ã©ã¹ã®ã·ã¹ãã ã³ãŒã«ãªã©ãéåžžã«ç°ãªãå¯èœæ§ãããããšãèŠããŠããå¿ èŠããããŸãããã®çµæãfio ã®äœ¿çšã¯éåžžã«å°é£ã«ãªããŸãã å€ãã®ãã©ã¡ãŒã¿ãŒãããããããã®å€ã®ããŸããŸãªçµã¿åããã«ãã£ãŠãéåžžã«ç°ãªã I/O ã¯ãŒã¯ããŒããçæãããŸãã etcd ã®é©åãªæ°å€ãååŸããã«ã¯ãWAL ãã¡ã€ã«ãæžã蟌ããšãã« fio ããã®ãã¹ãæžã蟌ã¿è² è·ã etcd ããã®å®éã®è² è·ã«ã§ããã ãè¿ãããšã確èªããå¿ èŠããããŸãã
ãããã£ãŠãfio ã¯å°ãªããšãããã¡ã€ã«ãžã®äžé£ã®é£ç¶æžã蟌ã¿ã®åœ¢åŒã§ããŒããäœæããå¿
èŠããããŸããåæžã蟌ã¿ã¯ã·ã¹ãã ã³ãŒã«ã§æ§æãããŸãã
æ£ç¢ºã« fio ã䜿çšããçç±ãšãã®èšå®æ¹æ³ãåŠãã æ¹æ³
ãã®èšäºã§ã¯ãå®éã®ã±ãŒã¹ã«ã€ããŠèª¬æããŸãã ã¯ã©ã¹ã¿ãŒããããŸã
ãããããã®ããã«ã¯ XNUMX ã€ã®åé¡ã解決ããå¿
èŠããããŸããã ãŸããetcd ã WAL ã«æžã蟌ããšãã«äœæãã I/O è² è·ã¯ã©ã®ãããªãã®ã§ãããã? ã©ã®ãããªã·ã¹ãã ã³ãŒã«ã䜿çšãããŠããŸãã? ã¬ã³ãŒãã®ãµã€ãºã¯ã©ããããã§ãã? 次ã«ããããã®è³ªåã«çãããšãåæ§ã®ã¯ãŒã¯ããŒãã fio ã§ã©ã®ããã«åçŸã§ããã§ãããã? fio ã¯å€ãã®ãªãã·ã§ã³ãåããéåžžã«æè»ãªããŒã«ã§ããããšãå¿ããªãã§ãã ããã ã³ãã³ãã䜿çšãããšãã XNUMX ã€ã®ã¢ãããŒãã§äž¡æ¹ã®åé¡ã解決ããŸããã
ã¯ã©ã¹ã¿ãŒã«è² è·ãããã£ãŠããªããšãã«ãæåã« strace ã䜿çšã㊠Kubernetes ã® etcd ãµãŒããŒã調æ»ããŸããã ã»ãšãã©ãã¹ãŠã® WAL ã¬ã³ãŒããã»ãŒåããµã€ãº (2200 ïœ 2400 ãã€ã) ã§ããããšãããããŸããã ãããã£ãŠãæçš¿ã®åé ã®ã³ãã³ãã§ã¯ããã©ã¡ãŒã¿ -bs=2300 ãæå®ããŸãã (bs ã¯å fio ãšã³ããªã®ãã€ãåäœã®ãµã€ãºãæå³ããŸã)ã etcd ãšã³ããªã®ãµã€ãºã¯ etcd ã®ããŒãžã§ã³ããã£ã¹ããªãã¥ãŒã·ã§ã³ããã©ã¡ãŒã¿å€ãªã©ã«äŸåããfdatasync ã®æéã«åœ±é¿ããããšã«æ³šæããŠãã ããã åæ§ã®ã·ããªãªãããå Žåã¯ãstrace ã䜿çšã㊠etcd ããã»ã¹ã調ã¹ãŠãæ£ç¢ºãªæ°ã調ã¹ãŠãã ããã
次ã«ãetcd ãã¡ã€ã« ã·ã¹ãã ãäœãããŠããã®ããããç解ããããã«ãstrace ãš -ffttT ãªãã·ã§ã³ã䜿çšã㊠etcd ãã¡ã€ã« ã·ã¹ãã ãéå§ããŸããã ããã§ãåããã»ã¹ã調ã¹ãŠãããããã®åºåãå¥ã®ãã¡ã€ã«ã«èšé²ããåã·ã¹ãã ã³ãŒã«ã®éå§ãšç¶ç¶æéã«é¢ãã詳现ãªã¬ããŒããååŸããããšããŸããã lsof ã䜿çšããŠãstrace åºåã®åæã確èªããã©ã®ãã¡ã€ã«èšè¿°åãã©ã®ç®çã§äœ¿çšãããŠãããã確èªããŸããã ãã㧠strace ã®å©ããåããŠãäžèšã®çµæãåŸãããŸããã åææéã®çµ±èšã«ãããetcd ããã® wal_fsync_duration_seconds ã WAL ãã¡ã€ã«èšè¿°åã䜿çšãã fdatasync åŒã³åºããšäžèŽããŠããããšã確èªãããŸããã
fio ã®ããã¥ã¡ã³ãã確èªããfio ã etcd ãšåæ§ã®è² è·ãçæããããã«ã¹ã¯ãªããã®ãªãã·ã§ã³ãéžæããŸããã ãŸããetcd ãšåæ§ã« strace ãã fio ãå®è¡ããŠãã·ã¹ãã ã³ãŒã«ãšãã®ç¶ç¶æéããã§ãã¯ããŸããã
fio ããã® I/O è² è·å šäœãè¡šã --size ãã©ã¡ãŒã¿ãŒã®å€ãæ éã«éžæããŸããã ãã®äŸã§ã¯ãããã¯ã¹ãã¬ãŒãžã«æžã蟌ãŸããåèšãã€ãæ°ã§ãã ããã¯ãæžã蟌㿠(ããã³ fdatasync) ã·ã¹ãã ã³ãŒã«ã®æ°ã«æ£æ¯äŸããããšãå€æããŸããã bs ã®ç¹å®ã®å€ã§ã¯ãfdatasync åŒã³åºãã®æ° = size/bs ã«ãªããŸãã ããŒã»ã³ã¿ã€ã«ã«èå³ãããããã確å®ã«ããã«ã¯ååãªãµã³ãã«ãå¿ èŠã§ããã10^4 (ã€ãŸã 22 ã¡ããã€ã) ã§ååã§ãããšèšç®ããŸããã --size ãå°ããå Žåãå€ãå€ãçºçããå¯èœæ§ããããŸã (ããšãã°ãããã€ãã® fdatasync åŒã³åºãã«éåžžããæéããããã99 ããŒã»ã³ã¿ã€ã«ã«åœ±é¿ããŸã)ã
èªåã§è©ŠããŠãã ãã
fio ã䜿çšããŠãã¹ãã¬ãŒãžã etcd ãé©åã«åäœããã®ã«ååãªé床ã§ãããã©ããã確èªããæ¹æ³ã説æããŸããã ããã§ãããšãã° SSD ã¹ãã¬ãŒãžãåããä»®æ³ãã·ã³ã䜿çšããŠãèªåã§è©Šãããšãã§ããŸãã
åºæïŒ habr.com