Migruojam į 1Gbs. Greičio matavimas.

Besibeldžiant 2018 pagalvojau, kad pats laikas namuose 100Mbs tinklą atnaujinti iki 1Gbs tuo labiau, kad mano naudojamas 8 portų switch’iukas (komutatorius) tapo per ankštas.

Pasirinkimą labai apribojo fizinės vietos plotis, tad praktiškai vienintelis variantas atmetus brangų HP buvo ZYXEL GS1100-16 Gigabit-Ethernet-Switch, 16x 10/100/1000 Ports copper kuris iš skytech.lt atkeliavo už 71.99€

Kodėl rinkausi būtent šį modelį:
* Tinkamas fizinis plotis su 16’lika gigabitinių portų
* Rack mount
* Indikaciniai LED yra priekyje t.y. toje pačioje pusėje kaip ir fizinės jungtys
* Maitinimo blokelis įmontuotas korpuse todėl maitinimo laidas jungiamas tiesiai į korpusą
* Nugaroje turi įjungimo/išjungimo mygtuką. Jei kada reiks perkrauti nereikės ištraukinėti maitinimo laido.

Statybos metu statytojai suvedžiojo tikrai ne brangiausia UTP kabelį, kuris, jei gerai pamenu, net neturi ekrano. Kabeliai suvedžioti kartu su maitinimo/apšvietimo kabeliais. UTP panelė C5e kuri taip pat nėra skirta gigabitiniam tinklui. Patch kabeliukai patys papraščiausi, pigesnių turbūt rasti neįmanoma (šitai aš žadu ištaisyti).

Tad pamatuokime tinklo greiti. Matuosime su iperf.

sudo pacman -Sy iperf

Savo staliniam kompiuteryje kurio IP adresas yra 192.168.0.101 paleidžiu servisą:

[dinux@dinux ~]$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------

Pradedam greitį matuoti nuo lėčiausių klientų. Raspberry pi kurio LAN interfeisas yra pajungtas per USB2 magistralę ir jei šis techninis nesusipratimas nebus sutvarkytas avietė niekad neturės galimybės kominikuoti greičiau (ta pati problema su visų modelių avietėmis).

[dinux@alarmpi ~]$ iperf -c 192.168.0.101
------------------------------------------------------------
Client connecting to 192.168.0.101, TCP port 5001
TCP window size: 43.8 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.151 port 42820 connected with 192.168.0.101 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  60.9 MBytes  51.0 Mbits/sec

Sekantis bandymas su Banana pi. Pastarasis kompiuteriukas jau turi 1Gbs interfeisą. Beje jis turi ir SATA jungtį tad realus duomenų rašymas kopijuojant duomenis jau atsirems į disko galimybes, ne į LAN interfeiso.

[dinux@banana ~]$ iperf -c 192.168.0.101
------------------------------------------------------------
Client connecting to 192.168.0.101, TCP port 5001
TCP window size: 21.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.152 port 44979 connected with 192.168.0.101 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   606 MBytes   508 Mbits/sec

>500Mbs yra daugia nei gana tokiam kompiuteriukui.

Na ir paskutinis bandymas, nešiojamas HP 450 G1 pajungtas per 1Gbs interfeisą:

[daisak@pilkasai ~]$ iperf -c 192.168.0.101
------------------------------------------------------------
Client connecting to 192.168.0.101, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.103 port 37578 connected with 192.168.0.101 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.07 GBytes   915 Mbits/sec

Kaip su aukščiau minėtomis techninėmis sąlygomis, manau >900Mbs yra tikrai geras greitis. Ir klausimas ar su tikrai gerais kabeliais greitis labai priartėtu prie 1000Mbs.

Metrikoms: influxDB + Grafana

Vienintelės mano renkamos metrikos yra temperatūra apie kuria rašiau Protingas namas. 1 Dalis. Temperatūra.. Tiesa nuo tada termometrų padaugėjo ir dabar jų aštuoni. Ir duomenys jau senokai saugomi ne mariadb/mysql, o influxDB. O duomenims peržiūrėti ir analizuoti naudoju Grafana.

