Как посмотреть логи с сервера /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()
, К сожалению, код на самом деле не генерирует сообщения журнала.