naver / arcus-memcached

ARCUS memory cache server
https://github.com/naver/arcus
Apache License 2.0
70 stars 55 forks source link

INTERNAL: Wait till the cmdlog flush thread ends #762

Closed ing-eoking closed 4 months ago

ing-eoking commented 5 months ago

๐Ÿ”— Related Issue

โŒจ๏ธ What I did

ing-eoking commented 5 months ago

~cmdlog stop๊ณผ cmdlog start๊ฐ€ ์งง์€ ์‹œ๊ฐ„์— ์ด๋ฃจ์–ด์งˆ ์‹œ old cmdlog flush thread๋Š” ์ •์ƒ ์ข…๋ฃŒํ•˜๋„๋ก ๋ณ€๊ฒฝ~ ๋ฌด์กฐ๊ฑด ํ•˜๋‚˜์˜ cmdlog flush thread๋งŒ ๊ตฌ๋™๋˜๋„๋ก ๋ณ€๊ฒฝ

jhpark816 commented 5 months ago

@uhm0311 ์ถ”๊ฐ€ ๋ฆฌ๋ทฐ์–ด๋กœ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

ing-eoking commented 5 months ago

@namsic

pthread_join()์„ ํ˜ธ์ถœํ•˜๋ฉด cmdlog thread๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ• ํ…๋ฐ, ์ด ์‹œ๊ฐ„์€ ํ•ญ์ƒ ์งง์€ ์‹œ๊ฐ„์ธ๊ฐ€์š”?

๋ชจ์ข…์˜ ์ด์œ ๋กœ ์Šค๋ ˆ๋“œ ์ข…๋ฃŒ๊ฐ€ ์ง€์—ฐ๋˜๋ฉด, cmdlog stop ๋ช…๋ น์ด ๊ทธ ์ž์ฒด๋กœ long query๊ฐ€ ๋˜์–ด ๋‹ค๋ฅธ ์š”์ฒญ์˜ ์ฒ˜๋ฆฌ์— ์˜ํ–ฅ์„ ์ค„ ๊ฐ€๋Šฅ์„ฑ์€ ์—†๋‚˜์š”?

2๊ฐ€์ง€ ์ƒํ™ฉ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค. cmdlog thread๋Š” 4KB ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์ด์ง€ ์•Š์œผ๋ฉด, 5ms ๋™์•ˆ sleep์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•ด์„œ do_cmdlog_flush_wakeup ์„ ์ˆ˜ํ–‰์‹œํ‚ค๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ cmdlog buffer์— ์Œ“์ธ data ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ํฐ ๊ฒฝ์šฐ ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ 4KB ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์–ด ํŒŒ์ผ์— ์“ฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ๋Š” long query๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ing-eoking commented 5 months ago

@namsic

๊ธฐ์กด ๋ฐฉ์‹์—์„œ๋Š” cmdlog thread๋ฅผ ๋‹ค์ค‘์œผ๋กœ ๋Œ๋ฆด ๊ฒฝ์šฐ Data buffer ์ถฉ๋Œ์„ ํ”ผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Data Buffer๋ฅผ 2๊ฐœ(new, old)๋กœ ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜, Head Tail ์ดˆ๊ธฐํ™” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

long query ์ƒํ™ฉ์ด ์ ์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐ๋˜๋‚˜ (Memory ์ŠคํŽ™๊ณผ Disk ์ŠคํŽ™์ด ์˜ํ•ด ๋‹ฌ๋ผ์ง€๋‚˜ 8KB ์ด์ƒ ์Œ“์ด๋Š” ํ˜„์ƒ์ด ์ ์„ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.) ๋จผ์ € CMD Log Buffer๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ PR์„ ์˜ฌ๋ฆด๊นŒ์š”?

๊ทธ๋Ÿฌ๋ฉด ์•„๋ž˜์˜ ์ด์Šˆ์—์„œ ํ•ด๊ฒฐ๋ฐฉ์•ˆ 3๋ฒˆ์งธ์œผ๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

namsic commented 5 months ago

old, new thread๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ old thread๊ฐ€ ์ข…๋ฃŒ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค, ์–ด๋Š ํ•œ ์‹œ์ ์—๋Š” ํ•˜๋‚˜์˜ thread๋งŒ ์กด์žฌํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฆ‰, cmdlog stop ์ˆ˜ํ–‰ํ•œ ๋’ค์—๋„ ๊ธฐ์กด thread๊ฐ€ ์™„์ „ํžˆ ์ข…๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” cmdlog start ๋ช…๋ น์„ ์‹คํŒจ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

