Portál AbcLinuxu, 14. května 2025 02:57
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č ifconfig
u 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:16a 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.