Skip to content
This repository was archived by the owner on Jun 14, 2022. It is now read-only.

Latest commit

Β 

History

History
52 lines (39 loc) Β· 2.94 KB

File metadata and controls

52 lines (39 loc) Β· 2.94 KB

νŒŒμ΄λ²„μ˜ μ„±λŠ₯

CPU μ‹œκ°„

νŒŒμ΄λ²„λŠ” μƒμ„±ν•΄λ‘λŠ” κ²ƒλ§ŒμœΌλ‘œλŠ” CPUλ₯Ό μ „ν˜€ μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 단, νŒŒμ΄λ²„κ°€ μΌμ‹œμ •μ§€ν–ˆλ‹€κ°€ λ‹€μ‹œ 싀행을 μž¬κ°œν•˜λŠ” μ‹œμ μ— CPU μ‹œκ°„μ„ μ•½κ°„ μ†ŒλΉ„ν•©λ‹ˆλ‹€. λŒ€λž΅ μ—”μ§„ APIκ°€ λ¦¬ν„΄ν•˜λŠ” FTvoidλ‚˜ FT<TResult>λ₯Ό await으둜 λŒ€κΈ°ν•  λ•Œλ§ˆλ‹€ μ‘°κΈˆμ”© μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•œλ‹€κ³  μƒκ°ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.

섀계λ₯Ό μœ„ν•œ κ°€μ΄λ“œλΌμΈ 수치

ν•˜λ“œμ›¨μ–΄λ§ˆλ‹€ μ •ν™•ν•œ 값이 λ‹€λ₯΄κ² μ§€λ§Œ, λŒ€λž΅μ˜ 계산을 μœ„ν•œ μˆ˜μΉ˜λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • νŒŒμ΄λ²„ μ‹œμž‘+μ’…λ£Œ 1νšŒλ§ˆλ‹€ μ•½ 10Β΅s(0.01ms)둜 μ–΄λ¦Όμž‘μ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 즉, νŒŒμ΄λ²„λ₯Ό λ§Œλ“€κ³  λ²„λ¦¬λŠ” 일이 λŒ€λ‹¨νžˆ μ‹ΈκΈ° λ•Œλ¬Έμ—, μŠ€λ ˆλ“œλ₯Ό ν’€λ§ν•˜λ“―μ΄ νŒŒμ΄λ²„λ₯Ό 풀링할 ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

  • μ–΄λ–€ μ΄μœ λ‘œλ“  νŒŒμ΄λ²„μ˜ μΌμ‹œμ •μ§€+μ‹€ν–‰μž¬κ°œ 1νšŒλ§ˆλ‹€ μ†ŒλΉ„λ˜λŠ” μ΅œμ†Œ CPU μ‹œκ°„μ„ μ•½ 2Β΅s(0.002ms)둜 μ–΄λ¦Όμž‘μ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 이 값은 νŒŒμ΄λ²„ κ°œμˆ˜κ°€ λ§Žμ•„μ§ˆμˆ˜λ‘ μ»€μ§‘λ‹ˆλ‹€.

  • Sleep을 톡해 νŒŒμ΄λ²„λ₯Ό μΌμ‹œμ •μ§€+μ‹€ν–‰μž¬κ°œν•  λ•Œλ§ˆλ‹€ μ†ŒλΉ„λ˜λŠ” CPU μ‹œκ°„μ„ μ•½ 4Β΅s(0.004ms)둜 μ–΄λ¦Όμž‘μ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 이 값은 νŒŒμ΄λ²„ κ°œμˆ˜κ°€ λ§Žμ•„μ§ˆμˆ˜λ‘ μ»€μ§‘λ‹ˆλ‹€.

Active fiber count 1,000 10,000 100,000
Overhead per EngineAPI.Fibering.Yield 1.5Β΅s 2Β΅s 3Β΅s
Overhead per EngineAPI.Fibering.Sleep 3Β΅s 4Β΅s 7Β΅s

CPU μ‹œκ°„ μΆ”μ •μ˜ 예

ν•˜λ‚˜μ˜ μ„œλ²„ ν”„λ‘œμ„ΈμŠ€μ— 였브젝트λ₯Ό 10,000개 λ§Œλ“ λ‹€κ³  μΉ©μ‹œλ‹€. 이 μ˜€λΈŒμ νŠΈλ“€λ§ˆλ‹€ 각각 νŒŒμ΄λ²„λ₯Ό 뢙이고, Sleep을 μ‚¬μš©ν•΄μ„œ 50msλ§ˆλ‹€ μ—…λ°μ΄νŠΈ ν”„λ‘œμ‹œμ €λ₯Ό μ‹€ν–‰ν•˜κ²Œ 해도 λ κΉŒμš”?

