Linux загружает неправильные драйверы

Параметр overcommit_memoryучитывается в трех местах подсистемы управления памятью -.

  1. Основной из них является__vm_enough_memoryв mm/util.c, который определяет, достаточно ли памяти для продолжения выделения памяти (обратите внимание, что это вспомогательная функция, которая не обязательно вызывается ). Если overcommit_memoryравно 1, эта функция всегда завершается успешно. Если это 2, он проверяет фактическую доступную память. Если он равен 0, он использует знаменитую эвристику, о которой вы упоминаете; это происходит следующим образом:

    • подсчитать количество свободных страниц
    • добавить количество файлов -сохраненных страниц (их можно восстановить)
    • удалить страницы, используемые для общей памяти
    • добавить страницы подкачки
    • добавить восстанавливаемые страницы
    • учетная запись для зарезервированных страниц
    • оставить часть памяти для root (, если выделение не выполняется процессом cap_sys_admin)

    Полученная сумма используется в качестве порога для выделения памяти.

  2. mmapтакже проверяет, что параметр:MAP_NORESERVEсоблюдается, если разрешена избыточная фиксация (режимы 0 и 1 ), и приводит к выделению памяти без резервного свопа(VM_NORESERVE). В данном конкретном случае режим 0 фактически эквивалентен режиму 1; это то, что «вызовы mmap(2)с MAP_NORESERVEне проверяются» относится к :это означает, что вызовыMAP_NORESERVEmmapвсегда будут успешными, а выделение более -приведет к OOM -убийственному степпингу постфактум или нарушение сегмента при попытке записи.

  3. shmemведет себя аналогично mmap.

Исчерпание адресного пространства должно приводить к сбоям выделения, а не к уничтожению OOM -, поскольку выделение фактически не может продолжаться.

0
01.03.2019, 13:23
1 ответ

В этом вопросе на AskUbuntu.SE были похожие ошибки AMD IOMMU, и они были исправлены путем добавления параметра загрузки ядра iommu=soft.

Однако это может быть просто обходной путь :для реального исправления могут потребоваться исправления для драйверов AMD IOMMU и/или ath10k_pcieWiFi.

1
28.01.2020, 03:57

Теги

Похожие вопросы