Comptadors de trànsit d’OpenVPN contra E/S de disc: tres nombres diferents
Els bytes d’interfície, els comptadors de caràcters del procés i les escriptures al disc mesuren feina diferent. Compareu-los abans de dimensionar discs a partir del volum del túnel.
Feu passar un fitxer gran per un túnel i el comptador d’interfície puja per la mida del fitxer. Res d’aquell número no implica que el mateix volum arribés a un disc. En aquestes converses es comparen tres mesures diferents, i responen tres preguntes diferents: quant trànsit va travessar una capa de xarxa, quants bytes va llegir i escriure un procés mitjançant crides de sistema, i quanta feina va arribar a la capa d’emmagatzematge.
Comparar el primer amb el tercer és l’error habitual, i produeix o bé un problema de disc fantasma o bé un pla de capacitat que ignora les escriptures que realment passen. Els tres són separables, i cadascun té un ús correcte.
Tres nombres que es confonen
Els comptadors d’interfície descriuen el trànsit gestionat en una capa de xarxa. Són el número correcte per a l’amplada de banda, per a la mida d’un túnel i per als models de facturació que posen preu al trànsit.
Els comptadors de caràcters del procés descriuen els bytes moguts per crides de lectura i escriptura sobre qualsevol descriptor, incloent-hi canonades, terminals i dispositius de caràcters. Són el número correcte per preguntar com d’ocupat està un procés al límit de la crida de sistema, i no són una factura d’emmagatzematge.
Els comptadors d’emmagatzematge descriuen els bytes que el nucli va intentar moure cap a o des d’un dispositiu de blocs. Són el número correcte per planificar la capacitat, amb l’advertiment que el nucli documenta els seus propis límits de comptabilitat: les lectures a la memòria cau no esdevenen lectures d’emmagatzematge, i una escriptura que després es cancel·la no esdevé una escriptura de dispositiu completada.
| Measurement | Question it answers |
|---|---|
| Interface bytes | How much traffic crossed this layer |
rchar and wchar | How much data the process moved through system calls |
read_bytes and write_bytes | How much work reached the storage layer |
Per què un descriptor de fitxer no és una escriptura a disc
Una VPN d’espai d’usuari intercanvia paquets amb el nucli mitjançant un dispositiu TUN, que és un dispositiu de caràcters i no un fitxer normal. Llegir-ne lliura un paquet; escriure-hi n’injecta un. No hi ha cap pàgina de contingut de fitxer preparada per a l’emmagatzematge, ni cap camí de sistema de fitxers implicat.
Per això un túnel actiu pot mostrar comptadors de caràcters enormes amb gairebé cap comptador d’emmagatzematge. El procés realment va moure aquests bytes, i el nucli realment no va necessitar cap disc per fer-ho.
cat /proc/$(pgrep -n openvpn)/io
ip -s link show tun0
Llegiu la primera sortida com a acumulada des de l’inici del procés, no com a taxa. La segona dóna la vista d’interfície del mateix trànsit. Una diferència gran entre les dues és esperable i no indica cap fuita, cua ni configuració incorrecta.
D’on vénen realment els bytes
La sortida persistent té el seu propi pressupost, i el mouen les operacions, no la càrrega útil. Un nivell de registre detallat, una llista de clients que canvia sovint o un error que es repeteix en un bucle estret poden generar escriptures considerables mentre el túnel transporta molt poc.
Un fitxer d’estat és una instantània reescrita a un interval, així que el seu cost depèn de l’interval i de quants registres conté. No és una còpia contínua del trànsit de cada client, i escurçar l’interval canvia el volum d’escriptura sense canviar el volum de trànsit.
La propietat importa quan aneu a buscar aquestes escriptures. Si el servei lliura missatges a un dimoni de registre, el registre o el fitxer l’escriu aquest dimoni, i els bytes apareixen en la comptabilitat del dimoni i no en els comptadors propis del procés VPN. Mirar només el procés VPN no explica ni l’activitat de disc ni la seva absència.
Altres contribuents són fàcils de passar per alt: lectures de certificats i configuració en arrencar, ganxos que escriuen els seus propis registres, connectors de comptabilitat, abocaments de fallada i càrregues no relacionades al mateix amfitrió. Cap d’ells no s’hauria d’estimar equiparant el trànsit del túnel amb els bytes escrits.
Llegir cada comptador correctament
Tres detalls decideixen si una comparació significa res. La identitat del procés importa, perquè un servei reiniciat reinicia els seus comptadors. L’interval de temps importa, perquè una xifra acumulada i un gràfic per segon són mesures diferents. I la unitat importa, perquè la mida actual d’un fitxer de registre tampoc no és una taxa.
grep -E 'rchar|wchar|read_bytes|write_bytes' /proc/$(pgrep -n openvpn)/io
du -sh /var/log/openvpn 2>/dev/null
journalctl --disk-usage
Si sospiteu escriptures reals de càrrega útil, busqueu un component la feina del qual sigui desar càrrega útil: una eina de captura de paquets, un proxy que desa cossos a la memòria cau, un connector que arxiva. Aquests produeixen trànsit d’emmagatzematge que escala amb el que se’ls demana registrar, i pertanyen a una decisió de política separada sobre retenció i accés.
Planificar la capacitat amb el número correcte
Dimensioneu el camí dels paquets amb xifres de xarxa: cabal, processament criptogràfic i moviment de memòria. Dimensioneu l’emmagatzematge amb les decisions d’observabilitat que realment heu pres: nivell de registre, retenció, interval d’estat i qualsevol captura habilitada deliberadament.
Mantenir aquests dos pressupostos separats també fa més fàcil llegir els incidents. Un disc ple amb un trànsit de túnel modest assenyala registres, captures o alguna cosa no relacionada, i el comptador d’interfície mai no ho explicarà. Un enllaç saturat amb un registre silenciós assenyala a l’altre costat.
La comparació que val la pena és entre mesures del mateix tipus. Bytes d’interfície contra bytes d’interfície al llarg del temps us parlen del camí. Escriptures al disc contra capacitat d’emmagatzematge us parlen de la retenció. La comparació creuada, trànsit contra disc, només sembla significativa i mai no ho és.