etcd์— ์ ํ•ฉํ•œ ์ €์žฅ ์†๋„? ํ”ผ์˜ค์—๊ฒŒ ๋ฌผ์–ด๋ณด์ž

etcd์— ์ ํ•ฉํ•œ ์ €์žฅ ์†๋„? ํ”ผ์˜ค์—๊ฒŒ ๋ฌผ์–ด๋ณด์ž

fio ๋ฐ etcd์— ๋Œ€ํ•œ ์งง์€ ์ด์•ผ๊ธฐ

ํด๋Ÿฌ์Šคํ„ฐ ์„ฑ๋Šฅ ๋“ฑ ์Šคํ† ๋ฆฌ์ง€์˜ ์„ฑ๋Šฅ์— ํฌ๊ฒŒ ์ขŒ์šฐ๋ฉ๋‹ˆ๋‹ค. etcd๋Š” ์ผ๋ถ€ ๋ฉ”ํŠธ๋ฆญ์„ ๋‹ค์Œ์œผ๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค. ํ”„๋กœ ๋ฉ”ํ…Œ์šฐ์Šค์›ํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ์„ฑ๋Šฅ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด wal_fsync_duration_seconds ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค. etcd์— ๋Œ€ํ•œ ์„ค๋ช…์„œ์— ๋”ฐ๋ฅด๋ฉด: ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅธ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ ค๋ฉด ์ด ์ง€ํ‘œ์˜ 99๋ฒˆ์งธ ๋ฐฑ๋ถ„์œ„์ˆ˜๊ฐ€ 10ms ๋ฏธ๋งŒ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Linux ์‹œ์Šคํ…œ์—์„œ etcd ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‹คํ–‰ํ•  ๊ณ„ํš์ด๊ณ  ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅธ์ง€(์˜ˆ: SSD) ํ‰๊ฐ€ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. fio I/O ์ž‘์—…์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ test-data๋Š” ์Šคํ† ๋ฆฌ์ง€ ๋งˆ์šดํŠธ ์ง€์  ์•„๋ž˜์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค.

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

๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ  ๊ธฐ๊ฐ„์˜ 99๋ฒˆ์งธ ๋ฐฑ๋ถ„์œ„์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. fdatasync 10ms ๋ฏธ๋งŒ. ๊ทธ๋ ‡๋‹ค๋ฉด ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋น ๋ฅธ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๊ฒฐ๊ณผ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค.

  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๋ฒˆ์งธ ๋ฐฑ๋ถ„์œ„์ˆ˜๊ฐ€ 10ms์— ๊ฐ€๊นŒ์šฐ๋ฉด ์Šคํ† ๋ฆฌ์ง€ ์†๋„๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๋ฒ„์ „ ๊ฐ€์ ธ์˜ค๊ธฐ fio 3.5 ์ด์ƒ (์ด์ „ ํ•ญ๋ชฉ์€ fdatasync ๊ธฐ๊ฐ„ ๋ฐฑ๋ถ„์œ„์ˆ˜๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š์Œ).
  • ์œ„๋Š” fio์˜ ๊ฒฐ๊ณผ ์Šค๋‹ˆํŽซ์ž…๋‹ˆ๋‹ค.

fio ๋ฐ etcd์— ๋Œ€ํ•œ ๊ธด ์ด์•ผ๊ธฐ

etcd์—์„œ WAL์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฏธ๋ฆฌ ์“ฐ๊ธฐ ๋กœ๊ทธ; etcd๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋ฏธ๋ฆฌ ์“ฐ๊ธฐ ๋กœ๊ทธ(WAL)์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. etcd ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฐ ๊ตฌ์„ฑ์›์ด ์ด๋ฅผ ์˜๊ตฌ ์Šคํ† ๋ฆฌ์ง€์— ์œ ์ง€ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค๋งŒ ์•Œ๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. etcd๋Š” ์ €์žฅ์†Œ์— ์ ์šฉํ•˜๊ธฐ ์ „์— ๊ฐ ํ‚ค-๊ฐ’ ์ž‘์—…(์˜ˆ: ์—…๋ฐ์ดํŠธ)์„ WAL์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ๊ตฌ์„ฑ์› ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ถฉ๋Œํ•˜๊ณ  ์Šค๋ƒ…์ƒท ๊ฐ„์— ๋‹ค์‹œ ์‹œ์ž‘๋˜๋ฉด WAL ์ฝ˜ํ…์ธ ์— ์˜ํ•ด ๋งˆ์ง€๋ง‰ ์Šค๋ƒ…์ƒท ์ดํ›„ ๋กœ์ปฌ์—์„œ ํŠธ๋žœ์žญ์…˜์„ ๋ณต์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ์— ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ํ‚ค์˜ ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•˜๋ฉด etcd๋Š” ์˜๊ตฌ ์ €์žฅ์†Œ์˜ ์ผ๋ฐ˜ ํŒŒ์ผ์ธ 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 ํ˜ธ์ถœ์ด WAL ํŒŒ์ผ์— ์“ฐ๋Š” ๋ฐ 10ms ๋ฏธ๋งŒ์ด๋ฉด ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅธ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ์œ ์šฉํ•œ ๋ฉ”ํŠธ๋ฆญ์ด ์žˆ์ง€๋งŒ ์ด ๊ฒŒ์‹œ๋ฌผ์—์„œ๋Š” ์ด ๋ฉ”ํŠธ๋ฆญ์— ๋Œ€ํ•ด์„œ๋งŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

