WD ืžืคืชื—ืช ื“ืจื™ื™ื‘ืจ NVMe ื‘- Rust. ื ื™ืกื•ื™ ืขื Rust ื‘- FreeBSD

ื‘ื›ื ืก Linux Plumbers 2022 ืฉืžืชืงื™ื™ื ื‘ื™ืžื™ื ืืœื”, ืžื”ื ื“ืก ืžื—ื‘ืจืช Western Digital ื”ืฆื™ื’ ืžืฆื’ืช ืขืœ ืคื™ืชื•ื— ื“ืจื™ื™ื‘ืจ ื ื™ืกื™ื•ื ื™ ืขื‘ื•ืจ ื›ื•ื ื ื™ SSD ืขื ืžืžืฉืง NVM-Express (NVMe), ืฉื ื›ืชื‘ ื‘ืฉืคืช Rust ื•ืคื•ืขืœ ื‘ืœื™ื‘ืช ืœื™ื ื•ืงืก ืจึธืžึธื”. ืœืžืจื•ืช ื”ืขื•ื‘ื“ื” ืฉื”ืคืจื•ื™ืงื˜ ืขื“ื™ื™ืŸ ื‘ืฉืœื‘ ืžื•ืงื“ื ืฉืœ ืคื™ืชื•ื—, ื‘ื“ื™ืงื•ืช ื”ืจืื• ืฉื”ื‘ื™ืฆื•ืขื™ื ืฉืœ ื“ืจื™ื™ื‘ืจ ื”-NVMe ื‘ืฉืคืช Rust ืชื•ืืžื™ื ืœื“ืจื™ื™ื‘ืจ ื”-NVMe ืฉื ื›ืชื‘ ื‘ืฉืคืช C ื”ื–ืžื™ื ื” ื‘ืงืจื ืœ.

WD ืžืคืชื—ืช ื“ืจื™ื™ื‘ืจ NVMe ื‘- Rust. ื ื™ืกื•ื™ ืขื Rust ื‘- FreeBSD
WD ืžืคืชื—ืช ื“ืจื™ื™ื‘ืจ NVMe ื‘- Rust. ื ื™ืกื•ื™ ืขื Rust ื‘- FreeBSD

ื”ื“ื•"ื— ืงื•ื‘ืข ืฉื“ืจื™ื™ื‘ืจ ื”-NVMe ื”ื ื•ื›ื—ื™ ื‘-C ืžืกืคืง ืœื—ืœื•ื˜ื™ืŸ ืขื‘ื•ืจ ืžืคืชื—ื™ื, ืืš ืชืช-ืžืขืจื›ืช ื”-NVMe ื”ื™ื ืคืœื˜ืคื•ืจืžื” ื˜ื•ื‘ื” ืœื‘ื—ื™ื ืช ื”ื”ื™ืชื›ื ื•ืช ืฉืœ ืคื™ืชื•ื— ื“ืจื™ื™ื‘ืจื™ื ื‘-Rust, ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ื“ื™ ืคืฉื•ื˜, ื‘ืฉื™ืžื•ืฉ ื ืจื—ื‘, ื‘ืขืœ ื“ืจื™ืฉื•ืช ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื•ืช, ื•ื™ืฉ ืœื• ื“ืจื™ืฉื•ืช ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื•ืช. ื™ื™ืฉื•ื ื”ืชื™ื™ื—ืกื•ืช ืžื•ื›ื— ืœื”ืฉื•ื•ืื” ื•ืชื•ืžืš ื‘ืžืžืฉืงื™ื ืฉื•ื ื™ื (dev, pci, dma, blk-mq, gendisk, sysfs).

