Russian
Как решить модель распределенной памяти домашнего ядра?

Как решить модель распределенной памяти домашнего ядра?

Больше не нужно страдать от проблем с ПК! С помощью Reimage вы можете легко и быстро исправлять распространенные ошибки Windows и оптимизировать свою систему для достижения максимальной производительности.

<средний> <массив>

Знала ли ваша компания…?

LWN.net — это публикация по запросу; Я очень завишу от подписчиков право заставить всю операцию работать. Пожалуйста, помогите, купив возврат и сохранив LWN на сети.

Физическая память компьютерной системы является разумным ресурсом.Было приложено много усилий, чтобы правильно управлять им. Это занятие довереноВсе это осложняется сложностью конструкции памяти на современном рынке.системы. Постараюсь сделать несколькоСлои абстракции, которые имеют дело со всеми наиболее важными деталями памяти.физически посажен; Одну из них можно легко назвать «моделью памяти». уникальный далекоМодели поддерживаются в основном ядре, но одна из них может находиться в разработке.за пределами. В качестве абсолютной стратегии, чтобы понять это изменение, этот удивительный отчетприсмотритесь к улучшению старых добрых моделей оперативной памяти ядра,их текущее состояние и последующие результаты.

САЙТ

kernel memory model dead sparse

В первые дни существования Linux дисковое пространство было плоским: это оказалось естественным линейным прогрессом.с физическими адресами, начинающимися и заканчивающимися только нулемдо нескольких мегабайт. Каждое тело физической страницы имело запись в ядре.Массив mem_map, содержащий хорошее время без знакасокращенное обозначение для каждой страницы, измеряющее количество наших ссылок на эту страницуимел. Однако вскоре были размещены и данные mem_map.Счетчики age и dirty, которые помогут контролировать общий доступ. Влинукс1.3.50 Элементы, особенно mem_map, стали называться structстраница.

Студийную бустерную карту легко создать и быстро купить, чтобыномер кадра физической страницы (PFN), а соответствующая структура страница; Вычисление некоторого индекса смеси было очень простым.Были внесены изменения в шаблон Structure Page для его повторного выравнивания.использование (например, бумажный кеш) и оптимизировать производительность кеша хранилищаполучить доступ к странице структуры. Карта минут памяти осталась в плоской доскеОн был действительно чистым, но эффективным, но у него был один большой недостаток: он, скорее всего, нехорошо обрабатывать дыры в физических адресах. вЧасть каждой плоскости, соответствующей местоположению, будет потрачена впустую.или, как и у ARM, карта памяти действительно тоже имеет отверстия.

ОТКЛЮЧИТЬ

kernel reminiscence model flat sparse

Поддержка эффективного управления с указанием в значительной степени прерывистых выделенных данных.Память была введена в подсистему управления разумом в 2007 году.частьПопытка заставить Linux хорошо работать на машинах с NUMA. Этот код зависел отCONFIG_DISCONTIGMEM во всех параметрах сборки, т. е. в первой памятиКонцепция с одним названием была DISCONTIGMEM.

В любой модели discontigmam вводится понятие правого значимого узла хранения,Это должно стать основой обработки памяти NUMA. Каждый узел содержитнезависимая (ну, в основном) подсистема управления пространством памяти, совмещенная с ней фактически собственнаяСписки бесплатных сайтов, контактная коллекция используемого сайта, постоянное использование (LRU) и информация об использованииСтатистика. Среди всех вкусностей они перечислены узлом подсказок.struct pglist_data (или pg_data_t для краткости) содержитприменение памяти конкретного узла. Предположим, что каждый узел имеет правильный повторпамяти, наличие массива, связанного с помощью структур Pages для обоих узлов решает проблему.Проблема исходит от всех больших дыр в том, как плоская карта памяти.

Но это идет бесплатно. С дисконтигмами опять надочтобы проверить, какой узел имеет зафиксированную страницу в памяти, чтобы окончательно преобразовать PFN всвязанная страница структуры, созданная, например,Пример. Вы также должны знатькакая карта обновления узла содержит страницу структуры карты google в своейНФП. После огромной эволюции, начиная с городских исследований mips64, которые определяютKVADDR_TO_NID(), LOCAL_MAP_BASE(),Макросы ADDR_TO_MAPBASE(), а также , LOCAL_BASE_ADDR() для добавленияВо-первых, преобразование дополнительно реверсируется PFN в реальную страницу структуры.versa был вдохновлен довольно простым иpage_to_pfn() Макросы pfn_to_page() наблюдаются как часть include/asm-generic/memory_model.h.

Однако у

DISCONTIGMEM есть очевидное слабое место: горячая замена памяти вполне может быть горячей.Погасить. Фактическая степень детализации одного конкретного узла NUMA казалась слишком грубой при правильном горячем подключении.поддержки, даже разделение реального узла вызвало бы массу самых ненужныхфрагментация и многое другое. Помните, что узел имеет полезную независимую памятьУправление создать со всеми сопутствующими затратами; дальнейшее разделение узловзначительно увеличить эти расходы.

СПАРСЕМЕМ

Эти ограничения были оплачены при запускеСПАРСЕМЕМ. Это делает карту памяти похожей на любую записную книжку.Секции всех моделей расписаны архитектурой. каждый отдельный разделозначает структуру mem_section, это обычно (как описано в коде): “boolean,Указатель прямо на эксклюзивные страницы структуры стенда. Однако это записано с какого-то другогоМагия». Картинка в этих конкретных разделах будет мета-дорогой памяти, которая можеточень легко взломать правильную гранулярность section_size. Для эффективностиПреобразование между PFN и страницей, структурирует несколько лучшеБыло обнаружено, что PFN индексирует 1 массив страниц. Для одного конкретного направленияОбласть раздела закодирована и отображается во флагах веб-страницы.

<р>Через несколько месяцев после того, как он привык к ядру Linux,SPARSEMEM был разработан совместно с SPARSEMEM_EXTREME whichsecondподходит для диет и с особенно небольшим пространством.SPARSEMEM_EXTREME добавлено второе измерение, возвращающееся в массив разделови сделал эти системы, ну, скудными. С SPARSEMEM_EXTREMEУказатели, чтобы ваши структуры mem_section стали первой деталью, а затем настоящейmem_section был динамически привязан к реальным объектам.заселенный комплекс магазин.

Примерно в 2009 году было добавлено еще одно улучшение SPARSEMEM; былназывается г.