fio๋กœ ์Šคํ† ๋ฆฌ์ง€ ์˜ˆ์ธก

์Šคํ† ๋ฆฌ์ง€๊ฐ€ etcd์— ์ ํ•ฉํ•œ์ง€ ํ‰๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋งค์šฐ ์ธ๊ธฐ ์žˆ๋Š” I/O ๋กœ๋“œ ํ…Œ์ŠคํŠธ ๋„๊ตฌ์ธ fio๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๋””์Šคํฌ ์ž‘์—…์€ ๋™๊ธฐ์‹๊ณผ ๋น„๋™๊ธฐ์‹, ๋งŽ์€ ์‹œ์Šคํ…œ ํ˜ธ์ถœ ํด๋ž˜์Šค ๋“ฑ ๋งค์šฐ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ์„ ๊ธฐ์–ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ fio๋Š” ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋งŽ์€ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ฐ’์˜ ์กฐํ•ฉ์ด ๋‹ค๋ฅด๋ฉด ๋งค์šฐ ๋‹ค๋ฅธ I/O ์›Œํฌ๋กœ๋“œ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. etcd์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์ˆ˜์น˜๋ฅผ ์–ป์œผ๋ ค๋ฉด WAL ํŒŒ์ผ์„ ์ž‘์„ฑํ•  ๋•Œ fio์˜ ํ…Œ์ŠคํŠธ ์“ฐ๊ธฐ ๋กœ๋“œ๊ฐ€ etcd์˜ ์‹ค์ œ ๋กœ๋“œ์— ์ตœ๋Œ€ํ•œ ๊ทผ์ ‘ํ•˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ fio๋Š” ์ตœ์†Œํ•œ ํŒŒ์ผ์— ์ผ๋ จ์˜ ์ˆœ์ฐจ์  ์“ฐ๊ธฐ ๋กœ๋“œ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋ฉฐ ๊ฐ ์“ฐ๊ธฐ๋Š” ์‹œ์Šคํ…œ ํ˜ธ์ถœ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์“ฐ๋‹คfdatasync ์‹œ์Šคํ…œ ํ˜ธ์ถœ์ด ๋’ค๋”ฐ๋ฆ…๋‹ˆ๋‹ค. fio์— ๋Œ€ํ•œ ์ˆœ์ฐจ์  ์“ฐ๊ธฐ์—๋Š” --rw=write ์˜ต์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. fio๊ฐ€ ์“ธ ๋•Œ ์“ฐ๊ธฐ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์“ฐ๋‹ค, --ioengine=sync ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฐ ์“ฐ๊ธฐ ํ›„์— fdatasync๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๋ฉด --fdatasync=1 ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์ œ์˜ ๋‹ค๋ฅธ ๋‘ ์˜ต์…˜(--size ๋ฐ -bs)์€ ์Šคํฌ๋ฆฝํŠธ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ์„ค์ • ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

fio๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ์™€ ์„ค์ • ๋ฐฉ๋ฒ•

