Numëruesit e trafikut të OpenVPN kundrejt I/O-së së diskut: tre numra të ndryshëm
Bajtët e ndërfaqes, numëruesit e karaktereve të procesit dhe shkrimet në disk matin punë të ndryshme. Krahasoni ata përpara se t’i përmasat diskët nga vëllimi i tunelit.
Kaloni një skedar të madh nëpër një tunel dhe numëruesi i ndërfaqes rritet me madhësinë e skedarit. Asgjë në atë numër nuk nënkupton se i njëjti vëllim arriti në një disk. Në këto diskutime krahasohen tre matje të ndryshme, dhe ato përgjigjen tre pyetjeve të ndryshme: sa trafik kaloi një shtresë rrjeti, sa bajt lexoi dhe shkroi një proces përmes thirrjeve të sistemit, dhe sa punë arriti në shtresën e ruajtjes.
Krahasimi i të parit me të tretin është gabimi i zakonshëm, dhe prodhon ose një problem fantazmë me diskun ose një plan kapaciteti që injoron shkrimet që ndodhin vërtet. Të tre janë të ndashëm, dhe secili ka përdorim të saktë.
Tre numra që ngatërrohen
Numëruesit e ndërfaqes përshkruajnë trafikun që trajtohet në një shtresë rrjeti. Ata janë numri i saktë për gjerësinë e brezit, për madhësinë e një tuneli dhe për modelet e faturimit që vënë çmim mbi transitin.
Numëruesit e karaktereve të procesit përshkruajnë bajtët e zhvendosur përmes thirrjeve të leximit dhe shkrimit në çdo përshkrues, duke përfshirë tubat, terminalet dhe pajisjet e karaktereve. Ata janë numri i saktë për të pyetur sa i zënë është një proces në kufirin e thirrjes së sistemit, dhe nuk janë një faturë ruajtjeje.
Numëruesit e ruajtjes përshkruajnë bajtët që bërthama u përpoq të zhvendoste drejt ose nga një pajisje blloku. Ata janë numri i saktë për planifikimin e kapacitetit, me kushtin që bërthama dokumenton kufijtë e vetë kontabilitetit: leximet në cache nuk bëhen lexime ruajtjeje, dhe një shkrim që anulohet më vonë nuk bëhet shkrim i plotësuar i pajisjes.
| 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 |
Pse një përshkrues skedari nuk është shkrim në disk
Një VPN në hapësirën e përdoruesit shkëmben paketa me bërthamën përmes një pajisjeje TUN, e cila është pajisje karakteresh dhe jo skedar normal. Leximi prej saj dorëzon një paketë; shkrimi në të injekton një. Nuk ka asnjë faqe përmbajtjeje skedari që përgatitet për ruajtje, dhe asnjë shteg sistemi skedarësh nuk përfshihet.
Kjo është arsyeja pse një tunel i zënë mund të tregojë numërues karakteresh të mëdhenj me pothuajse asnjë numërues ruajtjeje. Procesi vërtet i zhvendosi ata bajtë, dhe bërthama vërtet nuk kishte nevojë për një disk për ta bërë këtë.
cat /proc/$(pgrep -n openvpn)/io
ip -s link show tun0
Lexoni daljen e parë si të grumbulluar që nga nisja e procesit, jo si ritëm. E dyta jep pamjen e ndërfaqes për të njëjtin trafik. Një hendek i madh midis të dyjave pritet dhe nuk tregon rrjedhje, radhë ose konfigurim të gabuar.
Nga vijnë vërtet bajtët
Dalja e vazhdueshme ka buxhetin e vet, dhe drejtohet nga operacionet dhe jo nga ngarkesa. Një nivel log i hollësishëm, një listë klientësh që ndryshon shpesh, ose një gabim që përsëritet në një cikël të ngushtë mund të krijojnë shkrime të konsiderueshme ndërsa tuneli mbart shumë pak.
Një skedar statusi është një pamje që rishkruhet në një interval, kështu që kostoja e tij varet nga intervali dhe nga sa regjistrime përmban. Nuk është një kopje e rrjedhshme e trafikut të secilit klient, dhe shkurtimi i intervalit ndryshon vëllimin e shkrimit pa ndryshuar vëllimin e trafikut.
Pronësia ka rëndësi kur kërkoni ato shkrime. Nëse shërbimi u dorëzon mesazhet një demoni logimi, ditarit ose skedarit shkruan ai demon, dhe bajtët shfaqen në kontabilitetin e demonit dhe jo në numëruesit e vetë procesit VPN. Të shikosh vetëm procesin VPN nuk shpjegon as aktivitetin e diskut as mungesën e tij.
Kontribuesit e tjerë janë të lehtë për t’u anashkaluar: leximet e certifikatave dhe konfigurimit në nisje, grepat që shkruajnë regjistrimet e tyre, shtojcat e kontabilitetit, hedhjet e dështimit dhe ngarkesat e palidhura në të njëjtin host. Asnjëri prej tyre nuk duhet vlerësuar duke barazuar trafikun e tunelit me bajtët e shkruar.
Leximi i saktë i çdo numëruesi
Tre detaje vendosin nëse një krahasim do të thotë diçka. Identiteti i procesit ka rëndësi, sepse një shërbim i rinisur i rivendos numëruesit e tij. Intervali kohor ka rëndësi, sepse një shifër e grumbulluar dhe një grafik për sekondë janë matje të ndryshme. Dhe njësia ka rëndësi, sepse edhe madhësia aktuale e një skedari log nuk është ritëm.
grep -E 'rchar|wchar|read_bytes|write_bytes' /proc/$(pgrep -n openvpn)/io
du -sh /var/log/openvpn 2>/dev/null
journalctl --disk-usage
Nëse dyshoni për shkrime të vërteta të ngarkesës, kërkoni një komponent detyra e të cilit është të ruajë ngarkesën: një mjet për kapjen e paketave, një proxy që ruan trupat në cache, një shtojcë që arkivon. Këta prodhojnë trafik ruajtjeje që rritet me atë që u kërkohet të regjistrojnë, dhe i përkasin një vendimi të veçantë politik për mbajtjen dhe aksesin.
Planifikimi i kapacitetit me numrin e saktë
Përmasat e shtegut të paketave me numra rrjeta: xhiro, përpunim kriptografik dhe lëvizje memorieje. Përmasat e ruajtjes me zgjedhjet e vëzhgueshmërisë që keni marrë vërtet: niveli i logut, mbajtja, intervali i statusit dhe çdo kapje e aktivizuar qëllimisht.
Mbajtja e këtyre dy buxheteve të veçanta e bën më të lehtë edhe leximin e incidenteve. Një disk i plotë me trafik të modest të tunelit tregon drejt logjeve, kapjeve ose diçkaje të palidhur, dhe numëruesi i ndërfaqes nuk do ta shpjegojë kurrë. Një lidhje e ngopur me një log të qetë tregon drejtimin tjetër.
Krahasimi që ia vlen të bëhet është midis matjeve të të njëjtit lloj. Bajtët e ndërfaqes kundrejt bajtëve të ndërfaqes me kalimin e kohës ju tregojnë për shtegun. Shkrimet e ruajtjes kundrejt kapacitetit të ruajtjes ju tregojnë për mbajtjen. Krahasimi i kryqëzuar, trafiku kundrejt diskut, vetëm duket kuptimplotë dhe nuk është kurrë i tillë.