Вопрос или проблема
Я хотел бы получить информацию о прерываниях, назначенных моим сетевым картам. Есть ли какой-либо другой способ, кроме /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
. Это делает её более удобной для программистов, поскольку позволяет избегать анализа текстовых данных.
-
Получение информации о сетевых устройствах:
Вы можете использовать командуlspci
, чтобы отфильтровать только сетевые контроллеры, отобразив их IRQ (номер прерывания). Например, выполните команду:lspci | grep -i network
Это покажет вам список сетевых устройств, например:
00:19.0 Ethernet controller: Intel Corporation 82566DC Gigabit Network Connection (rev 02)
-
Выявление 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, рекомендуется ознакомиться с документацией, входящей в состав исходников ядра, что поможет вам более глубоко понять устройство системы и её работу.