Bedankt voor je antwoord. Ik drukte me misschien wat ongelukkig uit wat dat 'niet bestemd voor' betreft, maar je begrijpt de bedoeling.
Ik hou wel degelijk rekening met het feit dat het om 32 bit integers gaat die weer op nul gezet worden. Ook dat de teller op nul gezet wordt na een reboot. Ik denk niet dat er nog iets mis is met de manier waarop ik tel, maar ik blijf een misterieuze afwijking behouden tegenover Telenet's Telemeter. Als het nu om een paar megabytes per dag zou gaan zou ik nog zeggen, soit. Maar het gaat om honderd megabyte op een paar honderd megabyte.
Mijn script leest elke minuut /proc/net/dev uit en vergelijkt met de voorgaande waarde. Indien de huidige waarde groter is dan de oude, dan wordt het verschil bij het totaal per dag geteld. Is het kleiner, dan is de teller gereset. Er wordt dan gekeken of er ondertussen een reboot is geweest (uptime). In het geval van een reboot wordt als vorige waarde 0 genomen. Mogelijk verliezen we op die manier enkele bytes, maar dat zal negeerbaar weinig zijn. Was er geen reboot, dan is de teller gereset omdat hij over de 2^32 is gegaan. Het verschil wordt dan (4GB - VORIGE) + HUIDIGE.
Bij Telenet hebben we een zogenaamd nachttarief. Tussen 00:00 en 10:00 worden alle bytes slechts half gerekend (dit om 's nachts downloaden populairder te maken en zo overdag het netwerk te ontlasten - maar dit terzijde). Mijn script houdt hier rekening mee.
Steekproeven duiden uit dan mijn script zeker juist telt... En toch...
Hieronder een getalvoorbeeld van de up/download van gisteren en eergisteren. De byte gegevens zijn deze die ik uitlees uit /proc/net/dev op de aangeduide uren:
code:
1
2
3
4
5
6
7
8
| +-------+--------------+--------------+
| 17/08 | Downloaded | Uploaded |
+-------+--------------+--------------+
| 00:00 | 2178198204 A | 2340360432 E |
| 09:59 | 2227660307 B | 2385763921 F |
| 10:00 | 2228124399 C | 2385847681 G |
| 23:59 | 2391249697 D | 2454130424 H |
+-------+--------------+--------------+ |
Uit de log kan ik zien dat de teller nergens gereset is. De download traffiek van eergisteren berekenen doen we dus als volgt:
Gedeelte op nachttarief = X = (B - A) / 2 = 24731052
Gedeelte op normaal dagtarief = Y = D - C = 163125298
Totaal downloaded 17/08 = X + Y = 187856350 =
179 MB
Mijn script 17/08 (down): 179 MB
Telenet Telemeter 17/08 (down): 268 MB !!!!
Zoals je kunt zien: een aanzienlijk verschil... Nu de upload traffiek
Totaal uploaded 17/08 = X + Y = 90984488 =
87 MB
Mijn script 17/08 (up): 87 MB
Telenet Telemeter 17/08 (up): 87 MB
Identiek...
Nu hetzelfde voor gisteren:
code:
1
2
3
4
5
6
7
8
| +-------+--------------+--------------+
| 18/08 | Downloaded | Uploaded |
+-------+--------------+--------------+
| 00:00 | 2391259872 A | 2454201898 E |
| 09:59 | 2650342928 B | 2509425218 F |
| 10:00 | 2650352335 C | 2509498055 G |
| 23:59 | 2835696917 D | 2584949345 H |
+-------+--------------+--------------+ |
Totaal downloaded 18/08 = X + Y = 314886110 =
300 MB
Mijn script 18/08 (down): 300 MB
Telenet Telemeter 18/08 (down): 403 MB !!!!
Weer een aanzienlijk verschil...
Totaal uploaded 18/08 = X + Y = 103062950 =
98 MB
Mijn script 18/08 (up): 98 MB
Telenet Telemeter 18/08 (up): 98 MB
Zoals je uit de testresultaten kunt zien is de upload altijd 'spot-on' correct. Maar de download aangegeven door Telenet's Telemeter wijkt sterk af van de door mij gemeten waarde. Nu is/was de vraag; is mijn script fout, of licht Telenet ons op, of is er iets mis met /proc/net/dev waardoor niet de juiste gegevens verzameld worden? Mijn script werkt. Dat bewijzen bovenstaande getallenvoorbeelden. Dus blijft enkel Telenet of /proc/net/dev over. Om Telenet het voordeel van de twijfel te geven dacht ik dat /proc/net/dev misschien na de firewall gegevens verzamelde. Dat zou het verschil kunnen verklaren (alhoewel ik ~100 MB aan weggefilterde zooi per dag wel ongeloofwaardig veel vind).
Maar jij zegt dat het op de interface zelf wordt gemeten, dus dat kan ik ook uitsluiten... De interface waarop ik meet is rechtstreeks verbonden met de kabelmodem. Alle verkeer van en naar de kabelmodem gaat dus via die interface.
Blijft dus enkel Telenet over...