NetBSD рдкреНрд░рдХрд▓реНрдк рдирд╡реАрди NVMM рд╣рд╛рдпрдкрд░рд╡рд╛рдЗрдЬрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдд рдЖрд╣реЗ

рдиреЗрдЯрдмреАрдПрд╕рдбреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбреЗрд╡реНрд╣рд▓рдкрд░реНрд╕ рдШреЛрд╖рд┐рдд рдХреЗрд▓реЗ рдирд╡реАрди рд╣рд╛рдпрдкрд░рд╡рд╛рдЗрдЬрд░ рдЖрдгрд┐ рд╕рдВрдмрдВрдзрд┐рдд рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рди рд╕реНрдЯреЕрдХрдЪреНрдпрд╛ рдирд┐рд░реНрдорд┐рддреАрдмрджреНрджрд▓, рдЬреЗ рдЖрдзреАрдкрд╛рд╕реВрди рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ NetBSD-рд╡рд░реНрддрдорд╛рди рд╢рд╛рдЦреЗрдд рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ NetBSD 9 рдЪреНрдпрд╛ рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд╢рдирд╛рдд рдСрдлрд░ рдХреЗрд▓реЗ рдЬрд╛рдИрд▓. NVMM рд╕рдзреНрдпрд╛ x86_64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдгреНрдпрд╛рд╕рд╛рдареА рдорд░реНрдпрд╛рджрд┐рдд рдЖрд╣реЗ рдЖрдгрд┐ рдпрд╛рд╕рд╛рдареА рджреЛрди рдмреЕрдХрдПрдВрдб рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рд╡рд░реНрдЪреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рди рдпрдВрддреНрд░рдгрд╛ рд╕рдХреНрд╖рдо рдХрд░рдгреЗ: рдЗрдВрдЯреЗрд▓ CPUs рд╕рд╛рдареА AMD рдЖрдгрд┐ x86-VMX CPU рд╡рд░реНрдЪреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рди рд╡рд┐рд╕реНрддрд╛рд░рд╛рд╕рд╛рдареА рд╕рдорд░реНрдердирд╛рд╕рд╣ x86-SVM. рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд, рдПрдХрд╛ рд╣реЛрд╕реНрдЯрд╡рд░ 128 рдкрд░реНрдпрдВрдд рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди рдЪрд╛рд▓рд╡рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ, рдЬреНрдпрд╛рдкреИрдХреА рдкреНрд░рддреНрдпреЗрдХрд╛рд▓рд╛ 256 рд╡рд░реНрдЪреНрдпреБрдЕрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ (VCPU) рдЖрдгрд┐ 128 GB RAM рд╡рд╛рдЯрдк рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

NVMM рдордзреНрдпреЗ рдбреНрд░рд╛рдЗрд╡реНрд╣рд░ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдХрд░реНрдирд▓ рд╕реНрддрд░рд╛рд╡рд░ рдЪрд╛рд▓рддреЛ рдЖрдгрд┐ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рди рдореЗрдХреЕрдирд┐рдЭрдордордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рд╕рдордиреНрд╡рдпрд┐рдд рдХрд░рддреЛ рдЖрдгрд┐ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕рдордзреНрдпреЗ рдЪрд╛рд▓рдгрд╛рд░рд╛ Libnvmm рд╕реНрдЯреЕрдХ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рддреЛ. рдХрд░реНрдирд▓ рдШрдЯрдХ рдЖрдгрд┐ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЬрд╛рдЧрд╛ рдпрд╛рдВрдЪреНрдпрд╛рддреАрд▓ рдкрд░рд╕реНрдкрд░ рдХреНрд░рд┐рдпрд╛ IOCTL рджреНрд╡рд╛рд░реЗ рдХреЗрд▓реА рдЬрд╛рддреЗ. NVMM рдЪреЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЬреЗ KVM рд╕рд╛рд░рдЦреНрдпрд╛ рд╣рд╛рдпрдкрд░рд╡рд╛рдЗрдЬрд░реНрд╕рдкрд╛рд╕реВрди рд╡реЗрдЧрд│реЗ рдХрд░рддреЗ HAXM рдЖрдгрд┐ Bhyve, рдЕрд╕реЗ рдЖрд╣реЗ рдХреА рдХрд░реНрдирд▓ рд╕реНрддрд░рд╛рд╡рд░ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рд╡рд░реНрдЪреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рди рдореЗрдХреЕрдирд┐рдЭрдореНрд╕рднреЛрд╡рддреА рдмрдВрдзрдирд╛рдВрдЪрд╛ рдХрд┐рдорд╛рди рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рдЖрдгрд┐ рд╕рд░реНрд╡ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рдЗрдореНрдпреБрд▓реЗрд╢рди рдХреЛрдб рдХрд░реНрдирд▓рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдЬрд╛рдЧреЗрдд рд╣рд▓рд╡рд▓реЗ рдЬрд╛рддрд╛рдд. рд╣рд╛ рджреГрд╖реНрдЯреАрдХреЛрди рддреБрдореНрд╣рд╛рд▓рд╛ рдЙрдиреНрдирдд рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░рд╛рдВрд╕рд╣ рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓реЗрд▓реНрдпрд╛ рдХреЛрдбрдЪреЗ рдкреНрд░рдорд╛рдг рдХрдореА рдХрд░рдгреНрдпрд╛рд╕ рдЖрдгрд┐ рд╣рд╛рдпрдкрд░рд╡рд╛рдЗрдЬрд░рдордзреАрд▓ рдЕрд╕реБрд░рдХреНрд╖рд╛рдВрд╡рд░ рд╣рд▓реНрд▓рд╛ рдЭрд╛рд▓реНрдпрд╛рд╕ рд╕рдВрдкреВрд░реНрдг рд╕рд┐рд╕реНрдЯрдорд╢реА рддрдбрдЬреЛрдб рдХрд░рдгреНрдпрд╛рдЪрд╛ рдзреЛрдХрд╛ рдХрдореА рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЛ. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдкреНрд░рдХрд▓реНрдкрд╛рдЪреА рдбреАрдмрдЧрд┐рдВрдЧ рдЖрдгрд┐ рдлрдЭрд┐рдВрдЧ рдЪрд╛рдЪрдгреА рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рд╕рд░рд▓реАрдХреГрдд рдЖрд╣реЗ.

