Portál AbcLinuxu, 29. prosince 2025 09:47
Pomocí příkazů ifconfig, ifstat, ip -s link show, jde zjistit celkový počet přenesených bajtů (RX bytes). Problém nastane PŘIBLIŽNĚ u 4GB (32bit?) kdy se hodnota vyresetuje na nulu a počítá se znova. Nelze tak zjistit počet přenesených bajtů od zapnutí PC.
Otázka zní, jestli jde zjistit počet přenesených bajtů na zařízení od zapnutí počítače a proč nastává overflow hodnoty RX?
(distribuce Archlinux)
Na 32bit architekturách je čítač ifconfigu 32 bitový, takže víc jak 2^32 se do něj prostě nevejde.
Pokuď chceš znát počet bytů od startu systému (pomocí ifconfig), stačí jednoduše počítat počet přetečení vynásobit 2^32 a přičíst k aktuálnímu stavu. Nebo přejít na 64bit architekturu...
eth0 Link encap:Ethernet HWaddr .................
inet addr:.......... Bcast:...... Mask:.........
inet6 addr: .................../64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:18524746 errors:0 dropped:0 overruns:0 frame:0
TX packets:18173325 errors:187 dropped:0 overruns:0 carrier:0
collisions:898823 txqueuelen:1000
RX bytes:7159933915 (6828.2 Mb) TX bytes:14158119957 (13502.2 Mb)
Interrupt:16
a uname...
haluz ~ # uname -m x86_64
Počítadlo je interně 64-bitové (viz např. /proc/net/dev), ale userspace aplikace z něj dostávají jen dolních 32 bitů. Je to AFAIK kvůli tomu, že nad 64-bitovým jádrem můžete mít 32-bitové userspace aplikace.
Pokud chcete 64-bitová počítadla, použijte např. ta od netfiltru.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.