계산해 λ΄…μ‹œλ‹€.

μ˜€λΈŒμ νŠΈλ“€λ§ˆλ‹€ 1μ΄ˆμ— 20번의 Sleep 호좜이 λ°œμƒν•  κ²ƒμž…λ‹ˆλ‹€. Sleep을 톡해 νŒŒμ΄λ²„λ₯Ό μΌμ‹œμ •μ§€+μ‹€ν–‰μž¬κ°œν•  λ•Œλ§ˆλ‹€ CPU μ‹œκ°„μ„ μ•½ 4Β΅s μ†Œλͺ¨ν•˜λ―€λ‘œ, λ§€ 1μ΄ˆλ§ˆλ‹€ μ˜€λΈŒμ νŠΈλ“€λ§ˆλ‹€ Sleepμ—λ§Œ 80Β΅sλ₯Ό μ†Œλͺ¨ν•©λ‹ˆλ‹€. 10,000개의 μ˜€λΈŒμ νŠΈκ°€ μžˆμœΌλ―€λ‘œ, λ§€ 1μ΄ˆλ§ˆλ‹€ 전체 μ˜€λΈŒμ νŠΈκ°€ Sleep에 μ†Œλͺ¨ν•˜λŠ” μ‹œκ°„μ„ λͺ¨λ‘ ν•©μΉ˜λ©΄ 0.8μ΄ˆμž…λ‹ˆλ‹€..;;;;

메인 μŠ€λ ˆλ“œμ˜ CPU μ‹œκ°„ 쀑 80%λ₯Ό νŒŒμ΄λ²„ μ „ν™˜μ—λ§Œ μ†Œλͺ¨ν•˜κ²Œ λ©λ‹ˆλ‹€. μ΄λ ‡κ²Œ λ§Œλ“€λ©΄ μ•ˆ 되겠죠.

λ©”λͺ¨λ¦¬

νŒŒμ΄λ²„ ν•˜λ‚˜λ§ˆλ‹€ μ•½ 2.2KB둜 μ–΄λ¦Όμž‘μ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 즉 νŒŒμ΄λ²„λ₯Ό 10,000개 생성해두면 λ©”λͺ¨λ¦¬λ₯Ό 22MB μ‚¬μš©ν•©λ‹ˆλ‹€. λ¬Όλ‘  νŒŒμ΄λ²„μ˜ μ‹€ν–‰ μŠ€νƒμ— λ¬Όλ €μžˆλŠ” λ©”λͺ¨λ¦¬κ°€ μžˆμ„ κ²ƒμ΄λ―€λ‘œ μ‹€μ œ λ©”λͺ¨λ¦¬ μ†Œλͺ¨λŸ‰μ€ 더 μ»€μ§€μ§€λ§Œ, λŒ€λΆ€λΆ„μ˜ κ²½μš°μ— CPU μ‹œκ°„μ— λΉ„ν•΄μ„œ λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ„ λ¬΄μ‹œν•  수 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€.

κΈ°μ€€ ν•˜λ“œμ›¨μ–΄

  • Lenovo YOGA 900S μ—μ„œ μΈ‘μ •ν–ˆμŠ΅λ‹ˆλ‹€. 2015년에 μΆœμ‹œλœ 팬 μ—†λŠ” λ…ΈνŠΈλΆ μ»΄ν“¨ν„°μž…λ‹ˆλ‹€.
  • CPU: Intel(R) Core(TM) m7-6Y75 CPU @ 1.20GHz
  • OS: Windows 10 Home 64bit

μ„±λŠ₯ κ°œμ„  μ˜ˆμ •

μ•žμœΌλ‘œ μ΅œμ ν™”λ₯Ό 톡해 Sleepμ΄λ‚˜ νŒŒμ΄λ²„ μΌμ‹œμ •μ§€+μ‹€ν–‰μž¬κ°œμ— λ“œλŠ” CPU μ‹œκ°„μ΄ 쀄어듀 μ—¬μ§€κ°€ μžˆμŠ΅λ‹ˆλ‹€.