QEMU 10.0.0 ์—๋ฎฌ๋ ˆ์ดํ„ฐ ์ถœ์‹œ

QEMU 10.0.0 ํ”„๋กœ์ ํŠธ์˜ ์ถœ์‹œ๊ฐ€ ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋กœ์„œ QEMU๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์™„์ „ํžˆ ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ ํ•˜๋‚˜์˜ ํ•˜๋“œ์›จ์–ด ํ”Œ๋žซํผ์šฉ์œผ๋กœ ์ปดํŒŒ์ผ๋œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด x86 ํ˜ธํ™˜ PC์—์„œ ARM ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. QEMU์˜ ๊ฐ€์ƒํ™” ๋ชจ๋“œ์—์„œ๋Š” CPU์—์„œ ๋ช…๋ น์„ ์ง์ ‘ ์‹คํ–‰ํ•˜๊ณ  Linux์˜ Xen ํ•˜์ดํผ๋ฐ”์ด์ €๋‚˜ KVM ๋ชจ๋“ˆ ๋˜๋Š” Linux์˜ NVMM ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์—์„œ์˜ ์ฝ”๋“œ ์‹คํ–‰ ์„ฑ๋Šฅ์ด ํ•˜๋“œ์›จ์–ด ์‹œ์Šคํ…œ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. NetBSD.

์ด ํ”„๋กœ์ ํŠธ๋Š” ์›๋ž˜ x86 ํ”Œ๋žซํผ์šฉ์œผ๋กœ ๋นŒ๋“œ๋œ Linux ์‹คํ–‰ ํŒŒ์ผ์ด ๋น„ x86 ์•„ํ‚คํ…์ฒ˜์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก Fabrice Bellard๊ฐ€ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋…„๊ฐ„์˜ ๊ฐœ๋ฐœ์„ ํ†ตํ•ด 14๊ฐœ์˜ ํ•˜๋“œ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์—๋ฎฌ๋ ˆ์ด์…˜ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ ์—๋ฎฌ๋ ˆ์ดํŠธ๋œ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜์˜ ์ˆ˜๋Š” 400๊ฐœ๋ฅผ ์ดˆ๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ 10.0์„ ์ค€๋น„ํ•˜๋ฉด์„œ 2800๋ช…์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ 211๊ฐœ ์ด์ƒ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

