Альтернатива /proc/interrupts

Вопрос или проблема

Я хотел бы получить информацию о прерываниях, назначенных моим сетевым картам. Есть ли какой-либо другой способ, кроме /proc/interrupts?

Существует два общих интерфейса для получения информации о ядре (кроме системных вызовов), и они реализованы в виде файловых систем. Эти две файловые системы – это /proc и /sys. /sys немного более организован, чем /proc, и новее, но не так удобен для пользователя. Таким образом, он немного лучше подходит для программистов и позволяет избежать разбора.

Если вы хотите получить информацию из файловой системы /sys (которую анализирует lspci (смотрите файл, который выводится командой strace -o somefile lspci)):

$ lspci | grep -i network
00:19.0 Ethernet controller: Intel Corporation 82566DC Gigabit Network Connection (rev 02)
$ cat /sys/devices/pci0000:00/0000:00:19.0/irq
2299

Обратите внимание на связь 00:19 между двумя командами. Номер, возвращаемый файлом irq, будет таким же, как и в первом столбце /proc/interrupts для соответствующего устройства.

Если вы хотите больше информации о файловой системе /sys, посмотрите документацию, прилагаемую к исходникам ядра, например текстовые файлы в /usr/src/linux-source-2.6.27/Documentation/filesystems

Обновление:

Есть ли способ связать вывод с именем интерфейса?

Конечно, если вы поиграете с /sys, вы найдете много символических ссылок, указывающих на другие места в /sys. Например, в /sys/class/net:

[kbrandt@kb: /sys/class/net] ls -l
lrwxrwxrwx 1 root root 0 2009-11-02 11:01 eth0 -> ../../devices/pci0000:00/0000:00:19.0/net/eth0
lrwxrwxrwx 1 root root 0 2009-11-02 11:01 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx 1 root root 0 2009-11-02 11:01 pan0 -> ../../devices/virtual/net/pan0
lrwxrwxrwx 1 root root 0 2009-11-02 11:01 vmnet1 -> ../../devices/virtual/net/vmnet1
lrwxrwxrwx 1 root root 0 2009-11-02 11:01 vmnet8 -> ../../devices/virtual/net/vmnet8

Таким образом, чтобы получить irq для eth0, вы можете просто:

cat /sys/class/net/eth0/../../irq

lspci -v покажет, какое IRQ назначено вашей сетевой карте(ам).

Всего хорошего

Ответ или решение

Для получения информации о прерываниях, назначенных вашим сетевым картам, существует несколько альтернатив к файлу /proc/interrupts, которые помогут вам получить необходимую информацию в системе Linux.

Использование файловой системы /sys

В первую очередь стоит обратить внимание на файловую систему /sys, которая появилась в более поздних версиях ядра Linux и является более организованной по сравнению с /proc. Это делает её более удобной для программистов, поскольку позволяет избегать анализа текстовых данных.

  1. Получение информации о сетевых устройствах:
    Вы можете использовать команду lspci, чтобы отфильтровать только сетевые контроллеры, отобразив их IRQ (номер прерывания). Например, выполните команду:

    lspci | grep -i network

    Это покажет вам список сетевых устройств, например:

    00:19.0 Ethernet controller: Intel Corporation 82566DC Gigabit Network Connection (rev 02)
  2. Выявление IRQ устройства:
    После того как вы нашли ваше устройство, вы можете получить номер IRQ следующим образом. Найдите соответствующий путь в /sys для вашего сетевого устройства, например, для устройства с адресом 00:19.0:

    cat /sys/devices/pci0000:00/0000:00:19.0/irq

    Это вернёт значение, которое совпдает с первым столбцом файла /proc/interrupts для данного устройства.

Связывание с именем интерфейса

Созданный в процессе исследования, подход к получению IRQ может также быть улучшен за счёт использования символьных ссылок в /sys/class/net. Например, чтобы узнать номер IRQ для интерфейса eth0, выполните следующую команду:

cat /sys/class/net/eth0/../../irq

Информация из lspci

Кроме этого, для более подробной информации о вашем сетевом устройстве можно использовать команду:

lspci -v

Эта команда отобразит детальную информацию о всех подключенных устройствах, включая номера IRQ, что будет весьма полезно для вашего анализа.

Выводы и рекомендации

При использовании вышеперечисленных команд, вы сможете получить необходимую информацию о прерываниях, назначенных сетевым картам, без необходимости напрямую обращаться к /proc/interrupts. Уделяйте внимание документации к ядру, чтобы лучше понять и использовать файловые системы /proc и /sys, которые предоставляют множество способов для извлечения важной информации о системе.

Заключение

Если вы нуждаетесь в вспомогательной информации о работе с файловыми системами Linux, рекомендуется ознакомиться с документацией, входящей в состав исходников ядра, что поможет вам более глубоко понять устройство системы и её работу.

Оцените материал
Добавить комментарий

Капча загружается...