NetBSD рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓реЗ рдирдпрд╛рдБ NVMM рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд░ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджреИрдЫ

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

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

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

NetBSD рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓реЗ рдирдпрд╛рдБ NVMM рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд░ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджреИрдЫ

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

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

NetBSD рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓реЗ рдирдпрд╛рдБ NVMM рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд░ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджреИрдЫ

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди