Результаты измерения использования сети с помощью psutil и ethtool - PullRequest
0 голосов
/ 13 июля 2020

У меня есть приложение, потребляющее много сетевого трафика c. Я использовал psutil для измерения сетевой активности в кбит со следующим кодом:

old_value = psutil.net_io_counters(nowrap=True).bytes_sent + psutil.net_io_counters(nowrap=True).bytes_recv
sleep(1)

while True:
    new_value = psutil.net_io_counters(nowrap=True).bytes_sent + psutil.net_io_counters(nowrap=True).bytes_recv
    net_usage = (new_value - old_value)/1024.0 * 8
    old_value = new_value

    print(net_usage)
    sleep(1)

До этого я ограничил сеть до 10 Мбит / с с помощью следующей команды:

ethtool -s eth0 speed 10 duplex full autoneg off

Я ожидал увидеть список чисел, близких к 10000 кбит, вместо этого числа были явно ограничены числом, близким к ~ 6380:

Использование сети после ограничения до 10 Мбит

Есть ли этому объяснение? Т.е. почему лимит не был 10000, хотя количество явно ограничивалось эттулом? Мой код измерения или мои ожидания ошибочны?

EDIT: Мое приложение использует сеть в основном для загрузки данных. Возможно ли, что лимит в 10 Мбит разделен между направлениями выгрузки и загрузки с помощью ethtool, а выгрузке назначено только 6,4 Мбит?

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Вероятно, это была проблема сети, которую я решил, установив "autoneg" на "on". Следовательно, правильная команда была:

ethtool -s eth0 speed 10 duplex full autoneg on

При этом я вижу список значений, близких к 10000.

В любом случае, любое объяснение этого поведения все равно приветствуется.

0 голосов
/ 14 июля 2020

Вы должны поместить time.sleep (1) между старым и новым значением.

...