Elite software development.

technical

D-Bus Performance Report

D-Bus is a software framework for inter-process communication. It is integral to the operation of modern Linux. At present, its performance is suspect.

The attached document (draft version 0.9.9) summarises a series of experiments and benchmarks which were performed to characterise the performance of D-Bus.

Top 10 Most-Used Haskell Packages

This article lists the top 10 most used Haskell packages and summarizes each.

'MmRelive' - Collect Stats on Memory Management Activity

MmRelive is a software utility used to 're-live' the memory management activities of a process. Use it to collect useful statistics on the memory usage of a program. It is especially useful for discovering high water marks.

I wrote 'MmRelive' in Haskell, but it can be used by non-programmers.

Fast Multicast IPC on Linux and Unix

IPC frameworks on Linux come in two varieties: complicated and nonexistent. This article presents the design for a very fast IPC framework that uses shared memory and supports multicast messaging. The design is flexible and not complicated.

In response to the complexity and performance of the D-Bus IPC framework, my employer, Collabora, asked me to investigate options for improving it.

Why Your Shared Library Code Is Slow

**Position Independent Code**

When you compile a shared library (with -fPIC, in the case of gcc), you are specifying that you want the compiler to generate *position independent code*.

Position independent code never uses straightforward machine addressing modes to access global variables, static variables, or non-static functions. Instead, position independent code accesses these kinds of data indirectly.

**PLTs and the GOT**

Data Copying Rate is not Constant

Copy *n* bytes of data, and it takes *t* time. Copy *2n* bytes of data, and it takes *2t* time, right? Not necessarily.

In-memory data-copying performance is not so straightforward. This article explains how the *rate* of data copying changes with the amount of data copied.

Booting a Windows Virtual Machine from Debian "Lenny" on AMD64 using Xen HVM

This article describes how I created a Windows XP virtual machine on a physical box which runs Xen 3.2. The dom0 for Xen is a Linux distro - Debian "Lenny". The physical box has an AMD Athlon X2 64-bit dual-core processor with 4GB of RAM. Xen's HVM emulation functionality is used to create the Windows domU.

This article might equally well be used to model how to use Xen HVM to boot any operating system for which you have an installation CD.

Understanding The C++ Code Generated By Mozilla's IPDL Compiler

Mozilla's "Electrolysis" project is re-structuring Firefox into a multi-process architecture. A side effect is that Mozilla developers must learn to program in an environment where inter-process communication (IPC) is necessary. To ease this development burden, Mozilla has devised "IPDL", the Inter-process Protocol Definition Language. Developers are meant to specify their IPC protocol via IPDL, and have the IPDL compiler provide C++ code for their use.

This article investigates the functionality provided by the C++ classes generated by the IPDL compiler. Developers should never have to modify the generated code, but understanding how it works will help to explain what responsibilities developers of IPDL protocols have.

Using Xen With Debian Lenny on 64-bit AMD To Emulate (Paravirtually) 32-bit IA32, A Log, Part 2

This documents my efforts to produce a 32-bit Debian Lenny image for Xen with a 64-bit Debian Lenny dom0.

  • arch: AMD64 Athlon X2
  • os: Xen 3.2 (via Debian Lenny's install)
  • dom0: Debian Lenny 64-bit
  • domU: Debian Lenny 32-bit (desired)

Building Mozilla Firefox on Debian 5.0.2 (in an i386 VM on Xen)

This documents how I built a Debian development environment capable of building the Mozilla source code. I believe that it is minimal — all of the installed Debian packages are necessary, and they are sufficient.

Syndicate content