dchub

In December of 2003. I've implemented native threading support (using NPTL) to our in-house Modula-3 environment variant based on PM3.

In first days of 2004. I've implemented first version of dchub. Primary objective was to make thread intensive application for stress testing of our threading implementation. Secondary was to solve Balcan.NET's problem with DC hub software.

First functional version's implementation was four-hour job, and results were fantastic. Although up to March 2008. design was three threads per client, it performed flawlessly for more than four years worth of uptime. As objective was stress testing, priority to change that design came only lately (early 2008.) when I've started working on some new ideas on handling big number of clients with single server.

Currently dchub serves 120-190 clients with CPU usage under 1.5% and memory usage cca 70MB. Somewhat high memory usage is due to current RTCollector.m3 design where each thread gets its own pages for allocation and also a bit conservative major collections. As this is still small usage in this age, I think speed of allocations and flawless execution far overweight this "inconvenience". Thread stacks are set with ulimit to 64kB per thread.

Source will be available.