ing-eoking commented 5 months ago

@namsic

์ฆ‰, cmdlog stop ์ˆ˜ํ–‰ํ•œ ๋’ค์—๋„ ๊ธฐ์กด thread๊ฐ€ ์™„์ „ํžˆ ์ข…๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” cmdlog start ๋ช…๋ น์„ ์‹คํŒจ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

@uhm0311 ๋‹˜๊ณผ ๊ฐ™์€ ์˜๊ฒฌ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿด ๊ฒฝ์šฐ ๊ด€๋ฆฌ์ž๊ฐ€ cmdlog start์˜ ์‹œ์ž‘ ์ง€์ ์„ ์•Œ ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ๋Š” cmdlog๊ฐ€ ์ด๋ฏธ ์ผœ์ ธ ์žˆ๊ฑฐ๋‚˜ ํŒŒ์ผ ์ƒ์„ฑ ์‹คํŒจ์— ๋Œ€ํ•ด์„œ๋งŒ cmdlog start๊ฐ€ ์‹คํŒจํ•˜๋ฉฐ, ์ด๋Š” ์—๋Ÿฌ ์›์ธ์ด ํ•ด๋‹น cmdlog๊ฐ€ ์•ž์œผ๋กœ๋„ ๋ถˆ๊ฐ€ํ•จ์ด ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ์กด thread๊ฐ€ ์ข…๋ฃŒ๊ฐ€ ๋˜์ง€ ์•Š์•„ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋‚ ๋ฆด ๊ฒฝ์šฐ ๊ด€๋ฆฌ์ž๋Š” ์ง€์†์ ์œผ๋กœ cmdlog start๋ฅผ ๋‚ ๋ ค ์ผœ์ง์„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  old thread๊ฐ€ ๋‚จ๊ฒŒ ๋˜๋Š” ์ด์œ ๋Š” ์จ์•ผํ•  ๋ฉ”์‹œ์ง€๋ฅผ ๋งˆ์น˜์ง€ ๋ชปํ•ด์„œ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ž์‹ ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค ์“ฐ๊ฒŒ ๋˜๋ฉด ์ข…๋ฃŒ๋  ๊ฒƒ์ด๋ฉฐ, ๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” new thread๋งŒ ๋‚จ๊ฒŒ๋ฉ๋‹ˆ๋‹ค. ๋‘ thread๊ฐ„์— ๋กœ๊ทธ ํŒŒ์ผ์ด ๊ตฌ๋ถ„๋˜๋ฉฐ, ๊ณต์œ ๋˜๋Š” buffer ๋‚ด์—์„œ๋„ write ํ•  ์œ„์น˜ ๋˜ํ•œ ๋‹ค๋ฅด๋ฏ€๋กœ thread ๊ฐ„์˜ ์›์ž์„ฑ์„ ๊ผญ ๊ฐ€์ ธ๊ฐ€์•ผํ•  ์ด์œ ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด ์ฝ”๋“œ์—์„œ๋Š” ๋น„๊ต์  lock(buffer, flush, cmdlog)์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ƒ์„ฑํ–ˆ์œผ๋ฉฐ, ๋กœ์ง ๊ตฌ์กฐ ๋˜ํ•œ cost ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ๊ตฌ์กฐ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์ €๋Š” ์šฐ์„  ์ด ์˜๋„๋ฅผ ๋”ฐ๋ผ๊ฐ€๋Š” ๊ฒƒ์ด ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ, ๋งŒ์•ฝ ํ•œ thread๋งŒ ๋‚จ๊ธด๋‹ค๋ฉด, ๋ถˆํ•„์š”ํ•œ lock์„ ์žก๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์žฌ๊ฒ€ํ† ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ing-eoking commented 5 months ago

์ฝ”๋“œ ๋ฐ ์ƒ๋‹จ๋ถ€ ๋‚ด์šฉ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ•„์š”ํ•œ lock ์ œ๊ฑฐ๋Š” ์ถ”ํ›„์— ๊ฒ€ํ†  ํ›„ ์˜ฌ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

jhpark816 commented 4 months ago

@namsic ์ตœ์ข… ๋ฆฌ๋ทฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.