Jump to content

Process control daemon

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Haish2 (talk | contribs) at 16:17, 30 January 2011. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Process Control Daemon (PCD) is an open source, light-weight system level process manager/controller for Embedded-Linux based projects (such as consumer electronics and network devices).

This kind of a tool provides a complementary service for any Embedded Linux driven product and is specialized for the needs of embedded products. However, Embedded Linux distributions do not provide such a tool. Other similar tools which are available are not suited for embedded products in terms of compatibility, performance and limited hardware resources.

The PCD is a proven solution that already drives millions of devices in the world.

Background

The PCD project was designed and implemented by Hai Shalom, senior software engineer at Texas Instruments Israel at the time, as part of his M.Sc. degree in Computer Science. The project was initiated due to a true need in one of Texas Instruments’ broadband solutions (ARM1176 Running MV-Linux Pro-5.00). The system was originally started with shell scripts, where the init process started the rcS script, and it started some other scripts. Due to the rapid development process of the system’s software, more processes and tasks were added, and the scripts became too long, unreadable and hard to maintain. There was no efficient way to control the startup process of the system. Synchronizing inter-process dependency was difficult and determining the order of initialization required a lot of effort.

For example, a daemon which listens on a socket must precede any clients that send data on this socket. With shell scripts, there is no efficient way to verify this condition. A service with a complex state machine that needs to be in a specific state before it is ready has no standard means to synchronize with its clients.

Monitoring the system’s health was another issue. There was no entity that monitored and controlled the processes in the system. Therefore, in case of a crash, the system became unstable or unusable until the crashed process was manually detected.

At that time, the runtime debugging capabilities were very limited. In case of a process crash, there was no debug information available, unless compiling a special version that supports low optimizations, debug symbols and a GDB server.

Once PCD was integrated into the product, the final results showed reduced startup time and great improvements in the system’s robustness, reliability and availability. The Debugging and remote debugging capabilities were also improved due to the extended debug information which was available in case of a crash (Segmentation fault, bus error, or similar).

The project is still active and has been extended to support more embedded architectures and new features.

PCD Features in high-level

  • Start up the system in a synchronized and deterministic manner, according to a textual configuration file.
  • Control and monitor all the processes and services in the system.
  • Recover the system in case of errors or crashes, make it more reliable.
  • Provide useful and detailed debug information in case of a crash: Process details, registers dump and memory map.
  • Create a graphical representation of the system's processes.

PCD Licensing

The PCD Project is an Open-Source project, and it is licensed under the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation:

  • There are no purchase costs or royalty fees.
  • The source code is fully available.
  • High quality code due to extensive exposure.
  • The LGPL allows linking and mixing proprietary code with PCD safely. It is allowed to redistribute the PCD with any other software package, provided that the license terms are kept. Any changes or enhancements which are done on the PCD code must be returned to the community.
  • Continuous development: New features and other platforms are now supported.
  • Community support and bug fixes.
  • In case you need a new feature, either request it in the project tracker system, or join the PCD community and develop it, so other could also enjoy your productivity.

Reviews

The PCD Project received good reviews from software engineers and project managers who used it in their project; "PCD is a huge success in a project I am responsible for. It provides 4 major advantages: It simplifies the initialization code, it improves boot time, it reduces debugging effort (providing great crash logs), and improves the traditional WD implementation (monitoring all processes and act accordingly). All this translate to a better product and efficient development flow"[1].

The PCD Project was presented in the ARM Technology Conference 2010, and received good feedback. "Things are getting a lot easier for software developers who want to use open source Linux in their real time embedded designs, particularly on the ARM architecture"[2].

Notes