Согласно этому блогу DPDK, физические адреса огромных страниц «закреплены»:
Каждый раз, когда область памяти становится доступной для использования DPDK, DPDK определяет свой физический адрес, запрашивая в это время ядро. Поскольку DPDK использует закрепленную память, обычно в виде огромных страниц, не ожидается, что физический адрес базовой области памяти изменится, поэтому оборудование может полагаться на эти физические адреса должны быть действительными в любое время, даже если сама память не используется в течение некоторого времени. Затем DPDK использует эти физические адреса при подготовке транзакций ввода-вывода для выполнения оборудованием и настраивает оборудование таким образом, чтобы оно могло само инициировать транзакции DMA. Это позволяет DPDK избежать ненужных накладных расходов и выполнять ввод-вывод полностью из пользовательского пространства.
Я уверен, что Linux гарантирует, что огромные страницы не будут заменено (написано здесь):
Страницы, которые используются как огромные страницы, зарезервированы внутри ядра и не могут
использоваться для других целей. Огромные страницы невозможно выгрузить из-за
нехватки памяти.
Согласно справочным страницам, mlock()< /code> гарантирует предотвращение выгрузки памяти в область подкачки, но не упоминает о закреплении физической памяти.
Должен быть какой-то метод, который DPDK использует для исправления физического адреса огромных страниц. . Что это за метод и как он работает?
Подробнее здесь: https://stackoverflow.com/questions/787 ... huge-pages
Как DPDK гарантирует фиксированный/закрепленный физический адрес для огромных страниц ⇐ Linux
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение