etcd์— ๋Œ€ํ•œ ์ถฉ๋ถ„ํ•œ ์„ฑ๋Šฅ์„ ์œ„ํ•ด fio๋กœ ๋””์Šคํฌ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ฉ”๋ชจ. ๋ฒˆ์—ญ: ์ด ๊ธฐ์‚ฌ๋Š” etcd ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์šด์˜๊ณผ ๊ด€๋ จ๋œ ์‹ค์ œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ์ฐพ๊ธฐ ์œ„ํ•ด IBM Cloud ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์ˆ˜ํ–‰ํ•œ ์†Œ๊ทœ๋ชจ ์—ฐ๊ตฌ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ๋น„์Šทํ•œ ์ž‘์—…์ด ์šฐ๋ฆฌ์™€ ๊ด€๋ จ์ด ์žˆ์—ˆ์ง€๋งŒ ์ €์ž์˜ ๋ฐ˜์„ฑ๊ณผ ํ–‰๋™ ๊ณผ์ •์€ ๋” ๋„“์€ ๋งฅ๋ฝ์—์„œ ํฅ๋ฏธ๋กœ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

etcd์— ๋Œ€ํ•œ ์ถฉ๋ถ„ํ•œ ์„ฑ๋Šฅ์„ ์œ„ํ•ด fio๋กœ ๋””์Šคํฌ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•

์ „์ฒด ๋ฌธ์„œ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์š”์•ฝ: fio ๋ฐ etcd

etcd ํด๋Ÿฌ์Šคํ„ฐ์˜ ์„ฑ๋Šฅ์€ ๊ธฐ๋ณธ ์Šคํ† ๋ฆฌ์ง€์˜ ์†๋„์— ํฌ๊ฒŒ ์˜์กดํ•ฉ๋‹ˆ๋‹ค. etcd๋Š” ์„ฑ๋Šฅ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ Prometheus ์ง€ํ‘œ๋ฅผ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค. ๊ทธ๋“ค ์ค‘ ํ•˜๋‚˜๋Š” wal_fsync_duration_seconds. etcd์— ๋Œ€ํ•œ ์„ค๋ช…์„œ์—์„œ ๊ทธ๊ฒƒ์€ ๋งํ•œ๋‹ค์ด ๋ฉ”ํŠธ๋ฆญ์˜ 99๋ฒˆ์งธ ๋ฐฑ๋ถ„์œ„์ˆ˜๊ฐ€ 10ms๋ฅผ ์ดˆ๊ณผํ•˜์ง€ ์•Š์œผ๋ฉด ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅธ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

์ถœ๋ ฅ์„ ๋ณด๊ณ  99๋ฒˆ์งธ ๋ฐฑ๋ถ„์œ„์ˆ˜๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ๋งŒ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. fdatasync 10ms ํ›„. ๊ทธ๋ ‡๋‹ค๋ฉด ๋“œ๋ผ์ด๋ธŒ๊ฐ€ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ถœ๋ ฅ ์˜ˆ์ž…๋‹ˆ๋‹ค.

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]

๋ช‡ ๊ฐ€์ง€ ๋ฉ”๋ชจ :

  1. ์œ„์˜ ์˜ˆ์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์กฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. --size ะธ --bs ํŠน์ • ๊ฒฝ์šฐ. ์—์„œ ์˜๋ฏธ ์žˆ๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ๋ ค๋ฉด fio, ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์ ํ•ฉํ•œ ๊ฐ’์„ ์ง€์ •ํ•˜์‹ญ์‹œ์˜ค. ์„ ํƒ ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์—์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  2. ํ…Œ์ŠคํŠธ ์ค‘์—๋งŒ fio ๋””์Šคํฌ ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ƒํ™œ์—์„œ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋””์Šคํฌ์— ๊ธฐ๋กํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค( wal_fsync_duration_seconds). ์ด ์ถ”๊ฐ€ ๋ถ€ํ•˜๋Š” ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. wal_fsync_duration_seconds. ์ฆ‰, ํ…Œ์ŠคํŠธ์—์„œ 99๋ฒˆ์งธ ๋ฐฑ๋ถ„์œ„์ˆ˜๊ฐ€ fio, 10ms๋ณด๋‹ค ์•ฝ๊ฐ„ ์ž‘์€ ๊ฒฝ์šฐ ์Šคํ† ๋ฆฌ์ง€ ์„ฑ๋Šฅ์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.
  3. ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋ฒ„์ „์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค fio 3.5 ์ด์ƒ, ์ด์ „ ๋ฒ„์ „์€ ๊ฒฐ๊ณผ๋ฅผ ์ง‘๊ณ„ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. fdatasync ๋ฐฑ๋ถ„์œ„ ์ˆ˜์˜ ํ˜•ํƒœ๋กœ.
  4. ์œ„์˜ ๊ฒฐ๋ก ์€ ์ผ๋ฐ˜์ ์ธ ๊ฒฐ๋ก ์—์„œ ์ผ๋ถ€๋งŒ ๋ฐœ์ทŒํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. fio.

