Назад | Перейти на главную страницу

проверьте, идет ли физическое автосогласование

Есть ли в Linux способ узнать, идет ли автоматическое согласование Ethernet или уже завершено?

Например, я вижу, что в моей сети интерфейсу 1 Гбайт требуется от 3 до 4 секунд, чтобы правильно обновить свой статус связи после того, как я установил его административный статус на «вверх».

Сейчас я вижу это /sys/class/net/$eth/speed дает invalid argument если интерфейс не работает, -1 если согласование продолжается, и согласованное значение скорости после завершения согласования. Это могло бы быть первым приближением к решению. Что-нибудь более точное, чем это?

Кстати, /sys/class/net/$eth/operstate является down как когда speed является -1 и когда это invalid value, поэтому я не могу его использовать.

Похоже, мы можем получить то, что вам нужно, с помощью "ethtool" и "perf".

На странице руководства по ethtool:

-r --согласовать

Перезапускает автосогласование на указанном устройстве Ethernet, если автосогласование включено.

Чтобы узнать больше о команде perf, а также о многом другом, посетите сайт Брендана Грегга: http://www.brendangregg.com/perf.html

Мы можем сделать перфоманс повторного согласования ethtool:

# perf record ethtool -r <interface>

А затем отобразить отчет

# perf report --stdio

На моей виртуальной машине, которая использует драйвер Intel e1000, я получаю эти результаты для отчета ... ваши результаты могут отличаться.

# Overhead  Command      Shared Object                                 Symbol
# ........  .......  .................  .....................................
#
    17.39%  ethtool  [kernel.kallsyms]  [k] e1000_raise_ee_clk.isra.7
    13.04%  ethtool  [kernel.kallsyms]  [k] __lock_text_start
    13.04%  ethtool  [kernel.kallsyms]  [k] delay_tsc
    13.04%  ethtool  [kernel.kallsyms]  [k] e1000_shift_in_ee_bits
     8.70%  ethtool  [kernel.kallsyms]  [k] e1000_lower_ee_clk.isra.8
     4.35%  ethtool  [kernel.kallsyms]  [k] e1000_acquire_eeprom
     4.35%  ethtool  [kernel.kallsyms]  [k] e1000_configure_rx
     4.35%  ethtool  [kernel.kallsyms]  [k] e1000_init_hw
     4.35%  ethtool  [kernel.kallsyms]  [k] e1000_release_eeprom
     4.35%  ethtool  [kernel.kallsyms]  [k] e1000_standby_eeprom
     4.35%  ethtool  [kernel.kallsyms]  [k] finish_task_switch
     4.35%  ethtool  [kernel.kallsyms]  [k] kmem_cache_free
     4.35%  ethtool  [kernel.kallsyms]  [k] native_read_tsc