QEMU 10.0์— ์ถ”๊ฐ€๋œ ์ฃผ์š” ๊ฐœ์„  ์‚ฌํ•ญ:

  • virtio-scsi ๋“œ๋ผ์ด๋ฒ„๋Š” ๊ฐ€์ƒ SCSI ์ปจํŠธ๋กค๋Ÿฌ(SCSI ํ˜ธ์ŠคํŠธ ๋ฒ„์Šค ์–ด๋Œ‘ํ„ฐ)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ ๊ธฐ๊ธฐ๋‹ค์ค‘ ๋ ˆ๋ฒจ ํ ์‹œ์Šคํ…œ(๋ฉ€ํ‹ฐํ) ์ง€์›์ด ์ถ”๊ฐ€๋˜์–ด ์„œ๋กœ ๋‹ค๋ฅธ ๋ธ”๋ก ์žฅ์น˜์— ๋Œ€ํ•œ ํ๋ฅผ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฉ€ํ‹ฐ์ฝ”์–ด ์‹œ์Šคํ…œ์—์„œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์•ก์„ธ์Šค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค(๋‹จ์ผ ๋“œ๋ผ์ด๋ธŒ์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ํ๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ I/O ์Šค๋ ˆ๋“œ์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ). ๊ฐ€์ƒ ๋ธ”๋ก ์žฅ์น˜ ๋“œ๋ผ์ด๋ฒ„(virtio-blk)์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ ๊ฐ€์ƒ SCSI ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์„ฑ๋Šฅ์ด ์•ฝ๊ฐ„ ๋–จ์–ด์ง€์ง€๋งŒ 28๊ฐœ ์ด์ƒ์˜ ๋“œ๋ผ์ด๋ธŒ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • VFIO(๊ฐ€์ƒ ํ•จ์ˆ˜ I/O)๋Š” 11์„ธ๋Œ€(Rocket Lake) ๋ฐ 12์„ธ๋Œ€(Alder Lake) Intel ํ”„๋กœ์„ธ์„œ์— ์‚ฌ์šฉ๋˜๋Š” ํ†ตํ•ฉ GPU์— ๋Œ€ํ•œ IGD(ํ†ตํ•ฉ ๊ทธ๋ž˜ํ”ฝ ์žฅ์น˜) ํŒจ์Šค์Šค๋ฃจ ์ง€์›์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ATI GPU(x550)์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. PCI PM(์ „์› ๊ด€๋ฆฌ)์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง€์›์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด QEMU๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” QEMU ๋จธ์‹  ํ”„๋กœํ† ์ฝœ(QMP)์— ๋Œ€ํ•œ ์„ค๋ช…์„œ๊ฐ€ ์ƒ๋‹นํžˆ ๊ฐœ์ •๋˜๊ณ  ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด ๋ผ์ด๋ธŒ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ชจ๋“œ "cpr-transfer"(CheckPoint ๋ฐ Restart)๊ฐ€ ์ถ”๊ฐ€๋˜์–ด, ๋™์ผํ•œ ํ˜ธ์ŠคํŠธ์—์„œ ์‹คํ–‰๋˜๋Š” ์ƒˆ๋กœ์šด QEMU ์ธ์Šคํ„ด์Šค๋กœ ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์„ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“œ๋Š” ๋‚ด์šฉ์„ ๋ณต์‚ฌํ•˜์ง€ ์•Š๊ณ  ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ƒˆ๋กœ์šด QEMU์˜ ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„์— ๋งคํ•‘ํ•˜์—ฌ ์ค‘๋‹จ ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒŒ์ŠคํŠธ์˜ ํ•˜๋“œ์›จ์–ด ๊ฐ€์† ๊ทธ๋ž˜ํ”ฝ์„ ์œ„ํ•ด macOS์—์„œ ์ œ๊ณต๋˜๋Š” ParavirtualizedGraphics ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” 'apple-gfx-pci' ๋ฐ 'apple-gfx-mmio' ๊ทธ๋ž˜ํ”ฝ ์žฅ์น˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋“œ๋ผ์ด๋ฒ„๋Š” x86-64 ์žฅ์น˜์—์„œ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๊ณ , ๋‘ ๋ฒˆ์งธ ๋“œ๋ผ์ด๋ฒ„๋Š” ARM64์šฉ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • x86 ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” ์ด์ œ Intel Xeon Clearwater Forest์™€ Sierra Forest v2 ํ”„๋กœ์„ธ์„œ ๋ชจ๋ธ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ๋ช…๋ น์˜ ์—๋ฎฌ๋ ˆ์ด์…˜์ด ๊ฐ€์†ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ARM ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” ์ด์ œ NPCM8445 ํ‰๊ฐ€ํŒ ๋ฐ i.MX 8M Plus EVK ๋ณด๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. FEAT_AFP, FEAT_RPRES ๋ฐ FEAT_XS ํ™•์žฅ๊ณผ EL2 ๋ฌผ๋ฆฌ์  ๋ฐ ๊ฐ€์ƒ ํƒ€์ด๋จธ์˜ ์—๋ฎฌ๋ ˆ์ด์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Arm PXA2xx CPU ๋ฐ iwMMXt ๋ช…๋ น์–ด ์—๋ฎฌ๋ ˆ์ด์…˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • RISC-V ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” Microblaze V ๋ณด๋“œ, Ascalon CPU ๋ฐ RV64 Xiangshan Nanhu CPU์˜ ์—๋ฎฌ๋ ˆ์ด์…˜์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. 'svukte', 'ssstateen', 'smrnmi', 'smdbltrp'/'ssdbltrp', 'supm', 'sspm' ๋ช…๋ น ์„ธํŠธ ์•„ํ‚คํ…์ฒ˜ ํ™•์žฅ, IOMMU ๋ณ€ํ™˜ ํƒœ๊ทธ ๋ฐ riscv-iommu-sys ์žฅ์น˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • HPPA ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” Diva GSP BMC ๋ณด๋“œ์˜ ์—๋ฎฌ๋ ˆ์ด์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. SeaBIOS-hppa ํŽŒ์›จ์–ด๊ฐ€ ๋ฒ„์ „ 18๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฉ์†ก ์†๋„๊ฐ€ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒ CPU ์žฌ์„ค์ •์„ ์œ„ํ•œ ๊ฐœ์„ ๋œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. 64๋น„ํŠธ ์‹œ์Šคํ…œ์—์„œ๋Š” ์ตœ๋Œ€ 256GB์˜ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ๊ฐ–์ถ˜ ๊ตฌ์„ฑ์˜ ์—๋ฎฌ๋ ˆ์ด์…˜์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • LoongArch ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ์ด์ œ CPU ํ•ซํ”Œ๋Ÿฌ๊น…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๊ฐ€์ƒํ™”๋œ IPI(ํ”„๋กœ์„ธ์„œ ๊ฐ„ ์ธํ„ฐ๋ŸฝํŠธ)๊ฐ€ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ดํผ๋ฐ”์ด์ € ๋ฆฌ์†Œ์Šค ํ• ๋‹น ์‹œ๊ฐ„ ์ดˆ๊ณผ ์ถ”์  ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. KVM์™ธ๋ถ€ ์ธํ„ฐ๋ŸฝํŠธ(extioi)์˜ ๊ฐ€์ƒ ๋ผ์šฐํŒ… ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • s390x ์•„ํ‚คํ…์ฒ˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” 17์„ธ๋Œ€ ๋ฉ”์ธํ”„๋ ˆ์ž„ CPU์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๊ณ  virtio-mem ์ง€์›์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด IOMMU๋ฅผ ์šฐํšŒํ•˜์—ฌ PCI ์žฅ์น˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€