WD рд▓реЗ Rust рдорд╛ NVMe рдбреНрд░рд╛рдЗрднрд░ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджреИрдЫред FreeBSD рдорд╛ Rust рдХреЛ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ

рд▓рд┐рдирдХреНрд╕ рдкреНрд▓рдореНрдмрд░реНрд╕ 2022 рд╕рдореНрдореЗрд▓рдирдорд╛ рдпреА рджрд┐рдирд╣рд░реВрдорд╛, рдкрд╢реНрдЪрд┐рдореА рдбрд┐рдЬрд┐рдЯрд▓рдХрд╛ рдПрдХ рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд▓реЗ NVM-Express (NVMe) рдЗрдиреНрдЯрд░рдлреЗрд╕рдХреЛ рд╕рд╛рде SSD рдбреНрд░рд╛рдЗрднрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдбреНрд░рд╛рдЗрднрд░рдХреЛ рд╡рд┐рдХрд╛рд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рдкреНрд░рд╕реНрддреБрддреАрдХрд░рдг рджрд┐рдП, рд░рд╕реНрдЯ рднрд╛рд╖рд╛рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рд░ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛред рд╕реНрддрд░ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрдЭреИ рд╡рд┐рдХрд╛рд╕рдХреЛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдЪрд░рдгрдорд╛ рдЫ рднрдиреНрдиреЗ рддрдереНрдпрдХреЛ рдмрд╛рд╡рдЬреБрдж, рдкрд░реАрдХреНрд╖рдгрд▓реЗ рджреЗрдЦрд╛рдПрдХреЛ рдЫ рдХрд┐ рд░рд╕реНрдЯ рднрд╛рд╖рд╛рдорд╛ NVMe рдбреНрд░рд╛рдЗрднрд░рдХреЛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реНрдиреЗрд▓рдорд╛ рдЙрдкрд▓рдмреНрдз C рднрд╛рд╖рд╛рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ NVMe рдбреНрд░рд╛рдЗрднрд░рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред

WD рд▓реЗ Rust рдорд╛ NVMe рдбреНрд░рд╛рдЗрднрд░ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджреИрдЫред FreeBSD рдорд╛ Rust рдХреЛ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ
WD рд▓реЗ Rust рдорд╛ NVMe рдбреНрд░рд╛рдЗрднрд░ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджреИрдЫред FreeBSD рдорд╛ Rust рдХреЛ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ

рд░рд┐рдкреЛрд░реНрдЯрд▓реЗ рдмрддрд╛рдЙрдБрдЫ рдХрд┐ C рдорд╛ рд╣рд╛рд▓рдХреЛ NVMe рдбреНрд░рд╛рдЗрднрд░ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╕рдиреНрддреЛрд╖рдЬрдирдХ рдЫ, рддрд░ NVMe рдЙрдкрдкреНрд░рдгрд╛рд▓реА рд░рд╕реНрдЯрдорд╛ рдбреНрд░рд╛рдЗрднрд░рд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдиреЗ рд╕рдореНрднрд╛рд╡реНрдпрддрд╛ рдЕрдиреНрд╡реЗрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рд░рд╛рдореНрд░реЛ рдкреНрд▓реЗрдЯрдлрд░реНрдо рд╣реЛ, рдХрд┐рдирдХрд┐ рдпреЛ рдПрдХрджрдо рд╕рд░рд▓ рдЫ, рд╡реНрдпрд╛рдкрдХ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ рдЫрдиреН, рд░ рдЫред рддреБрд▓рдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдорд╛рдгрд┐рдд рд╕рдиреНрджрд░реНрдн рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд░ рд╡рд┐рднрд┐рдиреНрди рдЗрдиреНрдЯрд░рдлреЗрд╕рд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ (dev, pci, dma, blk-mq, gendisk, sysfs)ред

рдпреЛ рдиреЛрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ рдХрд┐ рд░рд╕реНрдЯрдХреЛ рд▓рд╛рдЧрд┐ PCI NVMe рдбреНрд░рд╛рдЗрднрд░рд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рддрд░ рдЕрдЭреИ рд╡реНрдпрд╛рдкрдХ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░ рдЫреИрди, рдХрд┐рдирдХрд┐ рдпрд╕рд▓рд╛рдИ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реБрдзрд╛рд░рд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫред рднрд╛рд╡реА рдпреЛрдЬрдирд╛рд╣рд░реВрдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдмреНрд▓рдХрд╣рд░реВрдХреЛ рдХреЛрдб рд╣рдЯрд╛рдЙрдиреЗ, рдпрдиреНрддреНрд░ рд╣рдЯрд╛рдЙрдиреЗ рд░ рдбреНрд░рд╛рдЗрднрд░ рдЕрдирд▓реЛрдб рдЧрд░реНрдиреЗ рдХрд╛рд░реНрдпрд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрдиреЗ, sysfs рдЗрдиреНрдЯрд░рдлреЗрд╕рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрдиреЗ, рдЕрд▓реНрдЫреА рд╕реБрд░реБрд╡рд╛рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗ, blk-mq рдХреЛ рд▓рд╛рдЧрд┐ рдбреНрд░рд╛рдЗрднрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ, рд░ queue_rq рдХреЛ рд▓рд╛рдЧрд┐ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рдореЛрдбреЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдкреНрд░рдпреЛрдЧ рд╕рдорд╛рд╡реЗрд╢ рдЫред

рдердк рд░реВрдкрдорд╛, рд╣рд╛рдореА NCC рд╕рдореВрд╣ рджреНрд╡рд╛рд░рд╛ FreeBSD рдХрд░реНрдиреЗрд▓рдХреЛ рд▓рд╛рдЧрд┐ Rust рднрд╛рд╖рд╛рдорд╛ рдбреНрд░рд╛рдЗрднрд░рд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрди рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░рд┐рдПрдХрд╛ рдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓рд╛рдИ рдиреЛрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдЙрджрд╛рд╣рд░рдгрдХреЛ рд░реВрдкрдорд╛, рд╣рд╛рдореА рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЗрдХреЛ рдбреНрд░рд╛рдЗрднрд░рдХреЛ рд╡рд┐рд╕реНрддреГрдд рд░реВрдкрдорд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрдЫреМрдВ рдЬрд╕рд▓реЗ рдлрд╛рдЗрд▓ /dev/rustmodule рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдбрд╛рдЯрд╛ рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдЫред рдкреНрд░рдпреЛрдЧрдХреЛ рдЕрд░реНрдХреЛ рдЪрд░рдгрдорд╛, NCC рд╕рдореВрд╣рд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рд░ рдлрд╛рдЗрд▓ рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рд╕реБрд░рдХреНрд╖рд╛рдорд╛ рд╕реБрдзрд╛рд░ рдЧрд░реНрди рд░рд╕реНрдЯ рднрд╛рд╖рд╛рдорд╛ рдХрд░реНрдиреЗрд▓рдХреЛ рдореБрдЦреНрдп рднрд╛рдЧрд╣рд░реВ рдкреБрди: рдХрд╛рдо рдЧрд░реНрдиреЗ рд╕рдореНрднрд╛рд╡рдирд╛рд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫред

рдпрджреНрдпрдкрд┐, рдпреЛ рджреЗрдЦрд╛рдЗрдПрдХреЛ рдЫ рдХрд┐ рдпреЛ Rust рднрд╛рд╖рд╛рдорд╛ рд╕рд░рд▓ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫ, FreeBSD рдХрд░реНрдиреЗрд▓ рдорд╛ Rust рдХреЛ рдХрдбрд╛ рдПрдХреАрдХрд░рдг рдердк рдХрд╛рдо рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреЗрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрд┐рдиреАрд╣рд░реВрд▓реЗ рд╕рдмрд╕рд┐рд╕реНрдЯрдорд╣рд░реВ рд░ рдХрд░реНрдиреЗрд▓ рд╕рдВрд░рдЪрдирд╛рд╣рд░реВрдорд╛ рдПрдмреНрд╕реНрдЯреНрд░реНрдпрд╛рдХреНрд╢рди рд▓реЗрдпрд░рд╣рд░реВрдХреЛ рд╕реЗрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░реНрдЫрдиреН, рд░рд╕реНрдЯ рдлрд░ рд▓рд┐рдирдХреНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯрджреНрд╡рд╛рд░рд╛ рддрдпрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдПрдб-рдЕрдирд╣рд░реВ рдЬрд╕реНрддреИред рднрд╡рд┐рд╖реНрдпрдорд╛, рд╣рд╛рдореА Illumos рдХрд░реНрдиреЗрд▓рд╕рдБрдЧ рдпрд╕реНрддреИ рдкреНрд░рдпреЛрдЧрд╣рд░реВ рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░реНрдиреЗ рд░ Rust рдорд╛ рд╕рд╛рдорд╛рдиреНрдп abstractions рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрдиреЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдЙрдБрдЫреМрдВ рдЬреБрди Linux, BSD рд░ Illumos рдХреЛ рд▓рд╛рдЧрд┐ Rust рдорд╛ рд▓реЗрдЦрд┐рдПрдХрд╛ рдбреНрд░рд╛рдЗрднрд░рд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рдорд╛рдЗрдХреНрд░реЛрд╕рдлреНрдЯ рд░ рдЧреБрдЧрд▓рдХрд╛ рдЕрдиреБрд╕рд╛рд░, рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдлреНрдЯрд╡реЗрдпрд░ рдЙрддреНрдкрд╛рджрдирд╣рд░реВрдорд╛ рд▓рдЧрднрдЧ 70% рдХрдордЬреЛрд░реАрд╣рд░реВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдореЗрдореЛрд░реА рд╣реНрдпрд╛рдиреНрдбрд▓рд┐рдВрдЧрдХреЛ рдХрд╛рд░рдгрд▓реЗ рд╣реБрдиреНрдЫрдиреНред рдпреЛ рдЖрд╢рд╛ рдЧрд░рд┐рдиреНрдЫ рдХрд┐ рд░рд╕реНрдЯ рднрд╛рд╖рд╛рдХреЛ рдкреНрд░рдпреЛрдЧрд▓реЗ рдореЗрдореЛрд░реАрдХреЛ рд╕рд╛рде рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рдордХреЛ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛ рд╣реБрдиреЗ рдХрдордЬреЛрд░реАрд╣рд░реВрдХреЛ рдЬреЛрдЦрд┐рдорд▓рд╛рдИ рдХрдо рдЧрд░реНрдиреЗрдЫ, рд░ рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рдШрдЯрдирд╛рд▓рд╛рдИ рд╣рдЯрд╛рдЙрдиреЗрдЫ рдЬрд╕реНрддреИ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░рд▓рд╛рдИ рдореБрдХреНрдд рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐ рд░ рдмрдлрд░рд▓рд╛рдИ рдУрднрд░рд░рди рдЧрд░реНрдиреЗред

рдореЗрдореЛрд░реА-рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реНрдпрд╛рдиреНрдбрд▓рд┐рдВрдЧ рд░рд╕реНрдЯрдорд╛ рдХрдореНрдкрд╛рдЗрд▓ рд╕рдордпрдорд╛ рд╕рдиреНрджрд░реНрдн рдЬрд╛рдБрдЪ, рд╡рд╕реНрддреБрдХреЛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд░ рд╡рд╕реНрддреБ рдЬреАрд╡рдирдХрд╛рд▓ (рд╕реНрдХреЛрдк) рдХреЛ рдЯреНрд░рдпрд╛рдХ рд░рд╛рдЦреНрджреИ, рд╕рд╛рдереИ рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдХреНрд░рдордорд╛ рдореЗрдореЛрд░реА рдкрд╣реБрдБрдЪрдХреЛ рд╢реБрджреНрдзрддрд╛рдХреЛ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдорд╛рд░реНрдлрдд рдкреНрд░рджрд╛рди рдЧрд░рд┐рдиреНрдЫред Rust рд▓реЗ рдкреВрд░реНрдгрд╛рдВрдХ рдУрднрд░рдлреНрд▓реЛрд╣рд░реВ рд╡рд┐рд░реБрджреНрдз рд╕реБрд░рдХреНрд╖рд╛ рдкрдирд┐ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рдЕрдШрд┐ рдЪрд░ рдорд╛рдирд╣рд░реВрдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рдкреНрд░рд╛рд░рдореНрднрд┐рдХрддрд╛ рдЖрд╡рд╢реНрдпрдХ рдЫ, рддреНрд░реБрдЯрд┐рд╣рд░реВрд▓рд╛рдИ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрдорд╛ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрджрдЫ, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдиреНрджрд░реНрднрд╣рд░реВ рд░ рдЪрд░рд╣рд░реВрдХреЛ рдЕрд╡рдзрд╛рд░рдгрд╛ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫ, рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐рд╣рд░реВрд▓рд╛рдИ рдХрдо рдЧрд░реНрди рдмрд▓рд┐рдпреЛ рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдЩ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред

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

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