์ด ๊ฒŒ์‹œ๋ฌผ์—์„œ๋Š” ์‹ค์ œ ์‚ฌ๋ก€๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Kubernetes Prometheus๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•œ v1.13. etcd v3.2.24๋Š” SSD์—์„œ ํ˜ธ์ŠคํŒ…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Etcd ๋ฉ”ํŠธ๋ฆญ์€ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์•„๋ฌด ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋„ fdatasync ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๋†’์€ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋ฉ”ํŠธ๋ฆญ์ด ์ด์ƒํ–ˆ๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋ฅผ ์‹ค์ œ๋กœ ์•Œ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์œผ๋กœ ๊ตฌ์„ฑ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋ฌผ๋ฆฌ์  SSD ๋˜๋Š” ๊ฐ€์ƒํ™” ๊ณ„์ธต์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•˜๋“œ์›จ์–ด ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ์„ ์ž์ฃผ ๋ณ€๊ฒฝํ–ˆ์œผ๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ‰๊ฐ€ํ•  ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ตฌ์„ฑ์—์„œ etcd๋ฅผ ์‹คํ–‰ํ•˜๊ณ  Prometheus ๋ฉ”ํŠธ๋ฆญ์„ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋„ˆ๋ฌด ๋ฒˆ๊ฑฐ๋กญ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํŠน์ • ๊ตฌ์„ฑ์„ ํ‰๊ฐ€ํ•˜๋Š” ์ƒ๋‹นํžˆ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” etcd์˜ Prometheus ๋ฉ”ํŠธ๋ฆญ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ–ˆ๋‹ค. ์ฒซ์งธ, WAL์— ์“ธ ๋•Œ etcd๊ฐ€ ์ƒ์„ฑํ•˜๋Š” I/O ๋กœ๋“œ๋Š” ์–ด๋–ค ๋ชจ์Šต์ž…๋‹ˆ๊นŒ? ์–ด๋–ค ์‹œ์Šคํ…œ ํ˜ธ์ถœ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? ๋ ˆ์ฝ”๋“œ์˜ ํฌ๊ธฐ๋Š” ์–ผ๋งˆ์ž…๋‹ˆ๊นŒ? ๋‘˜์งธ, ์ด๋Ÿฌํ•œ ์งˆ๋ฌธ์— ๋‹ตํ•˜๋ฉด fio๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์‚ฌํ•œ ์›Œํฌ๋กœ๋“œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? fio๋Š” ๋งŽ์€ ์˜ต์…˜์ด ์žˆ๋Š” ๋งค์šฐ ์œ ์—ฐํ•œ ๋„๊ตฌ๋ผ๋Š” ์ ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ๋ชจ๋‘ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์†Œํ”„ ะธ ์ถ”์ ํ•˜๋‹ค. lsof๋Š” ํ”„๋กœ์„ธ์Šค ๋ฐ ๊ด€๋ จ ํŒŒ์ผ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ํŒŒ์ผ ์„ค๋ช…์ž๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  strace๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒ€์‚ฌํ•˜๊ฑฐ๋‚˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. strace๋Š” ๊ฒ€์‚ฌ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค(๋ฐ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค)์˜ ๋ชจ๋“  ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค. ํ›„์ž๋Š” etcd๊ฐ€ ๋น„์Šทํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ์— ๋ถ€ํ•˜๊ฐ€ ์—†์„ ๋•Œ ๋จผ์ € strace๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Kubernetes์šฉ etcd ์„œ๋ฒ„๋ฅผ ํƒ์ƒ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฑฐ์˜ ๋ชจ๋“  WAL ๋ ˆ์ฝ”๋“œ์˜ ํฌ๊ธฐ๊ฐ€ 2200~2400๋ฐ”์ดํŠธ๋กœ ๊ฑฐ์˜ ๋™์ผํ•˜๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฒŒ์‹œ๋ฌผ ์‹œ์ž‘ ๋ถ€๋ถ„์˜ ๋ช…๋ น์—์„œ -bs=2300 ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค(bs๋Š” ๊ฐ fio ํ•ญ๋ชฉ์˜ ๋ฐ”์ดํŠธ ํฌ๊ธฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค). etcd ํ•ญ๋ชฉ์˜ ํฌ๊ธฐ๋Š” etcd ๋ฒ„์ „, ๋ถ„ํฌ, ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’ ๋“ฑ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋ฉฐ fdatasync ๊ธฐ๊ฐ„์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค. ์œ ์‚ฌํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ strace๋กœ etcd ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ์ •ํ™•ํ•œ ์ˆซ์ž๋ฅผ ์ฐพ์œผ์‹ญ์‹œ์˜ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ etcd ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ์ข‹์€ ์•„์ด๋””์–ด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด strace ๋ฐ -ffttT ์˜ต์…˜์œผ๋กœ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ  ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ์ถœ๋ ฅ์„ ๋ณ„๋„์˜ ํŒŒ์ผ์— ๊ธฐ๋กํ•˜๊ณ  ๊ฐ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์˜ ์‹œ์ž‘ ๋ฐ ๊ธฐ๊ฐ„์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋ณด๊ณ ์„œ๋ฅผ ์–ป์œผ๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. 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 ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ์žˆ๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง์ ‘ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. IBM Cloud.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€