Software and hardware annotations 2007 October

This document contains only my personal opinions and calls of judgement, and where any comment is made as to the quality of anybody's work, the comment is an opinion, in my judgement.

[file this blog page at: digg del.icio.us Technorati]

071010 Wed 50 times faster or infinitely scalable?
The CTO of Amazon has been intrigued by Michael Stonebraker's contention that existing DBMS products are too generic and therefore suffer from bloat and inefficiences, and that focus on specific application areas might result in DBMSes with 50 times the performance, for example for transactional use (and perhaps he is thinking about dedicates IBM mainframe transactional systems).
The objection to that is that a goal of 50 times better performance is not ambitious or useful, and that a better goal would be unbounded scalability, and that I think betrays a somewhat technical rather than business oriented approach. Because usually, and especially for databases what matters is is cost reduction, or scalability by a small finite number, rather than infinite scalability, as most businesses are not unboundedly scalable. Most businesses are established, and they cannot even dream of growing by 50 times, but they might want to cut their DBMS costs by that amount, or grow by a few times over a reasonable lifetime. Not all companies are Google-like startups, and even for those seamless scalability does not matter that much, as rarely the same technology or business model is usable over more than a 50 times growth, as mistakes and midway corrections do happen.
Even more tragically, a somewhat small (if 50 times is so) fixed factor of improvement is sort of targetable and designable and even testable; conversely unbounded scalability can come with an uncomfortably large fixed overheard and a slow rate of improvement.
To make an extreme example, a DBMS that can scale to support one trillion customer but takes 100,000 servers to support 10,000 customers is entirely pointless as there is no gain in planning for a trillion customers, and the cost for the initial part of the curve is just not practical. Conversely suppose a company initially targets 100,000 customers that can be supported with 50 servers, and then hopes to grow to 500,000 in say 5 years, and is offered to switch to a DBMS that can support that on 5 servers will be very happy, even if that means that were it to expand to one trillion customers it would need 2 billion servers, and with the fully scalable solution it would need only 2 million.
These may seem silly numbers, but the point here is that businesses make money by becoming somewhat better than what they have been and the competition, not by being unboundedly scalable and while fixed-scale improvements are boring, they tend to be where the money is.
071006 Sat Selling out: upgrading to 2GB RAM and dual monitors
So I have sold out again and for someone who about bad programming resulting in excessive memory usage, I have now upgraded my 2GHz socket 754 Athlon 64 from 1GB to 2GB. The reason has been my having now two 1280x1024 monitors and having the window manager keep 6 virtual screens. This has resulted in my keeping a much larger number of applications open and switching between them, as a kind of active bookmarks. Actually I should have said application instances as most of the windows are actually from a few applications, typically XEmacs, Konqueror, Konsole, sometimes Akregator, sometimes a large Java based network monitoring application. KDE applications do share quite a bit among instances, fortunately, but also are not always coded for lower RAM or CPU usage even if admittely I have a usage pattern with high peaks (for example when browsing the web or RSS feeds I open dozens of pages which I then survey quickly for the more relevant ones. Still however it is hard to imagine why having a few dozen 900x800 windows open should cost hundreds of MiBs. But such is modern technology: the 2nd GiB cost me about £40, the price to be paid for more state.
Given that all those application instances do not need to be active at the same time I might have chosen to spend that money on something else, but I have suffered enough because of the Linux swap policies (which I think to be quite abysmal) that the upgrade to 2GiB allows me to keep everything memory resident and avoid swapping except on very rare cases, where I can't avoid taking the slow page in rates on offer. But since some Linux kernel and GUI developers have at least 4GiB of RAM in their PC that will soon become the minimum needed. But I hope that for now 2GiB will give me another year or two before engaging the Linux swap subsystem again.