Какой какие файл файлы можно обнаружить в энергонезависимой памяти
Поймал себя на ощущении, что очень хочется поделиться своим опытом работы с интеловской энергонезависимой памятью (Intel Optane memory или Intel PMem = persistent memory). Я буду для краткости называть ее ПМем. Думаю, что несмотря на объем продаж в сотни миллионов долларов, пока мало кто с ней сталкивался и знает ее специфику. Я же по долгу службы занимаюсь ей уже довольно продолжительное время и гонял на ней различные приложения и микро-бенчмарки. А также добивался ее эффективного использования модифицируя под нее клиентские коды.
В принципе литературы по ней навалом, по крайней мере на английском, но практические советы и простое и понятное описание ее поведения найти не просто, если вообще возможно. Я хочу рассказать что от нее можно ожидать, специфику ее режимов работы в тесной привязке к производительности. А также поясню, в каких случаях она работает хорошо, и в каких вряд ли оправдает ожидания. На всякий случай здесь интеловская заглавная маркетинговая страница по этой технологии.
В настоящее время уже выпущено два поколения ПМем (100 серия и 200 серия). Сотая серия работает с процессорами Xeon Scalable 2-го поколения (Cascade Lake), а двухсотая – с 3-м поколением (Ice Lake). Это все серверные платформы. В основе ее та же технология Optane, которая впервые появилась в твердотельных дисках (Intel Optane SSD). Диски, кстати, очень быстрые по сравнению с обычными 3DNAND. Время отклика у них лучше по крайней мере раз в 5, а в реальности – в 10-20 и больше. Это связано с особенностями производительности как функции нагрузки. Оптановские диски выдают на гора практически при любой нагрузке, держа время отклика почти стабильным в районе 8 мксек (даже кажется еще снизили в последнем поколении), и уже при небольшом количестве пишущих на них или читающих с них потоков их пропускная способность подходит к 100%. 3DNAND выглядит заметно послабже. Ему нужны десятки потоков, чтобы что-то отдаленно напоминающее максимальную пропускную способность материализовалось в реальности. При этом время отклика естественно уходит за 100 мксек. Впрочем при чтении большими блоками достаточным количеством потоков и те и другие диски выдадут близкие результаты по пропускной способности. На самом деле она для топовых твердотельных дисков часто ограничена их PCIe соединением (им обычно выделяют две линии). С переходом на PCIe 4 в последнем поколении платформ/процессоров (те что Ice Lake) Интел сразу и диски выпустил с удвоенной пропускной способностью.
Но вернемся к памяти. На вид это те же плашки, что и ДДР.
Рисунок 1. Модуль ПМем
Если очень грубо сравнить производительность ПМем и ДДР, то ПМем медленнее примерно втрое. Это относится как ко времени доступа, так и к пропускной способности. Но есть очень много всевозможных нюансов. При доступе на чтение коэффициент три работает очень неплохо, но при добавлении даже небольшого количества записи картина резко усложняется и не в пользу ПМем. Такому поведению есть причины. Контроллер памяти ПМем (который является частью каждого модуля) оперирует блоками в 256 байт. У него есть крохотный буферок, в который данные изначально поступают (в случае записи). Если например пришло несколько кэш линий в этот буфер, и некоторые из них соседние (допустим писали два потока, каждый последовательно – соседние будут по-любому, но необязательно по порядку), то контроллер их поменяет местами и возможно сумеет укомплектовать 256 байтными блоками, чтобы писать с максимальной эффективностью. Ясно, что если потоков становится много, то шансы резко падают, буферок-то скромнейшего размера.
Еще один любопытный нюанс заключается в том, что у 100-го и 200-го поколений запись масштабируется совершенно по-разному. У сотого она сначала заметно растет от 1 до 4-8 потоков, а потом очень плавно падает. У двухсотого максимум достигается в одном потоке. В абсолютных цифрах это около 23ГБ/сек на запись и 55ГБ/сек на чтение. Это данные для одного сокета, два дадут вдвое больше. В случае совмещения сокетов в один диск с помощью SW RAID двойки уже не получится, а только около 1.5, если не меньше. Как ни странно, такая как бы неважная (отрицательная даже) масштабируемость – это неплохо. Очень много приложений не особо оптимизированных, где пишущих потоков мало, а то и вообще один. И с ПМем они как раз подружатся.
Дефолтная конфигурация memory interleave – interleave по всем Пмем модулям сокета. Соостветственно достигается максимальный параллелизм и производительность. Между сокетами interleave не работает. При желании можно каждый модуль сконфигурировать независимым, но это безумие, так как писать придется параллеьно уже на уровне приложения. Не представляю кому это может пригодиться.
Теперь давайте обсудим варианты конфигураций. На самом высоком уровне их два – 1LM (one level memory) и 2LM (two level memory). Во втором случае только ПМем видна операциононой системе в качестве памяти, ДДР же как бы спрятана на втором уровне и работает как кэш для ПМем (direct cache). ПМем в этом случае не обладает энергонезависимостью, то есть при перезагрузке данные не сохранятся. Смысл обычно в том, чтобы получить больше памяти, чем возможно с ДДР, либо получить столько же, но существенно дешевле.
Рисунок 2. Конфигурация 2LM
Плюс такой конфигурации в том, что приложению вообще не надо ничего знать о памяти. Оно просто будет работать. При этом если данные используются многократно, есть неплохие шансы, что они будут жить в основном в ДДР и производительность приложения может практически не уступать случаю с только ДДР. То есть можно иметь и использовать нереально огромную память и при этом работать с производительностью ДДР. Отличный пример – in-memory базы данных. Как правило они демонстрируют 90-100% производительности в сравнении с аналогичной системой оснащенной только ДДР. Недостатки у этой конфигурации тоже есть. Во-первых, ДДР фактически недоступна для данных. То есть аллоцировать напрямую в ней нельзя никак. Во-вторых, это самая низкопроизводительная мода для ПМем. Ко времени доступа добавляется время доступа в ДДР и пропускная способность в разы ниже (~4-5 раз), чем у 1LM. У приложений вычислительного типа шансов на успех немного.
1LM – мода гораздо более интересная. Тут есть варианты. В смысле производительности самой ПМем они практически аналогичны (максимальная), но имеют принципиальные отличия не хардверного свойства. Все варианты относятся к типу AppDirect. Значение этого термина в том, что как бы приложение напрямую заботится о взаимодействии с ПМем, хотя в реальности это не обязательно.
Рисунок 3. Конфигурация 1LM
Первый вариант – это Storage over AppDirect. Фактически в этой конфигурации мы получаем диск на ПМем с файловой системой. Самый простой случай – это конфигурация обычного блочного диска. То есть доступ поблочный. Мелкий недостаток – время доступа, блок есть блок. Нужна кэш линия – все равно грузи 4К. Но есть и крупные достоинства. Во-первых, для приложений которым требуется ускорение ввода-вывода не потребуется никаких модификаций. Просто переход на ПМем диск. Во-вторых, в данном случае операционная система сама автоматически кэширует страницы с диска в память. Как только единица данных со страницы прочитана, операционная система грузит всю страницу в ДДР. То есть следующие данные с этой страницы пойдут из ДДР. Для последовательного доступа (а такого очень много) это работает отлично. На мой взгляд, эта конфигурация – самая универсальная и сбалансированная. Побеждает любые самые быстрые системы хранения данных с большим запасом (обычно 2-7 раз) на практически любых тестах на чтение.
Рисунок 4. Конфигурация 1LM Storage over AppDirect
Второй вариант – та же Storage over AppDirect, но смонтированная в DAX (direct access) моде. Эта мода требует файловую систему, умеющую работать с ПМем, конкретно дающую доступ по кэш линиям. С этим проблем давно нет, любая современная операционка это поддерживает. В смысле производительности разница по сравнению с просто Storage over AppDirect существенная. Во-первых, гранулярность доступа в одну кэш линию сокращает время доступа в разы. То есть случайный доступ будет просто летать по сравнению с любыми дисками и системами хранения данных. Как вам ускорение в 100 раз например? Вполне реальная цифра. Недостаток этой конфигурации в том, что операционная система больше не вовлечена и не кэширует страницы в ДДР. То есть все, что было аллоциовано в ПМем будет ходить оттуда напрямую в кэш процессора. В этой конфигурации ПМем дико рвет любые самые быстрые системы хранения данных на случайном доступе, но в случае последовательного доступа с переиспользованием данных выиграет не всегда. Аналогично предыдущему случаю нужды модифицировать приложение нет при условии, что задача – ускорить работу ввода-вывода. Это если в основном чтение; если же много записи, то для производительности модификации понадобятся.
И наконец третий вариант – AppDirect Volatile. В данном случае ПМем используется как волатильная память. Производительность очень близка к DAX и даже чуть лучше, потому что больше нет файловой системы. Здесь уже речи о работе с файлами нет, ПМем видна именно как память. Задача разработчика – грамотно аллоцировать данные (и писать правильными инструкциями). Маленькие и динамичные данные идут в ДДР, а большие и более статичные – в ПМем. Если по ходу работы приложения появляется нужда переместить данные из одного типа памяти в другой – это должно будет сделать приложение (то есть позаботиться должен разработчик кода). ПМем видна как дополнительная NUMA-node, так что аллокатор написать не проблема.
Еще один интересный факт – можно сконфигурировать комбинацию таких вариантов, например частично 1LM и частично 2LM. Или создать две файловые системы на ПМем, одну обычную, а другую с прямым доступом. Или и то и другое одновременно. Одним словом, простор для творчества есть.
Что еще надо знать о ПМем? Если погуглить Intel PMem, то сразу всплывет PMDK. Это набор библиотек, позволяющих эффективно работать с ПМем на разных уровнях. Главная идея PMDK – помочь разработчику грамотно (транзакционно) работать с persistence. То есть с помощью ее библиотек обеспечить consistency данных (либо транзакция полностью сохранена в постоянной памяти, либо совсем не сохранена, но не частично). Это можно делать от отдельной переменной до транзакций высокой сложности. На самом деле эти механизмы довольно похожи на синхронизацию потоков и без них потребовалась бы очень кропотливая работа и затратная отладка. Если почитать документацию PMDK, то может сложиться впечатление, что без нее – никуда, но это не так. Даже если приложение работает не с файлами, а с памятью, использовать варианты типа Storage over AppDirect (то есть с персистентностью) совсем не сложно. Для этого достаточно открыть файл, сделать ему memory map и размещать все данные, которые идут в ПМем в этом файле. При этом разработчик сам выбирает какими инструкциями писать в ПМем и обеспечивает consistency данных по тем же в общем принципам как это делается в многопоточных приложениях. PMDK делает то же самое.
Как я уже сказал, чтение работает гораздо производительнее и стабильнее, чем запись. Запись же более капризна, требует правильных инструкций и имеет умеренно негативное масштабирование. Это обстоятельство часто приводит к ситуации «неоправдавшихся надежд» у клиентов, впервые попробовавших ПМем не трогая приложение. Проблема в том, что использование стандартного ввода-вывода операционки отнюдь не оптимизировано под ПМем и часто производительность получается аналогичной твердотельному диску. Из моей практики типичное ускорение при переходе на Пмем (если брать только ввод-вывод) составляет от 3.5 до 6 раз в ситуациях интенсивной записи. Это в сравнении с одним ССД и при использовании правильных инструкций. У нас есть несколько инструментов и методов точного тестирования без изменения приложения, но это отдельная тема.
Любопытной проблемой является определение данных для аллокации в ДДР или ПМем. Методы понятны и характеристики данных можно померять например с помощью VTune Performance Analyzer. Но опять же из моей практики вариантов приложений вычислительного типа, которые в таком режиме будут неплохо работать крайне мало. Базы данных и прочие приложения по обработке больших данных практически единственное направление, которое работает. В большинстве приложений вычислительного типа значительную часть данных надо и читать и писать, а запись приводит к такой деградации производительности ПМем, что ПМем становится невыгодной.
В общем, если совсем кратко, то так. Если речь идет о замещении любых самых лучших диковых систем хранения данных и главный фактор - производительность, то Пмем – это находка. Огромный объем за гораздо меньшие деньги, чем ДДР, хорошая производительность. В случае когда требуется в основном чтение данных, и делать часто ничего не требуется. Ну а если много записи, то поработать придется, и результат вероятно будет менее звездный. Тут придется оценивать цены к производительности. Если же приложение вычислительного типа, то вариантов применения ПМем пока немного. Скорее всего должны быть большие объемы статических данных, которые требуется часто загружать для расчетов.
124. Какие четыре важных элемента информации получают после выдачи команды ping?
• Размер и количество ICMP-пакетов, продолжительность периода ожидания ответа, показатель успешности посылки эхо-пакетов и минимальное, среднее и максимальное время прохождения пакетов в оба конца
126. Какой из следующих компонентов маршрутизатора имеет такие характеристики: держит операционную систему и микрокод, сохраняет свое содержимое при отключении питания или перезапуске и позволяет обновлять программное обеспечение без замены микросхем?
• Флэш-память
127. Какую информацию дает проверка сети с помощью команды show interfaces serial?
• Показывает статус канала связи и канального протокола
128. Какую информацию дает проверка сети с помощью команды trace?
• Показывает каждый маршрутизатор, который проходит пакет на пути к пункту назначения
129. Что из приведенного ниже неправильно описывает функцию команды статуса маршрутизатора?
• show buffers выводит на экран статистические данные пулов буферов маршрутизатора
130. Что из приведенного ниже описывает место, из которого конфигурируется маршрутизатор?
• Будучи установленным в сеть, маршрутизатор может конфигурироваться с помощью виртуальных терминалов
131. Зачем может понадобиться выдача команд show startup-config и show running-oonfig?
• Маршрутизатор неожиданно начал неправильно работать, и необходимо сравнить начальное состояние с состоянием на данный момент времени
132. Какова функция команды erase startup-config?
• Удаляет из энергонезависимой памяти резервный конфигурационный файл
133. Какова функция команды reload?
• Перезагружает маршрутизатор
134. Какой (какие) файл (файлы) можно обнаружить в энергонезависимой памяти?
• Конфигурационные файлы
135. Когда выполняется режим начальной установки маршрутизатора?
• Когда маршрутизатор не может найти корректно оформленный конфигурационный файл
Какой уровень эталонной модели OSI может выполнять трансляцию между различными форматами данных, например между форматами ASCII и EBCDIC?
Какой из приведенных ниже механизмов управляет объемом пересылаемой из конца в конец информации и помогает в обеспечении надежности протокола TCP?
Какой из уровней эталонной модели OSI устанавливает связь между приложениями, управляет ею и завершает ее?
?) Конечная точка сетевого соединения или общий стык двух или более линий, который служит в качестве контрольной точки
?) Устройство, которое устанавливает, поддерживает и завершает сеансы между приложениями и управляет обменом данными между объектами уровня представлений
?) Устройство, которое синхронизирует взаимодействующие приложения и согласует процедуры восстановления после ошибок и проверки целостности данных
Что происходит, если мост обнаруживает, что адрес назначения, содержащийся в пакете данных, находится в том же сегменте сети, что и источник?
Какой из следующих компонентов маршрутизатора имеет такие характеристики: держит операционную систему и микрокод, сохраняет свое содержимое при отключении питания или перезапуске и позволяет обновлять программное обеспечение без замены микросхем?
?) show interfaces выводит на экран статистические данные по всем интерфейсам, сконфигурированным на маршрутизаторе
?) show version выводит на экран конфигурацию аппаратной части системы, имена и источники конфигурационных файлов и образы начальной загрузки
?) show memory выводит на экран статистические данные о памяти маршрутизатора, включая статистику свободных пулов памяти
?) Будучи установленным в сеть, маршрутизатор может конфигурироваться через модем с консольного терминала
?) После выполнения начального конфигурирования машрутизатор конфигурируется через модем с использованием порта вспомогательного устройства
?) После выполнения начального конфигурирования маршрутизатор конфигурируется через виртуальные терминалы
?) Будучи установленным в сеть, маршрутизатор может конфигурироваться с помощью виртуальных терминалов
?) Количество ICMP-пакетов, продолжительность периода ожидания ответа, скорость передачи и минимальное, среднее и максимальное время прохождения пакетов в оба конца
?) Размер и количество ICMP-пакетов, МАС-адрес, показатель успешности посылки эхо-пакетов и минимальное, среднее и максимальное время прохождения пакетов в оба конца
?) Количество ICMP-пакетов, продолжительность периода ожидания ответа, показатель успешности посылки эхо-пакетов и минимальное, среднее и максимальное время прохождения пакетов в оба конца
?) Размер и количество ICMP-пакетов, продолжительность периода ожидания ответа, показатель успешности посылки эхо-пакетов и минимальное, среднее и максимальное время прохождения пакетов в оба конца
Метод проектного анализа, основанный на интуитивном способе рационального действия, который позволяет приобрести необходимый опыт в искусстве нахождения моделей в явно хаотичной информации, поступившей извне, называется:
Структура надежностно-функциональной схемы АСУ ТП, при которой к отказу функции приводит лишь совместный отказ всех реализующих ее элементов, называется:
Вид тестирования комплексов программ, необходимый для расширения условий функционирования и получения достоверных данных о программном обеспечении называется тестированием
--> Из перечисленного, методами предупреждения ошибок в программном обеспечении являются методы:
Отказ, требующий проведения специальных мероприятий по восстановлению работоспособности, является:
Стандарты Международной организации по стандартизации по системе качества кратко обозначают:
Укажите правильную последовательность шагов выполнения процесса запуска системы маршрутизаторов Cisco:
1) тестирование аппаратной части; 2) загрузка программы начального загрузчика; 3) нахождение местоположения операционной системы и ее загрузка; 4) нахождение местоположения конфигурационного файла и его загрузка
Как называются две части заголовка кадра?
MAC- и IP-заголовок
Что из перечисленного ниже вероятнее всего вызовет перегрузку в сети?
Доступ в Internet; Доступ к главной базе данных; Передача графики и видео
Какова цель ревизии средств защиты сети?
Определение состава аппаратно-программного комплекса, требующегося для обеспечения защиты сети
Какова функция команды erase startup-config?
Удаляет из энергонезависимой памяти резервный конфигурационный файл
Какое из описаний протокола PPP является наилучшим?
Обеспечивает соединение маршрутизатор-маршрутизатор и хост-сеть как по синхронным, так и асинхронным линиям связи
Что должно входить в письменную форму документа "Технические требования на изменения", который готовится для достижения более высокой производительности и уровня защиты сети?
Обоснования каждого запрашиваемого изменения
Алфавитно-цифровые символы конвертируются в данные
Какова роль коммутационных шнуров?
Кроссируют компьютеры, выведенные на коммутационную панель, позволяя функционировать ЛВС
Какое из приведенных ниже утверждений наилучшим образом описывает функции транспортного уровня эталонной модели OSI?
Он посылает данные, используя управление потоком
Для чего нужны номера портов?
Они отслеживают различные переговоры, одновременно ведущиеся в сети
Какой из режимов предоставляет доступ к списку общеупотребительных команд, если при работе с интерфейсом пользователя маршрутизаторов Cisco ввести с клавиатуры символ знак вопроса ("?")?
Пользовательский и привилегированный
Зачем в протоколе TCP используются открытые соединения с трехсторонним квитированием?
Нам всем известен почти единственный недостаток современных быстрых модулей оперативной памяти — энергозависимость, в свою очередь у долговременных накопителей оставляет желать лучшего скорость работы. Прототип памяти нового типа, описанный в Nature Communications, совмещает в себе как скорость, неизнашиваемость и низкое энергопотребление, так и энергонезависимость.
Память нового типа была построена на основе феррита висмута материаловедом Калифорнийского университета в Беркли Рамамуроти Рамешем и специалистом по материалам-оксидам в Наньянском технологическом университете в Сингапуре Юнлинь Ваном.
Обычные нули и единицы битов компьютерной памяти могут быть представлены ферритом висмута как одно из двух состояний поляризации. Переключение между ними возможно при приложении напряжения благодаря физическому явлению сегнетоэлектричества. Ферроэлектрическая ОЗУ на основе других материалов уже представлена на рынке, и её скорость работы высока. Но технология не получила широкого распространения потому, что электрический сигнал, используемый для чтения бита, сбрасывает его, поэтому данные приходится каждый раз перезаписывать заново. В перспективе это ведёт к ухудшению надёжности.
Рамеш и Ван нашли способ использования одного из свойств феррита висмута для чтения массивов памяти без разрушения информации. В 2009 году исследователи в Ратгерском университете продемонстрировали, что материал обладает фотоэллектрическими свойствами в области видимого спектра. Это означает, что при освещении материала создаётся электрическое напряжение, размер которого к тому же зависит от состояния поляризации. Это напряжение можно регистрировать, в то же время яркий свет не меняет состояние поляризации материала и не сбрасывает записанной на него информации.
В процессе исследования были произведены эксперименты, во время которых плёнки феррита висмута наращивались на оксиде металла, затем его вытравливали в четыре полоски. Сверху накладывались четыре металлические полоски под определенными углами. 16 квадратных областей в местах соприкосновения вели себя как ячейки памяти, а металл и оксид металла образовывали их выводы. С их помощью ячейки были поляризованы, затем их осветили светом и зарегистрировали два значения напряжений для нуля и единицы.
Для чтения и записи требуется менее 10 наносекунд, а запись требует 3 вольта напряжения. Для сравнения: энергонезависимая ОЗУ на основе флэш-памяти требует приблизительно в 100 тыс. раз больше времени и требует 15 вольт для записи.
Сан-Вук Чун, исследовавший этот эффект, назвал результаты первым практическим использованием открытия 2009 года. Однако, Виктор Жирнов, материаловед в Semiconductor Research Corporation (Северная Каролина), считает, что технологии перед настоящим использованием и хоть какой-либо конкурентоспособностью предстоит значительная минимизация. Современная флэш-память использует техпроцесс от 22 нм, а прототип фотоэлектрической памяти имеет ширину в 10 микрометров.
Читайте также: