Percepio visar hur programmet fungerar
Jag brukar inte så ofta ta upp enskilda produkter i den här spalten, men de senaste lanseringarna från Svenska Percepio är faktiskt alldeles ovanligt intressanta. Det handlar både om systemet för automatisk återrapportering av problem och utvidgningen av analysverktygen till Linux-världen.
Se vad som händer
Många har säkert följt företagets utvecklingsarbete av visualiseringsverktyg för realtidsoperativsystem. Tracealyzer visar hur olika programdelar hänger ihop och var systemets tid spenderas. Verktyget ger både en grafisk ”helikoptervy” över systemet och detaljerad grafisk analys över de olika trådarna och vad de har för sig.
Den här typen av verktyg är naturligtvis väldigt användbart för att analysera förväntade problem och för att optimera trånga sektorer. Men ännu viktigare är att konstruktören hjälps att hitta dumheter och misstag som normalt sett aldrig skulle ha upptäckts. Det kan gälla kvarglömd testkod som sänker prestanda och innebär säkerhetsrisker. Det kan också gälla gamla ineffektiva programdelar som tar löjligt stor del av exekveringstiden. Dagens industrisystem är så komplexa att det är närmast omöjligt att hålla ordning på alla delar.
Problemet blev uppenbart när de industriella styrsystemen kopplades till omvärlden via nätverk. Plötsligt skulle gamla programdelar som utvecklats utan en tanke på datasäkerhet fungera i system med total öppenhet utåt. Att skriva om program som faktiskt fungerar är inget man vill göra, samtidigt som kunskapen om de gamla programmen och deras revisioner ofta är bristfällig. I det här läget kan ett analysverktyg som Tracealyzer vara guld värt.
Ännu värre i Linux-världen
Men om problemen är stora i RTOS-världen är de gigantiska i Linux-världen. De senaste åren har programstorlekarna exploderat och det är oerhört svårt att hålla ordning alla samverkande delar från alla olika håll.
Att Percepio nu lanserar Tracealyzer för Linux är därför en stor nyhet. Det handlar dessutom inte bara om ett RTOS-verktyg som anpassats för Linux utan om ett helt Linux-optimerat verktyg som till exempel kan hantera den processhierarki som finns i Linux och som kan se exakt var individuella filer används.
Precis som i RTOS-världen ger analysverktyget en övergripande bild av vad som händer och var systemet spenderar sin tid. Därefter kan man ta sig ner på detaljnivå för att undersöka egendomligheter och onödigt ineffektiva delar.
Enligt Percepios vd Johan Kraft handlar det förbluffande ofta om att hitta dumma misstag som i och för sig är lätta att reparera, men som normalt sett aldrig hittas. Den här typen av misstag kan dramatiskt sänka prestanda på ett system eller öka energiförbrukningen. De kan också leda till oförutsedda stopp eller säkerhetsrisker.
Rapportera fel
Att hitta fel är viktigt, men i praktiken är det omöjligt att hitta allt. Enligt Johan Kraft har nya embeddedprogram ofta tre till fem missade fel per 1 000 kodrader när de lanseras. Det innebär massor av fel som förmodligen inte visar sig förrän en oväntad situation uppträder. Det innebär också att massor av system plötsligt kan få oväntade problem samtidigt.
Därför lanserar Percepio molntjänsten DevAlert för IoT-system. Tjänsten rapporterar hårdvaruproblem i uppkopplade enheter och erbjuder visuell diagnostisk information för snabbare problemlösning.
Systemet gör det möjligt att se problem i drift innan de leder till katastroffel. Det blir också möjligt att klassificera problem så att även enklare fel rättas och läggs in i en senare programuppdatering.
Det är väl bara att inse att tiden är förbi då ett embeddedsystem konstruerades, felsöktes och sedan placerades ut i sin ”verklighet” för att sedan aldrig mera åtgärdas. I ärlighetens namn har det väl sällan sett ut på det sättet heller. Problem uppstår förr eller senare.
Stora program och nätverk
Till syvende och sist handlar det mesta om säkerhet. Det är en sak att konstruera en liten pryl som saknar anslutning till omvärlden och dessutom saknar grafiskt gränssnitt. Då går det ganska bra att hålla programmen små och överblickbara. En och annan säkerhetsmiss kan man också kosta på sig när det krävs fysiska ingrepp för att komma åt mjukvaran.
Det är något helt annat att konstruera system med avancerade grafiska gränssnitt och nätverksanslutning. Programmen växer ut över alla bräddar och det blir närmast ogörligt att överblicka alla programdelar. Samtidigt gör nätverksanslutningen att alla säkerhetsmissar blir tillgängliga utan att den eventuelle skurken behöver flytta sig från sin kontorsstol någonstans i världen.
I det läget behöver vi både bättre diagnostikverktyg och system för automatisk återrapportering av fel. Och där är vi idag.
Filed under: Göte Fagerfjäll
Reklamen säger att verktyget plockar alla fel, men jag tar av mig hatten om ens 10% hittas.
Visst vore det bra med ett högintelligent program som klarar av att lösa problem du inte klarar. Men försök sätta dig ned och göra ett sådant system. Den ska angripa kodbasen utan att ens ha läst en enda spec hur det ens är tänkt att fungera. Snacka om omöjlig uppgift! Inte ens du skulle klara den.
Ta tex windows små sk ”annoyances” där man trott sig kunna programmera en dator att förstå vad du egentligen vill göra. Klassikern är den så kallade ”smart copy” som praktiskt taget aldrig kan gissa vilken text jag vill markera.
Förtydligande från Percepio:
DevAlert är en lösning för felrapportering från enheter i fält, kompletterad med visuell diagnostik av de senaste loggade händelserna. Är ingen magi som upptäcker alla fel automatiskt, som Anders uppfattade saken. Felen måste först detekteras av (befintliga) felkontroller i mjukvara och hårdvara, men kan sedan enkelt rapporteras till molntjänsten. Konceptuellt är det ganska enkelt, men klurigare att få till det säkert och skalbart i praktiken.