Как посмотреть логи с сервера /sys

Я пытаюсь что-то изменить в /sys, Моя команда терпит неудачу.

например echo 63 > /sys/bus/pci/devices/0000:62:00.0/sriov_numvfs -> bash: echo: write error: Cannot allocate memory

например echo three > /sys/devices/system/node/node1/hugepages/hugepages-1048576kB/nr_hugepages -> bash: echo: write error: Invalid argument

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

1 ответ

Решение

Процесс - это ядро ​​Linux. Его исходный код можно найти в различных репозиториях Git.

Сообщения журнала, генерируемые ядром, будут отображаться в dmesg (за исключением сообщений уровня отладки, которые должны быть включены в первую очередь).

Атрибуты Sysfs определяются и обрабатываются драйверами устройств, но обычно проще просто git grep (или используйте онлайн-поиск Elixir) для конкретного имени файла, которое вызывает проблемы и продолжает копать оттуда. Ищите пару функций "store"/"show", которые принимают ваши записи и предоставляют данные для ваших чтений.

  • Пишет sriov_numvfs обрабатываются sriov_numvfs_store() в драйверах / pci / pci-sysfs.c. Сообщения об ошибках, которые он печатает (используя pci_info или pci_err), идут в dmesg.

  • Часть, которая обрабатывает записи в nr_hugepages (и глобальные атрибуты sysctl и per-node), кажется, находятся в mm / hugetlb.c - ищите функцию __nr_hugepages_store_common(), К сожалению, код на самом деле не генерирует сообщения журнала.

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