ื™ืฆื•ื™ืŸ ื›ื™ ืžื ื”ืœ ื”ื”ืชืงืŸ PCI NVMe ืขื‘ื•ืจ Rust ื›ื‘ืจ ืžืกืคืง ืืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื”ื“ืจื•ืฉื” ืœืคืขื•ืœื”, ืืš ืขื“ื™ื™ืŸ ืื™ื ื• ืžื•ื›ืŸ ืœืฉื™ืžื•ืฉ ื ืจื—ื‘, ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ื“ื•ืจืฉ ืฉื™ืคื•ืจื™ื ืคืจื˜ื ื™ื™ื. ืชื•ื›ื ื™ื•ืช ืขืชื™ื“ื™ื•ืช ื›ื•ืœืœื•ืช ืกื™ืœื•ืง ื”ืงื•ื“ ืฉืœ ื‘ืœื•ืงื™ื ืœื ื‘ื˜ื•ื—ื™ื ืงื™ื™ืžื™ื, ืชืžื™ื›ื” ื‘ืคืขื•ืœื•ืช ื”ืกืจืช ื”ืชืงื ื™ื ื•ืคืจื™ืงืช ื“ืจื™ื™ื‘ืจื™ื, ืชืžื™ื›ื” ื‘ืžืžืฉืง sysfs, ื”ื˜ืžืขืช ืืชื—ื•ืœ ืขืฆืœืŸ, ื™ืฆื™ืจืช ื“ืจื™ื™ื‘ืจ ืขื‘ื•ืจ blk-mq, ื•ื”ืชื ืกื•ืช ื‘ืฉื™ืžื•ืฉ ื‘ืžื•ื“ืœ ืชื›ื ื•ืช ืืกื™ื ื›ืจื•ื ื™ ืขื‘ื•ืจ queue_rq.

ื‘ื ื•ืกืฃ, ืื ื• ื™ื›ื•ืœื™ื ืœืฆื™ื™ืŸ ืืช ื”ื ื™ืกื•ื™ื™ื ืฉืขืจื›ื” ืงื‘ื•ืฆืช NCC ืœืคื™ืชื•ื— ื“ืจื™ื™ื‘ืจื™ื ื‘ืฉืคืช Rust ืขื‘ื•ืจ ืœื™ื‘ืช FreeBSD. ื›ื“ื•ื’ืžื”, ืื ื• ื‘ื•ื—ื ื™ื ื‘ืคื™ืจื•ื˜ ื“ืจื™ื™ื‘ืจ ื”ื“ ืคืฉื•ื˜ ืฉืžื—ื–ื™ืจ ื ืชื•ื ื™ื ืฉื ื›ืชื‘ื• ืœืงื•ื‘ืฅ /dev/rustmodule. ื‘ืฉืœื‘ ื”ื‘ื ืฉืœ ื”ื ื™ืกื•ื™, ืงื‘ื•ืฆืช NCC ืฉื•ืงืœืช ืืช ื”ืืคืฉืจื•ืช ืœืขื‘ื“ ืžื—ื“ืฉ ืืช ืจื›ื™ื‘ื™ ื”ืœื™ื‘ื” ืฉืœ ื”ืœื™ื‘ื” ื‘ืฉืคืช Rust ื›ื“ื™ ืœืฉืคืจ ืืช ื”ืื‘ื˜ื—ื” ืฉืœ ืคืขื•ืœื•ืช ื”ืจืฉืช ื•ื”ืงื‘ืฆื™ื.

ืขื ื–ืืช, ืœืžืจื•ืช ืฉื”ื•ื›ื— ืฉืืคืฉืจ ืœื™ืฆื•ืจ ืžื•ื“ื•ืœื™ื ืคืฉื•ื˜ื™ื ื‘ืฉืคืช Rust, ืฉื™ืœื•ื‘ ื”ื“ื•ืง ื™ื•ืชืจ ืฉืœ Rust ืœืชื•ืš ืœื™ื‘ืช FreeBSD ื™ื“ืจื•ืฉ ืขื‘ื•ื“ื” ื ื•ืกืคืช. ืœื“ื•ื’ืžื”, ื”ื ืžื–ื›ื™ืจื™ื ืืช ื”ืฆื•ืจืš ืœื™ืฆื•ืจ ืงื‘ื•ืฆื” ืฉืœ ืฉื›ื‘ื•ืช ื”ืคืฉื˜ื” ืขืœ ืคื ื™ ืžืขืจื›ื•ืช ื”ืžืฉื ื” ื•ืžื‘ื ื™ ื”ืœื™ื‘ื”, ื‘ื“ื•ืžื” ืœืชื•ืกืคื•ืช ืฉื”ื•ื›ื ื• ืขืœ ื™ื“ื™ ืคืจื•ื™ืงื˜ Rust for Linux. ื‘ืขืชื™ื“, ืื ื• ืžืชื›ื ื ื™ื ืœืขืจื•ืš ื ื™ืกื•ื™ื™ื ื“ื•ืžื™ื ืขื ืœื™ื‘ืช Illumos ื•ืœื–ื”ื•ืช ื”ืคืฉื˜ื•ืช ื ืคื•ืฆื•ืช ื‘- Rust ืฉื™ื›ื•ืœื•ืช ืœืฉืžืฉ ื‘ืžื ื”ืœื™ ื”ืชืงื ื™ื ืฉื ื›ืชื‘ื• ื‘- Rust ืขื‘ื•ืจ Linux, BSD ื•- Illumos.