рддрдерд╛рдкрд┐, Libnvmm рдордзреНрдпреЗ рд╕реНрд╡рддрдГ рдЗрдореНрдпреБрд▓реЗрдЯрд░ рдлрдВрдХреНрд╢рдиреНрд╕ рдирд╕рддрд╛рдд, рдкрд░рдВрддреБ рдлрдХреНрдд рдПрдХ API рдкреНрд░рджрд╛рди рдХрд░рддреЗ рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ NVMM рд╕рдорд░реНрдерди рд╡рд┐рджреНрдпрдорд╛рди рдЗрдореНрдпреБрд▓реЗрдЯрд░реНрд╕рдордзреНрдпреЗ рд╕рдорд╛рдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, QEMU. API рдордзреНрдпреЗ рд╡рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рд▓реЙрдиреНрдЪ рдХрд░рдгреЗ, рдЕрддрд┐рдереА рдкреНрд░рдгрд╛рд▓реАрд▓рд╛ рдореЗрдорд░реА рд╡рд╛рдЯрдк рдХрд░рдгреЗ, рдЖрдгрд┐ VCPUs рд╡рд╛рдЯрдк рдХрд░рдгреЗ рдпрд╛рд╕рд╛рд░рдЦреА рдХрд╛рд░реНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд. рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдзрд╛рд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рд╕рдВрднрд╛рд╡реНрдп рдЕрдЯреЕрдХ рд╡реЗрдХреНрдЯрд░ рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, libnvmm рдлрдХреНрдд рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рд╡рд┐рдирдВрддреА рдХреЗрд▓реЗрд▓реА рдлрдВрдХреНрд╢рдиреНрд╕ рдкреБрд░рд╡рддреЛ-рдбрд┐рдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рд╣рдБрдбрд▓рд░реНрд╕ рдЖрдкреЛрдЖрдк рдХреЙрд▓ рдХреЗрд▓реЗ рдЬрд╛рдд рдирд╛рд╣реАрдд рдЖрдгрд┐ рдЬрд░ рддреЗ рдЯрд╛рд│рддрд╛ рдЖрд▓реЗ рддрд░ рдЕрдЬрд┐рдмрд╛рдд рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реАрдд. NVMM рдЧреЛрд╖реНрдЯреА рд╕реЛрдкреНрдпрд╛ рдареЗрд╡рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЗ, рдЦреВрдк рдХреНрд▓рд┐рд╖реНрдЯ рди рд╣реЛрддрд╛, рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреНрдпрд╛ рдХрд╛рдорд╛рдЪреНрдпрд╛ рдЬрд╛рд╕реНрддреАрдд рдЬрд╛рд╕реНрдд рдкреИрд▓реВрдВрд╡рд░ рдирд┐рдпрдВрддреНрд░рдг рдареЗрд╡рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ.

NetBSD рдкреНрд░рдХрд▓реНрдк рдирд╡реАрди NVMM рд╣рд╛рдпрдкрд░рд╡рд╛рдЗрдЬрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдд рдЖрд╣реЗ

