У меня есть приложение, потребляющее много сетевого трафика 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 Мбит?