ืœืคื™ ืžื™ืงืจื•ืกื•ืคื˜ ื•ื’ื•ื’ืœ, ื›-70% ืžื”ื—ื•ืœืฉื•ืช ื‘ืžื•ืฆืจื™ ื”ืชื•ื›ื ื” ืฉืœื”ืŸ ื ื’ืจืžื•ืช ืžื˜ื™ืคื•ืœ ืœื ื‘ื˜ื•ื— ื‘ื–ื™ื›ืจื•ืŸ. ืฆืคื•ื™ ืฉื”ืฉื™ืžื•ืฉ ื‘ืฉืคืช Rust ื™ืฆืžืฆื ืืช ื”ืกื™ื›ื•ืŸ ืœืคื’ื™ืขื•ื™ื•ืช ื”ื ื’ืจืžื•ืช ื›ืชื•ืฆืื” ืžืขื‘ื•ื“ื” ืœื ื‘ื˜ื•ื—ื” ืขื ื”ื–ื™ื›ืจื•ืŸ, ื•ื™ืžื ืข ืืช ื”ืชืจื—ืฉื•ืชืŸ ืฉืœ ืฉื’ื™ืื•ืช ื›ืžื• ื’ื™ืฉื” ืœืื–ื•ืจ ื–ื™ื›ืจื•ืŸ ืœืื—ืจ ืฉื—ืจื•ืจ ื•ื“ืจื™ืกื” ืฉืœ ื”ืžืื’ืจ.

ื‘ื˜ื™ื—ื•ืช ื–ื™ื›ืจื•ืŸ ืžืกื•ืคืงืช ื‘-Rust ื‘ื–ืžืŸ ื”ืงื•ืžืคื™ืœืฆื™ื” ื‘ืืžืฆืขื•ืช ื‘ื“ื™ืงืช ื”ืชื™ื™ื—ืกื•ืช, ืžืขืงื‘ ืื—ืจ ื‘ืขืœื•ืช ืขืœ ืื•ื‘ื™ื™ืงื˜ ื•ืžืฉืš ื—ื™ื™ ืื•ื‘ื™ื™ืงื˜ (ื”ื™ืงืฃ), ื•ื›ืŸ ื‘ืืžืฆืขื•ืช ื”ืขืจื›ื” ืฉืœ ื ื›ื•ื ื•ืช ื”ื’ื™ืฉื” ืœื–ื™ื›ืจื•ืŸ ื‘ืžื”ืœืš ื‘ื™ืฆื•ืข ืงื•ื“. Rust ืžืกืคืงืช ื’ื ื”ื’ื ื” ืžืคื ื™ ื”ืฆืคืช ืžืกืคืจื™ื ืฉืœืžื™ื, ื“ื•ืจืฉืช ืืชื—ื•ืœ ื—ื•ื‘ื” ืฉืœ ืขืจื›ื™ ืžืฉืชื ื™ื ืœืคื ื™ ื”ืฉื™ืžื•ืฉ, ืžื˜ืคืœืช ื‘ืฉื’ื™ืื•ืช ื˜ื•ื‘ ื™ื•ืชืจ ื‘ืกืคืจื™ื™ื” ื”ืกื˜ื ื“ืจื˜ื™ืช, ืžื™ื™ืฉืžืช ืืช ื”ืจืขื™ื•ืŸ ืฉืœ ื”ืคื ื™ื•ืช ื•ืžืฉืชื ื™ื ื‘ืœืชื™ ื ื™ืชื ื™ื ืœืฉื™ื ื•ื™ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืžืฆื™ืขื” ื”ืงืœื“ื” ืกื˜ื˜ื™ืช ื—ื–ืงื” ื›ื“ื™ ืœืžื–ืขืจ ืฉื’ื™ืื•ืช ืœื•ื’ื™ื•ืช.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”