Estou tentando modificar algo em /sys
. Meu comando está falhando.
por exemplo echo 63 > /sys/bus/pci/devices/0000:62:00.0/sriov_numvfs
->bash: echo: write error: Cannot allocate memory
por exemplo echo three > /sys/devices/system/node/node1/hugepages/hugepages-1048576kB/nr_hugepages
->bash: echo: write error: Invalid argument
Como posso depurar essas falhas? Existe um método geral para encontrar os logs do que quer que esteja do outro lado desses arquivos virtuais? Idealmente, quero encontrar o processo ou o código-fonte do que está gerando a mensagem de erro.
O processo é o kernel do Linux. Seu código-fonte pode ser encontrado em vários repositórios Git.
As mensagens de log geradas pelo kernel apareceriam em
dmesg
(com exceção das mensagens de nível de "depuração" que precisam ser ativadas primeiro).Os atributos do Sysfs são definidos e manipulados pelos drivers de dispositivo, mas geralmente é mais fácil apenas
git grep
(ou usar a pesquisa online do Elixir) para o nome de arquivo específico que causa problemas e continuar cavando a partir daí. Procure um par de funções "store"/"show", que aceitam suas gravações e fornecem dados para suas leituras.As gravações
sriov_numvfs
são feitassriov_numvfs_store()
em drivers/pci/pci-sysfs.c . As mensagens de erro que ele imprime (usando pci_info ou pci_err) vão para dmesg.A parte que manipula as gravações
nr_hugepages
(tanto o sysctl global quanto os atributos por nó) parece estar em mm/hugetlb.c – procure por function__nr_hugepages_store_common()
. Infelizmente, o código não gera mensagens de log em primeiro lugar.