Transactifying Apache

Apache is a large-scale industrial multi-process and multi-threaded application, which uses lock-based synchronization. We have experimented with modifying Apache to employ transactional memory instead of locks, a process we refer to as transactification; we are not aware of any previous efforts to transactify legacy software of such a large scale. We have transactified apache's memory cache module mod_mem_cache using Intel's experimental STM C/C++ compiler.

Downloads

Directory Structure

After downloading the project's tarball, the project main directory contains the following subdirectories:

Server Side Installation

The following applies to both versions of apache.

Client Side Installation

URL Lists

This section elaborates the generation of URL lists for the client machines.

Execution

Test Configuration

The test/runall_siege.py script is intended to run from the server machine, and connect to the client by ssh. To avoid typing the password for every connection it is recommended to set up a public-key login to the client machine.

Before running, the following fields must be set in the script:

Execution

Set the siege output file in ~/.siegerc on the client machine, by editing the logfile entry.

Run the test/runall_siege.py script, the results will be saved on the client machine in the chosen output file.