์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ •๋ณด

๋ฌธ์„œ ๋ฒ„์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

AlloyDB Omni๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ์ ์‘ํ˜• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

AlloyDB Omni๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๊ณต์œ  ๋ฒ„ํผ์˜ ์ƒํ•œ์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒํ•œ์„ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด AlloyDB Omni์—์„œ ๊ณต์œ  ๋ฒ„ํผ ๋ฐฑ์—… ํฌ๊ธฐ๋ฅผ ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ์˜ 80% ๋กœ ์ž๋™ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ณต์œ  ๋ฒ„ํผ์˜ ์ดˆ๊ธฐ ๋ฐฑ์—… ํฌ๊ธฐ๋Š” ์ƒํ•œ๊ณผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

AlloyDB Omni๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ๋ฅผ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹ฑํ•  ๋•Œ ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ๊ณต์œ  ๋ฒ„ํผ ์ง€์› ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋Š” ์ง€๋Šฅํ˜• ๋ฉ”๋ชจ๋ฆฌ ์ž‘์—…์ž๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ž๋™ ๋ฉ”๋ชจ๋ฆฌ

๊ธฐ๋ณธ์ ์œผ๋กœ shared_buffers ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” 0๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” shared buffers ์บ์‹œ ํฌ๊ธฐ์˜ ์ƒํ•œ์„ ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ์˜ 80% ๋กœ ์„ค์ •ํ•˜๋Š” ํŠน์ˆ˜ ๊ฐ’์ž…๋‹ˆ๋‹ค. AlloyDB Omni๋Š” shared_buffers ์ƒํ•œ์˜ 10% ์—์„œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. shared_buffers์ด ๋งž์ถค ๊ฐ’์œผ๋กœ ์žฌ์ •์˜๋˜๋ฉด AlloyDB Omni๋Š” ํ•ด๋‹น ๊ฐ’์„ shared_buffers ํฌ๊ธฐ์˜ ์ƒํ•œ์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ์ง€์ •๋œ ๋งž์ถค ํฌ๊ธฐ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋งž์ถค ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด postgresql.conf ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ shared_buffers๋ฅผ 1GB๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • docker run --name CONTAINER_NAME -e INITDB_ARGS="-c shared_buffers=1GB" $image

  • docker run --name CONTAINER_NAME $image -c shared_buffers=1GB

    CONTAINER_NAME์„ AlloyDB Omni ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์„ค์น˜ํ•  ๋•Œ ํ• ๋‹นํ•œ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ์„ฑ๋Šฅ ์ตœ์ ํ™”

shared_buffers ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ธฐ๋ณธ๊ฐ’์€ ์ผ๋ฐ˜์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ๊ฐ’์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. shared_buffers์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต์œ  ๋ฒ„ํผ ์ƒํ•œ์„ ์ถ”๋ก ํ•˜๋Š” ๊ฒฝ์šฐ cgroup memory.max ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์‚ฐ์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.

์—ด ๊ธฐ๋ฐ˜ ์—”์ง„ ๋ฉ”๋ชจ๋ฆฌ

๋™์  shared_buffers๋Š” ์—ด ๊ธฐ๋ฐ˜ ์—”์ง„ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค. ์—ด ํ˜•์‹ ์—”์ง„์ด ์‚ฌ์šฉ ์„ค์ •๋œ ๊ฒฝ์šฐ ๋™์  shared_buffers ํฌ๊ธฐ๋Š” ์‹œ์Šคํ…œ ๋˜๋Š” cgroup์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ด ๋ฉ”๋ชจ๋ฆฌ์˜ 80% ์—์„œ ์—ด ํ˜•์‹ ์—”์ง„์—์„œ ์‚ฌ์šฉํ•œ ๋ฉ”๋ชจ๋ฆฌ ์–‘์„ ๋นผ์„œ ํŒŒ์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Huge Page

๋Œ€์šฉ๋Ÿ‰ ํŽ˜์ด์ง€๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค. AlloyDB Omni๋Š” ๊ฐ€๋Šฅํ•˜๋ฉด ๋ช…์‹œ์ ์œผ๋กœ huge page๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์šด์˜์ฒด์ œ์˜ transparent huge pages (THP) ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋Œ€ํ˜• ํŽ˜์ด์ง€ ์œ ํ˜•์ด ๋ชจ๋‘ ์ง€์›๋˜์ง€ ์•Š์œผ๋ฉด AlloyDB Omni๊ฐ€ 4k ํŽ˜์ด์ง€๋กœ ๋Œ€์ฒด๋˜๊ณ  ๋Œ€ํ˜• ํŽ˜์ด์ง€๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ตฌ์ฒด์ ์ธ ์•ˆ๋‚ด์™€ ํ•จ๊ป˜ docker ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ docker logs $container_name์— ๊ฒฝ๊ณ ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ AlloyDB Omni ์‹œ์ž‘์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๊ฒฝ๊ณ ๋Š” ๋‹ค์Œ๊ณผ ๋น„์Šทํ•˜๊ฒŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

HINT:  Please either execute the all-in-one setup script:
          docker run --rm --privileged $image setup-host
        OR manually execute:
          echo within_size | sudo tee /sys/kernel/mm/transparent_hugepage/shmem_enabled
          sudo sysctl -w vm.nr_overcommit_hugepages=1048576

๋Ÿฐํƒ€์ž„ ์‹œ ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

AlloyDB Omni๋Š” ์‹œ์Šคํ…œ ๋ถ€ํ•˜๋ฅผ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋™์  shared_buffers ํฌ๊ธฐ ๋ณ€๊ฒฝ
AlloyDB Omni๋Š” ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋Ÿ‰์ด ๋‚ฎ์œผ๋ฉด ๋™์  shared_buffers ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๊ณ  ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋Ÿ‰์ด ๋†’์œผ๋ฉด ํฌ๊ธฐ๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค. ๋™์  shared_buffers ํฌ๊ธฐ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
CREATE EXTENSION IF NOT EXISTS g_memory;
SELECT g_dynamic_shared_size();
์‹œ์Šคํ…œ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋งค์šฐ ๋ถ€์กฑํ•  ๋•Œ PostgreSQL ์—ฐ๊ฒฐ ์ข…๋ฃŒ
AlloyDB Omni๋Š” ์‹œ์Šคํ…œ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋งค์šฐ ๋ถ€์กฑํ•œ ๊ฒƒ์„ ๊ฐ์ง€ํ•˜๋ฉด ๋ถ€ํ•˜๊ฐ€ ์ ์ ˆํ•œ ์ˆ˜์ค€์œผ๋กœ ๋–จ์–ด์งˆ ๋•Œ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ PostgreSQL ์—ฐ๊ฒฐ์„ ์‚ญ์ œํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด AlloyDB Omni๋Š” docker ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ์— ๋‹ค์Œ์„ ๋กœ๊น…ํ•ฉ๋‹ˆ๋‹ค.
WARNING: Sending SIGTERM to pid=xxx NSpid=xxx (VA size = xxxMB) (RSS size = xxxMB)