Closed ing-eoking closed 4 months ago
~cmdlog stop๊ณผ cmdlog start๊ฐ ์งง์ ์๊ฐ์ ์ด๋ฃจ์ด์ง ์ old cmdlog flush thread๋ ์ ์ ์ข ๋ฃํ๋๋ก ๋ณ๊ฒฝ~ ๋ฌด์กฐ๊ฑด ํ๋์ cmdlog flush thread๋ง ๊ตฌ๋๋๋๋ก ๋ณ๊ฒฝ
@uhm0311 ์ถ๊ฐ ๋ฆฌ๋ทฐ์ด๋ก ์ง์ ํ์ต๋๋ค.
@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๊ฐ ๋ ์ ์์ต๋๋ค.
@namsic
๊ธฐ์กด ๋ฐฉ์์์๋ cmdlog thread๋ฅผ ๋ค์ค์ผ๋ก ๋๋ฆด ๊ฒฝ์ฐ Data buffer ์ถฉ๋์ ํผํ ์ ์์ต๋๋ค. Data Buffer๋ฅผ 2๊ฐ(new, old)๋ก ๊ตฌ์ฑํ๊ฑฐ๋, Head Tail ์ด๊ธฐํ ๋ฐฉ์์ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
long query ์ํฉ์ด ์ ์ ๊ฒ์ด๋ผ ์๊ฐ๋๋ (Memory ์คํ๊ณผ Disk ์คํ์ด ์ํด ๋ฌ๋ผ์ง๋ 8KB ์ด์ ์์ด๋ ํ์์ด ์ ์ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.) ๋จผ์ CMD Log Buffer๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐฉ์์ผ๋ก PR์ ์ฌ๋ฆด๊น์?
๊ทธ๋ฌ๋ฉด ์๋์ ์ด์์์ ํด๊ฒฐ๋ฐฉ์ 3๋ฒ์งธ์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
old, new thread๋ฅผ ๊ตฌ๋ถํ์ฌ old thread๊ฐ ์ข ๋ฃ๋๋๋ก ํ๋ ๊ฒ๋ณด๋ค, ์ด๋ ํ ์์ ์๋ ํ๋์ thread๋ง ์กด์ฌํ๋๋ก ๋ง๋๋ ๊ฒ์ด ์ข๊ฒ ์ต๋๋ค.
์ฆ, cmdlog stop
์ํํ ๋ค์๋ ๊ธฐ์กด thread๊ฐ ์์ ํ ์ข
๋ฃ๋๊ธฐ ์ ๊น์ง๋ cmdlog start
๋ช
๋ น์ ์คํจ ์ฒ๋ฆฌํด์ผ ํ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค.
@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์ ์ก๋ ๊ฒ์ ๋ํ ์ฌ๊ฒํ ๊ฐ ํ์ํฉ๋๋ค.
์ฝ๋ ๋ฐ ์๋จ๋ถ ๋ด์ฉ ์์ ๋์์ต๋๋ค. ๋ถํ์ํ lock ์ ๊ฑฐ๋ ์ถํ์ ๊ฒํ ํ ์ฌ๋ฆฌ๊ฒ ์ต๋๋ค.
@namsic ์ต์ข ๋ฆฌ๋ทฐ ๋ฐ๋๋๋ค.
๐ Related Issue
โจ๏ธ What I did