Как Linux обрабатывает модули постоянной памяти Intel Optane в режиме памяти?

Мне было интересно, сделало ли ядро ​​Linux что-то особенное или выполнило ли какие-либо оптимизации, когда базовая система использует модули постоянной памяти в режиме памяти (кэш DRAM ближней памяти и NVRAM в качестве основной памяти). Я пробовал искать в drivers/nvdimm, но кажется, что все здесь сосредоточено на использовании в режиме App Direct, где вы используете MMAP в файле DAX, но в режиме памяти он семантически и синтаксически не отличается от использования DRAM.

Использует ли Linux какие-либо оптимизации или все делается аппаратно? Может ли кто-нибудь связать меня с тем, где в ядре Linux выполняются какие-либо оптимизации режима памяти? Заранее спасибо!

1 ответ

В Upstream Linux v5.2-rc1 появился параметр ядра page_alloc.shuffle, который является логическим флагом, который автоматически включается, если выполняются оба следующих условия:

  • Его нельзя отключить вручную, добавив page_alloc.shuffle=0 в список параметров ядра.
  • Ядро работает в системе с микропрограммным обеспечением, поддерживающим ACPI 6.2, и микропрограмма сообщила ядру через таблицу атрибутов гетерогенной памяти (HMAT), что система имеет кэш на стороне памяти по крайней мере в одном из доменов памяти.

Когда этот параметр включен, распределитель страниц ядра рандомизирует свои списки свободных мест в надежде уменьшить конфликты в кэше на стороне памяти.

Примеры систем, в которых он включается автоматически, включают KNL / KNM с MCDRAM, которая частично или полностью настроена для работы в режиме кэширования, и CSX/CPX с постоянной памятью, которая частично или полностью настроена для работы в режиме памяти. Во всех этих системах есть кэш на стороне памяти с прямым отображением, хотя многие детали реализации отличаются.

Перемешивание произвольного списка обеспечивает стабильно хорошую производительность, но не обязательно оптимальную или близкую к оптимальной. Это отличается от работы с высокой производительностью сначала из-за хорошего использования кеш-памяти на стороне памяти, но затем производительность со временем снижается из-за увеличения количества конфликтов кеша.

Тем не менее, я не думаю, что кто-то тестировал влияние перетасовки списка свободных мест на производительность в системе с постоянной памятью, работающей в режиме памяти, даже если она включена автоматически.

В настоящее время в ядре нет других возможных оптимизаций для режима памяти.

Другие вопросы по тегам