Collaboration in the Enterprise from the perspective of Anthony Holmes, an IBM Premium Support Manager

Design Compression: Does it hurt performance or help it?

Anthony Holmes  10 July 2008 10:25:54 AM
Somebody recently asked how much turning on the Domino 8 Design Compression feature affected CPU performance. I suspect that in most cases it improves performance rather than hurting it.


Back when Network Compression was introduced (in the days of Domino 5) there was a lot of concern that network compression might add to server load.

At that time, some measurements were performed, and it was found that the additional CPU load was fairly minor: less than 10%. Since then, we've been through four or five generations of CPU improvements. The ability of CPUs to perform calculations like those used with compression has improved many times over: which means that compression uses a lower percentage of a CPU's potential with each generation.

As a result, in 2008 it's rarely possible, and I suspect not worthwhile, to measure the difference that network compression makes to a CPU's usage.

Database Design compression probably makes an even smaller impact on CPU usage since reading the design of a database is a minority of a server's activity (which largely revolves around documents).

However: if you did, you might be surprised that the impact  on overall performance was low and that performance might even improve. Here's why:

There are four main components to a server's scalability:

•        The power of the CPU
•        The amount of RAM
•        The speed of the disk system
•        The speed of the network cards and network (not relevant for this discussion)

Whenever the server needs to use a design element for the first time, it needs to read it off a disk. That means that (say) 1,000 bytes of information need to be read off the disk and placed into memory. The server has to wait whilst this happens.

When the server reads a compressed design element, it reads the compressed information (say 500 bytes) of information off the disk and decompresses this information.

On the one hand the CPU has to do more work (decompressing). But it has only taken half as long for the information to be physically read into RAM. It may be that the time taken to read and decompress the data takes less time in total than reading the larger design element took before design compression applied. If there is less of a wait for disk transactions to be completed, then less information needs to be kept in memory, so memory usage may also decrease.

All environments will be different, but these days with reasonably well specified Windows servers I tend to find that CPU is not the part of a server that is overloaded: It's usually RAM that runs short or the disk system that doesn't keep up with the workload.
Component Normal Status Implications
CPU I often find that CPU usage is relatively low. Although CPU usage peaks from time to time (especially with some Admin tasks or mass mailouts), usually CPU usage is 80%, 60%, 40%, even as low as 20%. Depending on your OS, your CPU usage can safely peak above 90%. If your server were running with a very old CPU with extreme levels of usage and the server's memory and disk usage was OK, then it's theoretically possible that database design compression might cause problems and that it should only be applied with care: perhaps monitor it to see how it works with your mix of server/disk.

In most cases, the additional CPU usage will be very low and you'll be benefiting from faster disk throughput and leading to less memory usage.
RAM Memory usage tends to be high. When we move to 64 Bit releases of Domino running under 64 Bit OSes, the memory bottleneck will allow us to scale servers further.
Disk System Speed Disk usage is often not monitored by customers. Disk queues are frequently higher than we would like. When disk system performance is an issue, it's likely that Database Design Compression would improve server performance slightly.
But you should look at the root cause: disk performance.
If disks are slow, more data is queued in RAM, and this can eventually reduce server reliability.
Network System Speed The Network Interface Card is rarely an issue these days. The amount of available bandwidth (especially to remote sites) sometimes affects performance.



 
Of course, if somebody has run a scientific test with standard workloads to measure the impact of Design Compression, I'd be interested to hear the figures. However, the actual impact will change depending upon the actual workload, CPU, Memory and Disk configuration of each server, since these factors all interact.

Red Wattlebird (c) Anthony Holmes

I put photographs into my blog postings to provide a break from the text. This is a Red Wattlebird that I photographed whilst camping at Mount Buffalo in Victoria in Easter 2007.