Oficealaus influxdb paketo nėra, tad teks susikompiluoti iš AUR:

yaourt -S influxdb

Pirmuosius influxdb žinksnius galima rasti čia. Tikrai nėra nieko sudėtingo.

Mano duomenų bazė vadinasi termometrai, o lentelė temperaturos.

Duomenys atrodo taip (stulpelių yra daugiau, apkirpau, kad tilptu į puslapį):

> select * from temperaturos limit 20 
name: temperaturos
time                28-0000052D4E36 28-0000052DC554 28-0000052DCA4A
----                --------------- --------------- ---------------
1491421622470175617                                 20.6875
1491421622933431847 5.6875
1491421624775957066                 20.1875
1491421683164960608                                 20.6875
1491421683725053335 5.6875
1491421685386914026                 20.1875
1491421743393921182                                 20.6875
1491421743956469988 5.6875
1491421745634864667                 20.1875
1491421802759609752                                 20.6875
1491421803239163911 5.6875
1491421804969827574                 20.1875

Duomenys taip pabire, nes kiekvienas termometras įrašomas atskirai (skiriasi įrašymo laikas). Viso to išvengti galima surinkus visus duomenis ir įrašinėjant viską vienu metu, viena užklausa. Taip užklausa, nes duomenis įrašinėjami kreipiantis tam tikru portu CURL‘u, WGET‘u ar kita programine įranga darant GET užklausą. Galima tiesiog į naršyklės URL’ą suvesti atitinkama adresą.

Aš duomenis rašau su PHP paCURL‘inant URL‘ą. Kodas žemiau:

        //Post to influxDB
        $ch = curl_init("http://localhost:8086/write?db=termometrai");
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS,"temperaturos ".$daviklioHWID."=".$tempvalue);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_exec($ch);
        curl_close($ch);

daviklioHWID yra termometro DS1820 adresas.
time (laiko) reikšmės paduoti nereikia.

Tame viskas ir paprasta, tiesiog aklai padavinėju termometro adresą ir jo reikšmę. Jei sistemoje atsiranda naujas termometras (naujas adresas) nieko daryt papildomai nereikia, stulpelis influxDB atsiranda automatiškai.

Dabar apie duomenų atvaizdavimą. Duomenis grafiškai atvaizduoti naudoju grafana.

sudo pacman -Sy grafana

Kai pradėjau naudoti Grafana tada dar ji nemokėjo skaityti iš mariadb/mysql. Dabar paskutinėse versijose ji tai gali daryti. Bet influxdb veikia akivaizdžiai greičiau, ypač kai db serveris paleistas ant Raspberry Pi model B.

Pirmą kartą prisijungus prie Grafana reikia prisidėti Data source t.y. duomenų šaltinį. Šiuo atveju tai indluxdb.

Turint duomenų šaltinį galima bandyti susikonfiguruoti Dash board t.y. langas kuriame bus grafikas/grafikai.

Maniškis atrodo taip (paspaudus pasididina):

Vienos metrikos (vienos linijos grafike) užklausa atrodo taip:

Visos keturios užklausos:

Atkreipiam dėmesį į GROUP BY. Grupuoju dėl dviejų priežasčių. Pirmoji, tai kaip minėjau aukščiau, duomenis įrašomi ne tuo pačiu momentu (skiriasi keliomis sekundėmis). Panaudojus grupavimą tiesiog skaičiuojamas, šiuo atveju trijų minučių vidurkis (tam ir naudojamas mean()) nesvarbu kiek matavimu per tas tris minutes buvo padaryta. Taip visi grafikai laiko atžvilgiu tampa lygus.

Antroji priežastis, kad termometrai nėra super tikslūs ir esant tomis pačiomis sąlygomis jie atiduota kažkiek kintamus (po kablelio) duomenis. Tad šiuo atveju grafikas kiek sulyginamas ir panaikinami 0.xxx nuokrypiai.

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close