Timing analysis

Multi-core pitfalls: unintended code synchronization

Despite (or possibly because) multi-core systems development use the same programming languages, and largely similar design methods as single-core systems, migrating applications from single-core to multi-core systems can present some unexpected challenges.
Read More

Misusing Execution Time Profiles

One of my favourite sayings is "when the only tool you have is a hammer, all your problems look like nails". We've been analyzing the response time of our website by tracking the ping response times, and I saw an opportunity to use one of RapiTime's reports to visualise this data.
Read More

How to trace the source of deadlocks

In this article I explain how you can use the principles of tracing tools to find the sequence of events that lead to a deadlock. A deadlock is a cyclic dependency, for example where action A cannot continue because it is waiting for a resource to be unlocked by action B, however action B is waiting on A before continuing. Deadlocks are one of the many banes of multi-threaded development for dynamically scheduled systems. Even though the locations of the deadlock itself are easy enough to find, establishing how we got to that point is often a harder task.
Read More

Deadline Floor Inheritance Protocol for Earliest Deadline First resource sharing

In a previous posting, I mentioned the Deadline Floor Inheritance Protocol for resource sharing in EDF schedulers. In this blog post, I describe how this works.
Read More