ConferenceRoom 2.1 is the biggest upgrade to ConferenceRoom since 1.7. The entire internal architecture has been majorly overhauled to improve performance, reduce resource consumption and, of course, add a few features.
The UNIX I/O layer has been almost completely rewritten. The new I/O layer breaks connections into logical groups to boost concurrency. This also allows the I/O layer to have low-latency sockets (for things like IPC and DNS) as well as high-throughput sockets (for things like IRC and HTTP) without having to compromise.
The new UNIX I/O layer also features speculative write code to reduce latency and boost performance when an idle connection needs to be spun up for transmission. This makes a huge difference when a message to a channel causes a hundred formerly-idle connections to be spun up at once. I/O concurrency in this case is much better now, even on uniprocessor machines.
Data detection latency has been greatly reduced on UNIX as well. This makes a major difference for web server throughput.
Another new feature of the UNIX I/O layer is called smart buffering. This permits buffers to be dynamically assigned and re-assigned to connections as needed rather than permanently associating I/O buffers with a connection. This provides several benefits. First, memory consumption is reduced because there are fewer wasted buffers. Second, system CPU usage is reduced because the buffers can be larger. Third, cache efficiency is improved because the same buffers are rapidly re-used rather than pushing new buffers into and out of the cache.
The memory management code has been significantly upgraded. Previouly, ConferenceRoom largely relied upon the system library to provide memory management services. Some platforms provided memory managers that worked well with ConferenceRoom, but some did not.
The new code performs well on all platforms. It includes a lookaside table to speed up memory allocations when the allocator is busy (either because another thread is using it or because it's performing maintenance). In addition, the memory manager provides information to and receives information from the higher-level server code, allowing the memory manager and the server code to tune to each other.
For the Solaris platform, several new primitives have been hand-coded in assembly language. This allowed us to work around a small number of extremely expensive operations that testing revealed were consuming a disproportionate amount of CPU time.
For all x86 platforms, low-level code is now hyper-threading aware. Performance on processors with hyper-threading is now much smoother. In addition, several critical primitives (atomic operations, bit manipulations) have been re-written in hand-coded assembly language for improved performance.
Another new cluster of core code features are aimed at resisting denial-of-service attacks. Among other techniques, the low-level code now has the ability to monitor the connection rate to a port and throttle if the rate of new connections exceeds a configurable threshold. This protects the server's ability to serve existing clients and its ability to accept new client connections on other ports.
The web server has received some changes to improve its support for caching. This should result in less bandwidth consumption and significantly reduced page load times for pages with many embedded images. Support for persistent connections and conditional requests has also been improved.
2.1 is also the first release of ConferenceRoom to include the streaming media server. The stream server supports audio, video, and other media types and seamlessly integrates with ConferenceRoom (through custom business logic if desired). Watch for more information about the stream server in the coming months or contact WebMaster technical support to arrange a demonstration.
We have also added many new features to the chat server and services. For example, services now has the ability to require email confirmation of nickname registrations. The chat server has numerous new security settings including limitations on who can join unregistered or unmanaged channels.
Overall, it's a massive overhaul including more than 70,000 lines of
completely new code.
Maintained by David Schwartz, questions may be sent to WebMaster Support
Contents Copyright (C) 2003, WebMaster