fio ๋ฐ etcd์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด

WAL etcd์— ๋Œ€ํ•œ ๋ช‡ ๋งˆ๋””

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

๋”ฐ๋ผ์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ KV ์ €์žฅ์†Œ์— ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ํ‚ค ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋งˆ๋‹ค etcd๋Š” ์˜๊ตฌ ์ €์žฅ์†Œ์˜ ์ผ๋ฐ˜ ํŒŒ์ผ์ธ WAL์— ์ž‘์—… ์„ค๋ช…์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. etcd๋Š” ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— WAL ํ•ญ๋ชฉ์ด ์‹ค์ œ๋กœ ์ €์žฅ๋˜์—ˆ๋Š”์ง€ 100% ํ™•์‹ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Linux์—์„œ ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๋ ค๋ฉด ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. write, ๋ฌผ๋ฆฌ์  ๋ฏธ๋””์–ด์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ์ž‘์—… ์ž์ฒด๊ฐ€ ์ง€์—ฐ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Linux๋Š” WAL ํ•ญ๋ชฉ์„ ์ธ๋ฉ”๋ชจ๋ฆฌ ์ปค๋„ ์บ์‹œ(์˜ˆ: ํŽ˜์ด์ง€ ์บ์‹œ)์— ์–ผ๋งˆ ๋™์•ˆ ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฏธ๋””์–ด์— ๊ธฐ๋ก๋˜๋„๋ก ํ•˜๋ ค๋ฉด ์“ฐ๊ธฐ ํ›„์— ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 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์˜ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €์žฅ์†Œ ๋ฌธ์„œ์—์„œ ํ‘œ์‹œ๋จ, ์ถฉ๋ถ„ํ•œ ์„ฑ๋Šฅ์„ ์œ„ํ•ด์„œ๋Š” ๋ชจ๋“  ํ˜ธ์ถœ ๊ธฐ๊ฐ„์˜ 99๋ฒˆ์งธ ๋ฐฑ๋ถ„์œ„์ˆ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. fdatasync WAL ํŒŒ์ผ์— ์“ฐ๋Š” ์‹œ๊ฐ„์ด 10ms ๋ฏธ๋งŒ์ผ ๋•Œ. ๋‹ค๋ฅธ ์Šคํ† ๋ฆฌ์ง€ ๊ด€๋ จ ๋ฉ”ํŠธ๋ฆญ์ด ์žˆ์ง€๋งŒ ์ด ๋ฌธ์„œ์—์„œ๋Š” ํ•ด๋‹น ๋ฉ”ํŠธ๋ฆญ์— ์ค‘์ ์„ ๋‘˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

fio๋กœ ์Šคํ† ๋ฆฌ์ง€ ํ‰๊ฐ€

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

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

์šฐ๋ฆฌ๊ฐ€ fio๋ฅผ ์„ ํƒํ•œ ์ด์œ ์™€ ์„ค์ • ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šด ๋ฐฉ๋ฒ•

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

๋˜ํ•œ ํ•˜๋“œ์›จ์–ด ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ์˜ ๋‹ค์–‘ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํ‰๊ฐ€ํ•  ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ฐ ๊ตฌ์„ฑ์—์„œ etcd๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ•ด๋‹น Prometheus ๋ฉ”ํŠธ๋ฆญ์„ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ƒ๋‹นํ•œ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์—๊ฒŒ ํ•„์š”ํ•œ ๊ฒƒ์€ ํŠน์ • ๊ตฌ์„ฑ์„ ํ‰๊ฐ€ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” etcd์—์„œ ์˜ค๋Š” Prometheus ๋ฉ”ํŠธ๋ฆญ์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์ฒซ์งธ, WAL ํŒŒ์ผ์— ์“ธ ๋•Œ etcd๊ฐ€ ์ƒ์„ฑํ•˜๋Š” I/O ๋กœ๋“œ๋Š” ์–ด๋–ค ๋ชจ์Šต์ž…๋‹ˆ๊นŒ? ์–ด๋–ค ์‹œ์Šคํ…œ ํ˜ธ์ถœ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? ๋ ˆ์ฝ”๋“œ ๋ธ”๋ก์˜ ํฌ๊ธฐ๋Š” ์–ผ๋งˆ์ž…๋‹ˆ๊นŒ?
  • ๋‘˜์งธ, ์œ„์˜ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํ•˜์ค‘์„ ์žฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• fio? ๊ฒฐ๊ตญ fio โ€” ํ’๋ถ€ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ๋งค์šฐ ์œ ์—ฐํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ (์˜ˆ๋ฅผ ๋“ค์–ด ํ™•์ธํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— - ์•ฝ. ๋ฒˆ์—ญ.).

