Go ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด 1.26 ์ถœ์‹œ

๊ตฌ๊ธ€์ด ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ฐธ์—ฌ๋กœ ๊ฐœ๋ฐœํ•œ Go ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ 1.26๊ฐœ์›”๊ฐ„์˜ ๊ฐœ๋ฐœ ๋์— XNUMX ๋ฒ„์ „์œผ๋กœ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์–ธ์–ด๋Š” ์ปดํŒŒ์ผ ์–ธ์–ด์˜ ๋†’์€ ์„ฑ๋Šฅ๊ณผ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด์˜ ์žฅ์ (์ฝ”๋“œ ์ž‘์„ฑ์˜ ์šฉ์ด์„ฑ, ๋น ๋ฅธ ๊ฐœ๋ฐœ ์†๋„, ์˜ค๋ฅ˜ ๋ณดํ˜ธ ๋“ฑ)์„ ๊ฒฐํ•ฉํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋Š” BSD ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

Go์˜ ๊ตฌ๋ฌธ์€ Oberon ์–ธ์–ด์—์„œ ์ผ๋ถ€ ์ฐจ์šฉํ•œ C ์–ธ์–ด์˜ ์นœ์ˆ™ํ•œ ์š”์†Œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์–ธ์–ด๋Š” ๋งค์šฐ ๊ฐ„๊ฒฐํ•˜์ง€๋งŒ ์ฝ”๋“œ๋Š” ์ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. Go ์ฝ”๋“œ๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๋ณ„๋„์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ์‹คํ–‰ ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ๋˜์–ด(ํ”„๋กœํŒŒ์ผ๋ง, ๋””๋ฒ„๊น… ๋ชจ๋“ˆ ๋ฐ ๊ธฐํƒ€ ๋Ÿฐํƒ€์ž„ ๋ฌธ์ œ ๊ฐ์ง€ ํ•˜์œ„ ์‹œ์Šคํ…œ์ด ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ํ†ตํ•ฉ๋จ) C ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋น„์Šทํ•œ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๋Š” ์ฒ˜์Œ์—๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๋ฉ€ํ‹ฐ์ฝ”์–ด ์‹œ์Šคํ…œ์—์„œ์˜ ํšจ์œจ์ ์ธ ์ž‘๋™์„ ์—ผ๋‘์— ๋‘๊ณ  ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์šด์˜์ž ์ˆ˜์ค€์—์„œ๋Š” ๋ณ‘๋ ฌ ๊ณ„์‚ฐ๊ณผ ๋ณ‘๋ ฌ ๋ฉ”์„œ๋“œ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๊ฐ€ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ์ด ์–ธ์–ด๋Š” ๋˜ํ•œ ๋ฒ„ํผ ์˜ค๋ฒ„๋Ÿฐ ๋ณดํ˜ธ ๋ฐ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ๊ธฐ๋Šฅ์„ ๋‚ด์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ ๋ฆด๋ฆฌ์Šค์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ž‘์€ ๊ฐ์ฒด์˜ ์ƒ์„ฑ ๋ฐ ์Šค์บ” ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋„๋ก ์„ค๊ณ„๋œ "greenteagc" ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ "greenteagc"๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ 10~40% ๊ฐ์†Œํ•˜๋Š” ํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ๋‚ด์žฅ ํ•จ์ˆ˜ `new()`๋ฅผ ์ด์ œ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ์ง€์ •ํ•˜์—ฌ ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐ๊ฐ’์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, `x := int64(300) ptr := &x` ๋Œ€์‹  `ptr := new(int64(300))`์™€ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ œ๋„ค๋ฆญ ํƒ€์ž…์€ ์ž์‹ ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์—์„œ ์ž๊ธฐ ์ž์‹ ์„ ์ธ์ˆ˜๋กœ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ํƒ€์ž…์„ ์ž๊ธฐ ์ž์‹ ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). ์•„๋ž˜ ์˜ˆ์ œ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์—์„œ Adder๊ฐ€ ์ž๊ธฐ ์ž์‹ ์„ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์€ ๋” ์ด์ƒ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. type Adder[A Adder[A]] interface { Add(A) A } func algo[A Adder[A]](x, y A) A { return x.Add(y) }
  • cgo๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Go ์ฝ”๋“œ์—์„œ C ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์•ฝ 30% ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค.
  • 64๋น„ํŠธ ํ”Œ๋žซํผ์˜ ๋Ÿฐํƒ€์ž„์€ ์‹œ์ž‘ ์‹œ ์ฃผ์†Œ ๊ณต๊ฐ„ ๋ฌด์ž‘์œ„ํ™”๋ฅผ ๊ตฌํ˜„ํ•˜๋ฏ€๋กœ, cgo๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•˜๋Š” C ์ฝ”๋“œ์˜ ์ทจ์•ฝ์ ์„ ์•…์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ์˜ˆ์ธก์ด ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค. "GOEXPERIMENT=norandomizedheapbase64" ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌด์ž‘์œ„ํ™”๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์Šฌ๋ผ์ด์Šค์šฉ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํž™์ด ์•„๋‹Œ ์Šคํƒ์— ํ• ๋‹นํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Š˜์–ด๋‚ฌ์œผ๋ฉฐ, ์ด๋Š” ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๊ธ์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.
  • "go fix" ๋ช…๋ น์–ด๋Š” ํ†ต๊ณ„์  ์ฝ”๋“œ ๋ถ„์„ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” analysis ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์™„์ „ํžˆ ์žฌ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. modernize ํŒจํ‚ค์ง€์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ถ„์„๊ธฐ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ, ์ด ๋ถ„์„๊ธฐ๋Š” ์ƒˆ๋กœ์šด ์–ธ์–ด ๋ฐ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ๋Šฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฝ”๋“œ ๊ฐ„์†Œํ™”๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ "//go:fix inline" ์ง€์‹œ๋ฌธ์œผ๋กœ ํ‘œ์‹œ๋œ ๋ชจ๋“  ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ์ธ๋ผ์ธ์œผ๋กœ ํ™•์žฅํ•˜๋Š” "inline" ๋ถ„์„๊ธฐ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด ํŒจํ‚ค์ง€์ธ crypto/hpke(HPKE - ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ณต๊ฐœ ํ‚ค ์•”ํ˜ธํ™” ๊ตฌํ˜„), crypto/mlkem/mlkemtest ๋ฐ testing/cryptotest๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • AMD64 ์‹œ์Šคํ…œ์—์„œ SIMD ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒกํ„ฐ ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ €์ˆ˜์ค€ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์‹คํ—˜์ ์ธ simd/archsimd ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ง€์ •๋œ ํ•จ์ˆ˜ ์‹คํ–‰ ์ค‘์— ํ• ๋‹น๋œ ์ž„์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ดˆ๊ธฐํ™”(0์œผ๋กœ ์„ค์ •)ํ•˜๊ธฐ ์œ„ํ•œ ์‹คํ—˜์ ์ธ ํŒจํ‚ค์ง€ runtime/secret์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ณ ๋ฃจํ‹ด ๋ˆ„์ถœ์„ ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์‹คํ—˜์ ์ธ ํ”„๋กœํŒŒ์ผ์ธ goroutineleak๊ฐ€ runtime/pprof ํŒจํ‚ค์ง€์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster