Организация Linux Foundation представи първото издание на откритата платформа за софтуерно управлявани Flash носители SEF (Software Enabled Flash), изградена на основата на кода, предоставен от компанията KIOXIA (преди преименуването на Toshiba Memory Corporation), където Flash паметта е открита през 1980 година. Изходните текстове на инструментария са написани на езика Си и се разпространяват под лиценз BSD.
Инструментарият включва набор от пачове за ядрото на Linux, блочен драйвер за устройства SEF (Software Enabled Flash), утилити за управление от командния ред, полупаравиртуализирани SEF драйвери за QEMU, библиотека с API за разработка на приложения, пачове за nvme-cli и FIO, добавящи поддръжка на SEF. SDK също така включва референтна реализация на софтуерно ниво FTL (Flash Translation Layer), която осигурява транслация на команди на блочни устройства в обращения към действителния чип Flash памет, събиране на боклуци и разпределение на данни по паметта. FTL реализира поддръжка на гъвкаво разположение на данни (FDP — Flexible Data Placement), зониране (ZNS — Zoned Namespace) и спецификация NVMe.
В обикновените Flash устройства за външни системи, носителят представлява черна кутия, част от паметта в която е резервирана за служебни операции, производителността е непостоянна и възникват непредсказуеми забавяния поради вътрешна активност на контролера, например, по време на събиране на боклуци. В отличие от традиционните Flash носители, при които разпределението на данни, изолацията на дефектни блокове и събирането на боклуци се извършва от фърмуера на контролера, носителите с поддръжка на SEF позволяват логиката на нискоуровневата работа с чипа Flash да бъде пренесена на софтуерната и оперативна система.
SEF предоставя възможността директно да управлява физическото разположение на данни, да променя алгоритмите за разпределение на натоварването, да управлява приоритетите и QoS, да се отърве от допълнителния слой на транслация на блокове, да активира цялата налична памет, да постигне предсказуемо функциониране с носителя и да раздели носителя на виртуални устройства, изолирани на ниво вход/изход и с различен приоритет в обработката. Предложеният в SEF подход позволява да се намалят разходите и да се увеличи ефективността на взаимодействието с носителя чрез адаптиране към текущите нужди на логиката за управление на паметта, резервирането на памет и разпределението на блокове за намаляване на износването.
Например, SEF позволява нормализиране на производителността в условията на използване на масив от закупени в различно време носители с различаващи се характеристики. За носители, които се използват предимно само за четене, благодарение на SEF могат да се използват по-прости алгоритми за разпределение на блокове и да се намали паметта, резервирана за служебни цели.
Източник: opennet.ru