NVMM рдЪрд╛ рдХрд░реНрдирд▓-рд╕реНрддрд░реАрдп рднрд╛рдЧ NetBSD рдХрд░реНрдирд▓рд╕рд╣ рдЕрдЧрджреА рдШрдЯреНрдЯрдкрдгреЗ рд╕рдорд╛рдХрд▓рд┐рдд рдХреЗрд▓реЗрд▓рд╛ рдЖрд╣реЗ, рдЖрдгрд┐ рдЕрддрд┐рдереА OS рдЖрдгрд┐ рд╣реЛрд╕реНрдЯ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рддреАрд▓ рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪреЗрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рдХрдореА рдХрд░реВрди рд╕реБрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рдирд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЛ. рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдЬрд╛рдЧреЗрдЪреНрдпрд╛ рдмрд╛рдЬреВрдиреЗ, libnvmm рд╕рд╛рдорд╛рдиреНрдп I/O рдСрдкрд░реЗрд╢рдиреНрд╕ рдПрдХрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЗ рдЖрдгрд┐ рдЕрдирд╛рд╡рд╢реНрдпрдХрдкрдгреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд░рдгреЗ рдЯрд╛рд│рддреЗ. рдореЗрдорд░реА рд╡рд╛рдЯрдк рдкреНрд░рдгрд╛рд▓реА pmap рдЙрдкрдкреНрд░рдгрд╛рд▓реАрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЖрд╣реЗ, рдЬреА рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд┐рд╕реНрдЯреАрдордордзреАрд▓ рдореЗрдорд░реА рдХрдореА рдЭрд╛рд▓реНрдпрд╛рд╕ рдЕрддрд┐рдереА рдореЗрдорд░реА рдкреГрд╖реНрдареЗ рд╕реНрд╡реЕрдк рд╡рд┐рднрд╛рдЬрдирд╛рдордзреНрдпреЗ рдмрд╛рд╣реЗрд░ рдХрд╛рдврдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. NVMM рдЬрд╛рдЧрддрд┐рдХ рд▓реЙрдХ рдЖрдгрд┐ рд╕реНрдХреЗрд▓рдкрд╛рд╕реВрди рдореБрдХреНрдд рдЖрд╣реЗ, рдЬреНрдпрд╛рдореБрд│реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдЕрддрд┐рдереА рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХрд╛рдЪ рд╡реЗрд│реА рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ CPU рдХреЛрд░рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рддрд╛ рдпреЗрддреЛ.

рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рд╡рд░реНрдЪреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рди рдпрдВрддреНрд░рдгрд╛ рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА NVMM рд╡рд╛рдкрд░рдгрд╛рд░реЗ QEMU-рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ. QEMU рдЪреНрдпрд╛ рдореБрдЦреНрдп рд╕рдВрд░рдЪрдиреЗрдд рддрдпрд╛рд░ рдкреЕрдЪреЗрд╕ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреЗ рдХрд╛рдо рд╕реБрд░реВ рдЖрд╣реЗ. QEMU+NVMM рд╕рдВрдпреЛрдЬрди рдЖрдзреАрдЪ рдЖрд╣реЗ рддреЛ рд╕рдВрдордд FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 рдЖрдгрд┐ рдЗрддрд░ OS рд╕рд╣ x86_64 рд╕рд┐рд╕реНрдЯреАрдорд╡рд░ AMD рдЖрдгрд┐ Intel рдкреНрд░реЛрд╕реЗрд╕рд░рд╕рд╣ рдЕрддрд┐рдереА рдкреНрд░рдгрд╛рд▓реА рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рдЪрд╛рд▓рд╡рд╛ (NVMM рд╕реНрд╡рддрдГ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╢реА рдЬреЛрдбрд▓реЗрд▓реЗ рдирд╛рд╣реА, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдпреЛрдЧреНрдп рдмреЕрдХрдПрдВрдб рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛рд╕ , рддреЗ ARM64 рд╕рд┐рд╕реНрдЯрдорд╡рд░ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЕрд╕реЗрд▓). NVMM рдЪреНрдпрд╛ рдкреБрдвреАрд▓ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреНрдпрд╛ рдХреНрд╖реЗрддреНрд░рд╛рдВрдордзреНрдпреЗ, рд╡реИрдпрдХреНрддрд┐рдХ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдЪреЗ рд╕рдБрдбрдмреЙрдХреНрд╕ рдЕрд▓рдЧрд╛рд╡ рджреЗрдЦреАрд▓ рд▓рдХреНрд╖рд╛рдд рдШреЗрддрд▓реЗ рдЬрд╛рддреЗ.

NetBSD рдкреНрд░рдХрд▓реНрдк рдирд╡реАрди NVMM рд╣рд╛рдпрдкрд░рд╡рд╛рдЗрдЬрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдд рдЖрд╣реЗ

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