๋™์ผํ•œ ๋ช…๋ น ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ๋ชจ๋‘ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. lsof ะธ strace:

  • ๊ณผ lsof ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ์™€ ์ด๋“ค์ด ์ฐธ์กฐํ•˜๋Š” ํŒŒ์ผ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ณผ strace ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ถ„์„ํ•˜๊ฑฐ๋‚˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์€ ์ด ํ”„๋กœ์„ธ์Šค์—์„œ ์ˆ˜ํ–‰ํ•œ ๋ชจ๋“  ์‹œ์Šคํ…œ ํ˜ธ์ถœ๊ณผ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ•ด๋‹น ํ•˜์œ„ ํ•ญ๋ชฉ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ํ›„์ž๋Š” ํฌํฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์— ์ค‘์š”ํ•˜๋ฉฐ etcd๋Š” ๊ทธ๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ํ•œ ์ผ์€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. strace ์œ ํœด ์ƒํƒœ์ธ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ etcd ์„œ๋ฒ„๋ฅผ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ 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 (etcd์˜ ๊ฒฝ์šฐ์™€ ๊ฐ™์ด).

๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ํŠน๋ณ„ํ•œ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์˜€์Šต๋‹ˆ๋‹ค. --size. fio ์œ ํ‹ธ๋ฆฌํ‹ฐ์—์„œ ์ƒ์„ฑ๋œ ์ด I/O ๋กœ๋“œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ด๊ฒƒ์€ ๋ฏธ๋””์–ด์— ๊ธฐ๋ก๋œ ์ด ๋ฐ”์ดํŠธ ์ˆ˜์ž…๋‹ˆ๋‹ค. ํ˜ธ์ถœ ์ˆ˜์— ์ •๋น„๋ก€ํ•ฉ๋‹ˆ๋‹ค. write (๊ทธ๋ฆฌ๊ณ  fdatasync). ํŠน์ • bs ํ†ตํ™” ์ˆ˜ fdatasync ๊ฐ™์Œ size / bs.

์šฐ๋ฆฌ๋Š” ๋ฐฑ๋ถ„์œ„์ˆ˜์— ๊ด€์‹ฌ์ด ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ˜ํ”Œ ์ˆ˜๊ฐ€ ํ†ต๊ณ„์ ์œผ๋กœ ์œ ์˜๋ฏธํ•  ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๋งŽ๊ธฐ๋ฅผ ์›ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฒฐ์ • 10^4 (22MB ํฌ๊ธฐ์— ํ•ด๋‹น)์ด๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๋” ์ž‘์€ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’ --size ๋” ๋šœ๋ ทํ•œ ์†Œ์Œ์„ ๋ƒˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ํ†ตํ™” fdatasync, ํ‰์†Œ๋ณด๋‹ค ํ›จ์”ฌ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  99๋ฒˆ์งธ ๋ฐฑ๋ถ„์œ„์ˆ˜์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋‹น์‹ ์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธฐ์‚ฌ๋Š” ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค fio etcd์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋ฏธ๋””์–ด๊ฐ€ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅธ์ง€ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋‹น์‹ ์—๊ฒŒ ๋‹ฌ๋ ธ์Šต๋‹ˆ๋‹ค! ์„œ๋น„์Šค์—์„œ SSD ๊ธฐ๋ฐ˜ ์Šคํ† ๋ฆฌ์ง€๋กœ ๊ฐ€์ƒ ๋จธ์‹ ์„ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. IBM Cloud.

๋ฒˆ์—ญ๊ฐ€์˜ ์ถ”์‹ 

๊ธฐ์„ฑ ์‚ฌ์šฉ ์‚ฌ๋ก€ fio ๋‹ค๋ฅธ ์ž‘์—…์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์„ ์  ์„œ๋ฅ˜ ๋น„์น˜ ๋˜๋Š” ์ง์ ‘ ํ”„๋กœ์ ํŠธ ์ €์žฅ์†Œ (๋ฌธ์„œ์— ์–ธ๊ธ‰๋œ ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค).

๋ฒˆ์—ญ๊ฐ€์˜ PPS

๋ธ”๋กœ๊ทธ์—์„œ๋„ ์ฝ์–ด๋ณด์„ธ์š”.

์ถœ์ฒ˜ : habr.com

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