WD เบเปเบฒเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป€เบงเบต NVMe เปƒเบ™ Rust. เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบเบฑเบš Rust เปƒเบ™ FreeBSD

ะะฐ ะฟั€ะพั…ะพะดัั‰ะตะน ะฒ ัั‚ะธ ะดะฝะธ ะบะพะฝั„ะตั€ะตะฝั†ะธะธ Linux Plumbers 2022 ะธะฝะถะตะฝะตั€ ะธะท ะบะพะผะฟะฐะฝะธะธ Western Digital ะฒั‹ัั‚ัƒะฟะธะป ั ะดะพะบะปะฐะดะพะผ ะพ ั€ะฐะทั€ะฐะฑะพั‚ะบะต ัะบัะฟะตั€ะธะผะตะฝั‚ะฐะปัŒะฝะพะณะพ ะดั€ะฐะนะฒะตั€ะฐ ะดะปั SSD-ะฝะฐะบะพะฟะธั‚ะตะปะตะน ั ะธะฝั‚ะตั€ั„ะตะนัะพะผ NVM-Express (NVMe), ะฝะฐะฟะธัะฐะฝะฝะพะณะพ ะฝะฐ ัะทั‹ะบะต Rust ะธ ั€ะฐะฑะพั‚ะฐัŽั‰ะตะณะพ ะฝะฐ ัƒั€ะพะฒะฝะต ัะดั€ะฐ Linux. ะะตัะผะพั‚ั€ั ะฝะฐ ั‚ะพ, ั‡ั‚ะพ ะฟั€ะพะตะบั‚ ะฟะพะบะฐ ะฝะฐั…ะพะดะธั‚ัั ะฝะฐ ั€ะฐะฝะฝะตะผ ัั‚ะฐะฟะต ั€ะฐะทะฒะธั‚ะธั, ะฟั€ะพะฒะตะดั‘ะฝะฝะพะต ั‚ะตัั‚ะธั€ะพะฒะฐะฝะธะต ะฟะพะบะฐะทะฐะปะพ, ั‡ั‚ะพ ะฟั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ัŒ NVMe-ะดั€ะฐะนะฒะตั€ะฐ ะฝะฐ ัะทั‹ะบะต Rust ัะพะพั‚ะฒะตั‚ัั‚ะฒัƒะตั‚ ะธะผะตัŽั‰ะตะผัƒัั ะฒ ัะดั€ะต NVMe-ะดั€ะฐะนะฒะตั€ัƒ, ะฝะฐะฟะธัะฐะฝะฝะพะผัƒ ะฝะฐ ัะทั‹ะบะต ะกะธ.

WD เบเปเบฒเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป€เบงเบต NVMe เปƒเบ™ Rust. เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบเบฑเบš Rust เปƒเบ™ FreeBSD
WD เบเปเบฒเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป€เบงเบต NVMe เปƒเบ™ Rust. เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบเบฑเบš Rust เปƒเบ™ FreeBSD

ะ’ ะดะพะบะปะฐะดะต ะณะพะฒะพั€ะธั‚ัั, ั‡ั‚ะพ ั‚ะตะบัƒั‰ะธะน NVMe-ะดั€ะฐะนะฒะตั€ ะฝะฐ ัะทั‹ะบะต ะกะธ ะฟะพะปะฝะพัั‚ัŒัŽ ัƒัั‚ั€ะฐะธะฒะฐะตั‚ ั€ะฐะทั€ะฐะฑะพั‚ั‡ะธะบะพะฒ, ะฝะพ ะฟะพะดัะธัั‚ะตะผะฐ NVMe ัะฒะปัะตั‚ัั ั…ะพั€ะพัˆะตะน ะฟะปะพั‰ะฐะดะบะพะน ะดะปั ะธะทัƒั‡ะตะฝะธั ั†ะตะปะตัะพะพะฑั€ะฐะทะฝะพัั‚ะธ ั€ะฐะทั€ะฐะฑะพั‚ะบะธ ะดั€ะฐะนะฒะตั€ะพะฒ ะฝะฐ ัะทั‹ะบะต Rust, ั‚ะฐะบ ะบะฐะบ ะพะฝะฐ ะดะพัั‚ะฐั‚ะพั‡ะฝะพ ะฟั€ะพัั‚ะฐั, ัˆะธั€ะพะบะพ ะธัะฟะพะปัŒะทัƒะตั‚ัั, ะฟั€ะตะดัŠัะฒะปัะตั‚ ะฒั‹ัะพะบะธะต ั‚ั€ะตะฑะพะฒะฐะฝะธั ะบ ะฟั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ะธ, ะธะผะตะตั‚ ะฟั€ะพะฒะตั€ะตะฝะฝัƒัŽ ัั‚ะฐะปะพะฝะฝัƒัŽ ั€ะตะฐะปะธะทะฐั†ะธัŽ ะดะปั ัั€ะฐะฒะฝะตะฝะธั ะธ ะฟะพะดะดะตั€ะถะธะฒะฐะตั‚ ั€ะฐะทะปะธั‡ะฝั‹ะต ะธะฝั‚ะตั€ั„ะตะนัั‹ (dev, pci, dma, blk-mq, gendisk, sysfs).

ะžั‚ะผะตั‡ะฐะตั‚ัั, ั‡ั‚ะพ PCI NVMe ะดั€ะฐะนะฒะตั€ ะฝะฐ Rust ัƒะถะต ะฟั€ะตะดะพัั‚ะฐะฒะปัะตั‚ ะฝะตะพะฑั…ะพะดะธะผัƒัŽ ะดะปั ั€ะฐะฑะพั‚ั‹ ั„ัƒะฝะบั†ะธะพะฝะฐะปัŒะฝะพัั‚ัŒ, ะฝะพ ะฟะพะบะฐ ะฝะต ะณะพั‚ะพะฒ ะดะปั ัˆะธั€ะพะบะพะณะพ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั, ั‚ะฐะบ ะบะฐะบ ั‚ั€ะตะฑัƒะตั‚ ะพั‚ะดะตะปัŒะฝั‹ั… ะดะพั€ะฐะฑะพั‚ะพะบ. ะกั€ะตะดะธ ะฟะปะฐะฝะพะฒ ะฝะฐ ะฑัƒะดัƒั‰ะตะต ะฝะฐะทั‹ะฒะฐะตั‚ัั ะธะทะฑะฐะฒะปะตะฝะธะต ะบะพะดะฐ ะพั‚ ะธะผะตัŽั‰ะธั…ัั unsafe-ะฑะปะพะบะพะฒ, ะฟะพะดะดะตั€ะถะบะฐ ะพะฟะตั€ะฐั†ะธะน ัƒะดะฐะปะตะฝะธั ัƒัั‚ั€ะพะนัั‚ะฒะฐ ะธ ะฒั‹ะณั€ัƒะทะบะธ ะดั€ะฐะนะฒะตั€ะฐ, ะฟะพะดะดะตั€ะถะบะฐ ะธะฝั‚ะตั€ั„ะตะนัะฐ sysfs, ั€ะตะฐะปะธะทะฐั†ะธั ะพั‚ะปะพะถะตะฝะฝะพะน ะธะฝะธั†ะธะฐะปะธะทะฐั†ะธะธ, ัะพะทะดะฐะฝะธะต ะดั€ะฐะนะฒะตั€ะฐ ะดะปั blk-mq ะธ ัะบัะฟะตั€ะธะผะตะฝั‚ั‹ ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ ะฐัะธะฝั…ั€ะพะฝะฝะพะน ะผะพะดะตะปะธ ะฟั€ะพะณั€ะฐะผะผะธั€ะพะฒะฐะฝะธั ะดะปั queue_rq.

