Processkontrolldemon
Process Control Daemon ( PCD ) är en öppen källkod , lätt processhanterare /kontroller på systemnivå för inbyggda Linux- baserade projekt (som konsumentelektronik och nätverksenheter).
Det här verktyget tillhandahåller en kompletterande tjänst för alla inbäddade Linux- drivna produkter och är specialiserat för behoven hos inbäddade produkter . PCD skapades eftersom Embedded Linux-distributioner inte tillhandahöll ett sådant verktyg. Andra liknande verktyg som är tillgängliga är inte lämpade för inbäddade produkter när det gäller kompatibilitet, prestanda och begränsade hårdvaruresurser.
Bakgrund
PCD-projektet designades och implementerades av Hai Shalom, senior mjukvaruingenjör vid Texas Instruments Israel vid den tiden, som en del av sin M.Sc. examen i datavetenskap. Projektet initierades på grund av ett verkligt behov av en av Texas Instruments bredbandslösningar ( ARM1176 Running MV-Linux Pro-5.00). Systemet startades ursprungligen med skalskript , där init-processen startade rcS- skriptet, och det startade några andra skript. På grund av den snabba utvecklingsprocessen av systemets mjukvara tillkom fler processer och uppgifter , och skripten blev för långa, oläsliga och svåra att underhålla. Det fanns inget effektivt sätt att styra uppstartsprocessen av systemet. Att synkronisera beroendet mellan processer var svårt och att fastställa initialiseringsordningen krävde mycket ansträngning.
Till exempel måste en demon som lyssnar på en socket föregå alla klienter som skickar data på denna socket. Med skalskript finns det inget effektivt sätt att verifiera detta villkor. En tjänst med en komplex tillståndsmaskin som måste vara i ett specifikt tillstånd innan den är klar har inga standardmöjligheter att synkronisera med sina klienter.
Övervakning av systemets hälsa var en annan fråga. Det fanns ingen enhet som övervakade och kontrollerade processerna i systemet. Därför, i händelse av en krasch, blev systemet instabilt eller oanvändbart tills den kraschade processen upptäcktes manuellt.
Vid den tiden var kapaciteten för runtime-felsökning mycket begränsad. I händelse av en processkrasch fanns det ingen felsökningsinformation tillgänglig, om inte kompilering av en specialversion som stöder låga optimeringar, felsökningssymboler och en GDB-server .
När PCD väl integrerats i produkten visade slutresultaten minskad starttid och stora förbättringar av systemets robusthet, tillförlitlighet och tillgänglighet. Möjligheterna för felsökning och fjärrfelsökning förbättrades också på grund av den utökade felsökningsinformationen som var tillgänglig i händelse av en krasch ( segmenteringsfel , bussfel eller liknande).
Projektet är inte längre aktivt men har utökats för att stödja fler inbäddade arkitekturer och nya funktioner.
Funktioner på hög nivå
- Starta upp systemet på ett synkroniserat och deterministiskt sätt, enligt en textkonfigurationsfil.
- Kontrollera och övervaka alla processer och tjänster i systemet.
- Återställ systemet i händelse av fel eller kraschar, gör det mer tillförlitligt.
- Tillhandahåll användbar och detaljerad felsökningsinformation i händelse av en krasch: Processdetaljer, registerdump och minneskarta.
- Skapa en grafisk representation av systemets processer.
Konfiguration
PCD:n måste konfigureras med alla processer, demoner och uppgifter som den kontrollerar. Konfigurationen görs i runtime, med hjälp av en enkel, läsbar konfigurationsfil (AKA PCD Script). Varje process har sitt eget regelblock som beskriver det, definierar dess beroende i andra regler, definierar dess detaljer och vilken åtgärd som ska utföras om den misslyckas. Regelblocken definierar beroenden mellan processerna på det mest deterministiska sättet, och som ett resultat bygger PCD:n ett beroendeträd av denna information. När alla regler är skrivna och ett beroendeträd har upprättats, kan PCD:n starta systemet på det mest tillförlitliga sättet, och uppstartstiden blir snabbare, jämfört med skriptstart. PCD-skripten kan också användas i värddatorn för att generera en grafisk representation av systemets startberoende för bättre förståelse och för dokumentationsändamål, som kan ses i följande exempel:
Kraschåterställning
En av de stora fördelarna med PCD:n är dess felsökningskapacitet och kraschåterställningsförmåga. PCD:n implementerar också en kraschdemon som ständigt övervakar systemets hälsa och utför en återställningsåtgärd i händelse av en krasch. Denna funktion förbättrar systemets stabilitet, robusthet och tillgänglighet.
PCD:n ger också mycket användbar felsökningsinformation som kan hjälpa utvecklarna och testingenjörerna att förstå vad som hände. Felsökningsinformationen visas på systemets konsol och kan lagras i en icke-flyktig lagring för senare analys. Den detaljerade felsökningsinformationen inkluderar alla processdetaljer, alla signaldetaljer, en komplett registerdump (på stödda arkitekturer) och processens adresskarta.
Denna felsökningsinformation är tillgänglig när som helst och överallt (även i fält) och den kräver ingen speciell felsökningsversion.
Licensiering
PCD-projektet är ett projekt med öppen källkod, och det är licensierat under GNU Lesser General Public License version 2.1, som publicerats av Free Software Foundation:
- Det tillkommer inga köpkostnader eller royaltyavgifter.
- Källkoden är fullt tillgänglig.
- Hög kvalitetskod på grund av omfattande exponering.
- LGPL tillåter länkning och blandning av proprietär kod med PCD på ett säkert sätt. Det är tillåtet att omdistribuera PCD:n med vilket annat programvarupaket som helst, förutsatt att licensvillkoren hålls. Alla ändringar eller förbättringar som görs på PCD-koden måste returneras till communityn.
- Kontinuerlig utveckling: Nya funktioner och andra plattformar stöds nu.
- Communitysupport och buggfixar.
- Om du behöver en ny funktion, antingen begär den i projektspårningssystemet eller gå med i PCD-communityt och utveckla den, så att andra också kan njuta av din produktivitet.
Recensioner
PCD-projektet fick goda recensioner från mjukvaruingenjörer och projektledare som använde det i sitt projekt; " PCD är en stor framgång i ett projekt som jag är ansvarig för. Det ger fyra stora fördelar: det förenklar initialiseringskoden, det förbättrar uppstartstiden, det minskar felsökningsarbetet (ger bra kraschloggar) och förbättrar den traditionella WD-implementeringen (övervakning). alla processer och agera därefter). Allt detta leder till en bättre produkt och ett effektivt utvecklingsflöde " .
PCD-projektet presenterades på ARM Technology Conference 2010 och fick bra feedback. " Det blir mycket lättare för mjukvaruutvecklare som vill använda Linux med öppen källkod i sina inbyggda realtidsdesigner, särskilt på ARM-arkitekturen" .
externa länkar
- PCD-projektsida på SourceForge.net - Ladda ner senaste versionen, bläddra i koden, gå med i communityn eller få hjälp och support.
- PCD supportforum
- PCD-presentation vid ARM Technology Conference 2010 [ permanent död länk ]
- GNU Lesser General Public License version 2.1