ะ”ะพะฟะพะปะฝะธั‚ะตะปัŒะฝะพ ะผะพะถะฝะพ ะพั‚ะผะตั‚ะธั‚ัŒ ะฟั€ะพะฒะพะดะธะผั‹ะต ะบะพะผะฟะฐะฝะธะตะน NCC Group ัะบัะฟะตั€ะธะผะตะฝั‚ั‹ ะฟะพ ั€ะฐะทั€ะฐะฑะพั‚ะบะต ะดั€ะฐะนะฒะตั€ะพะฒ ะฝะฐ ัะทั‹ะบะต Rust ะดะปั ัะดั€ะฐ FreeBSD. ะ’ ะบะฐั‡ะตัั‚ะฒะต ะฟั€ะธะผะตั€ะฐ ะฟะพะดั€ะพะฑะฝะพ ั€ะฐะทะฑะธั€ะฐะตั‚ัั ะฟั€ะพัั‚ะพะน echo-ะดั€ะฐะนะฒะตั€, ะฒะพะทะฒั€ะฐั‰ะฐัŽั‰ะธะน ะดะฐะฝะฝั‹ะต, ะทะฐะฟะธัะฐะฝะฝั‹ะต ะฒ ั„ะฐะนะป /dev/rustmodule. ะะฐ ัะปะตะดัƒัŽั‰ะตะผ ัั‚ะฐะฟะต ัะบัะฟะตั€ะธะผะตะฝั‚ะพะฒ NCC Group ั€ะฐััะผะฐั‚ั€ะธะฒะฐะตั‚ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะฟะตั€ะตั€ะฐะฑะพั‚ะบะธ ะฝะฐ ัะทั‹ะบะต Rust ะฑะฐะทะพะฒั‹ั… ะบะพะผะฟะพะฝะตะฝั‚ะพะฒ ัะดั€ะฐ ะดะปั ะฟะพะฒั‹ัˆะตะฝะธั ะฑะตะทะพะฟะฐัะฝะพัั‚ะธ ัะตั‚ะตะฒั‹ั… ะธ ั„ะฐะนะปะพะฒั‹ั… ะพะฟะตั€ะฐั†ะธะน.

ะŸั€ะธ ัั‚ะพะผ, ะฝะตัะผะพั‚ั€ั ะฝะฐ ั‚ะพ, ั‡ั‚ะพ ะฟะพะบะฐะทะฐะฝะฐ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ัะพะทะดะฐะฝะธั ะฟั€ะพัั‚ั‹ั… ะผะพะดัƒะปะตะน ะฝะฐ ัะทั‹ะบะต Rust, ะฑะพะปะตะต ะฟะปะพั‚ะฝะฐั ะธะฝั‚ะตะณั€ะฐั†ะธั Rust ะฒ ัะดั€ะพ FreeBSD ะฟะพั‚ั€ะตะฑัƒะตั‚ ะฟั€ะพะฒะตะดะตะฝะธั ะดะพะฟะพะปะฝะธั‚ะตะปัŒะฝะพะน ั€ะฐะฑะพั‚ั‹. ะะฐะฟั€ะธะผะตั€, ัƒะฟะพะผะธะฝะฐะตั‚ัั ะฝะตะพะฑั…ะพะดะธะผะพัั‚ัŒ ัะพะทะดะฐะฝะธั ะฝะฐะฑะพั€ะฐ ัะปะพั‘ะฒ ะฐะฑัั‚ั€ะฐะบั†ะธะธ ะฝะฐะด ะฟะพะดัะธัั‚ะตะผะฐะผะธ ะธ ัั‚ั€ัƒะบั‚ัƒั€ะฐะผะธ ัะดั€ะฐ, ะฟะพั…ะพะถะธั… ะฝะฐ ะฝะฐะดัั‚ั€ะพะนะบะธ, ะฟะพะดะณะพั‚ะพะฒะปะตะฝะฝั‹ะต ะฟั€ะพะตะบั‚ะพะผ Rust for Linux. ะ’ ะดะฐะปัŒะฝะตะนัˆะตะผ ะฟะปะฐะฝะธั€ัƒะตั‚ัั ะฟั€ะพะฒะตัั‚ะธ ะฟะพั…ะพะถะธะต ัะบัะฟะตั€ะธะผะตะฝั‚ั‹ ั ัะดั€ะพะผ Illumos ะธ ะฒั‹ะดะตะปะธั‚ัŒ ะพะฑั‰ะธะต ะฐะฑัั‚ั€ะฐะบั†ะธะธ ะฝะฐ Rust, ะบะพั‚ะพั€ั‹ะต ะผะพะณะปะธ ะฑั‹ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒัั ะฒ ะฝะฐะฟะธัะฐะฝะฝั‹ั… ะฝะฐ Rust ะดั€ะฐะนะฒะตั€ะฐั… ะดะปั Linux, BSD ะธ Illumos.

ะŸะพ ะดะฐะฝะฝั‹ะผ ะบะพะผะฟะฐะฝะธะน Microsoft ะธ Google ะพะบะพะปะพ 70% ัƒัะทะฒะธะผะพัั‚ะตะน ะฒ ะธั… ะฟั€ะพะณั€ะฐะผะผะฝั‹ั… ะฟั€ะพะดัƒะบั‚ะฐั… ะฒั‹ะทะฒะฐะฝั‹ ะฝะตะฑะตะทะพะฟะฐัะฝะพะน ั€ะฐะฑะพั‚ะพะน ั ะฟะฐะผัั‚ัŒัŽ. ะŸั€ะตะดะฟะพะปะฐะณะฐะตั‚ัั, ั‡ั‚ะพ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะต ัะทั‹ะบะฐ Rust ะฟะพะทะฒะพะปะธั‚ ัะฝะธะทะธั‚ัŒ ั€ะธัะบ ะฟะพัะฒะปะตะฝะธั ัƒัะทะฒะธะผะพัั‚ะตะน, ะฒั‹ะทะฒะฐะฝะฝั‹ั… ะฝะตะฑะตะทะพะฟะฐัะฝะพะน ั€ะฐะฑะพั‚ะพะน ั ะฟะฐะผัั‚ัŒัŽ, ะธ ะธัะบะปัŽั‡ะธั‚ัŒ ะฟะพัะฒะปะตะฝะธะต ั‚ะฐะบะธั… ะพัˆะธะฑะพะบ, ะบะฐะบ ะพะฑั€ะฐั‰ะตะฝะธะต ะบ ะพะฑะปะฐัั‚ะธ ะฟะฐะผัั‚ะธ ะฟะพัะปะต ะตั‘ ะพัะฒะพะฑะพะถะดะตะฝะธั ะธ ะฒั‹ั…ะพะด ะทะฐ ะณั€ะฐะฝะธั†ั‹ ะฑัƒั„ะตั€ะฐ.

Rust เบšเบฑเบ‡เบ„เบฑเบšเปƒเบŠเป‰เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบกเป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡, เบเบฒเบ™เป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเปเบฅเบฐเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ•เบฐเบซเบผเบญเบ”เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ (เบ‚เบญเบšเป€เบ‚เบ”), เปเบฅเบฐเป‚เบ”เบเบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™เบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™. Rust เบเบฑเบ‡เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™ overflows integer, เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบ„เปˆเบฒเบ•เบปเบงเปเบ›เป„เบ”เป‰เบ–เบทเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰, เบกเบตเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒเปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เปƒเบŠเป‰เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบ—เบตเปˆเบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบฅเบฐเบ•เบปเบงเปเบ›เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบฅเบฐเบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบžเบดเบกเบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบขเปˆเบฒเบ‡เบกเบตเป€เบซเบ”เบœเบปเบ™.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™