|
First up Friday morning - Norm Green, Smalltalk engineering director at Gemstone. The main topic: Gemstone/64. Gemstone is a privately held firm, with a very experienced development team - many have been there 10-20 years. |
Brief background: Gemstone is an Object Oriented Database. Objects are stored in object format - there are no relational rows or columns, no O/R mapping. Gemstone supports ACID transactions. Gemstone is also a Smalltalk dialect - it comes with a complete set of kernel classes. The database contains the data and the behavior, which makes it a full multi-client, multi-language application server:
- Smalltalk: VW and VA
- Java
- C/C++
- Unix shell (topaz)
Why 64 bit? Customers wanted to get past the 4 gb of addressable memory limit:
- 2-3 gb page cache limit
- 1 billion object limit
For a 100 gb database, only 2% of the database can be cached, which can lead to issues - you only get 2-3 gb page cache (depends on the platform). They came up with a 2 phase project:
- Phase 1: 64 bit address space
- Phase 2: 64 bit object identifiers
In phase 1, they improved performance, and addressed some of their garbage collection issues. They can now support very large page (shared) cache: up to 16 TB. That gives you a "database in memory" capability.
In the old design, old objects sometimes persisted, even when they shouldn't have. That's been addressed. Online backups are now safe, and garbage collection has been parallelized and improved greatly.
The biggest thing they did in phase 1 was a major change to the VM design (which is how the stuff above was accomplished). Norm has benchmarks for the improvements in performance. The entire rewrite took 15 months. The new VM is in use by customers in production.
In phase 2, they increased the possible size of databases - up to 32 TB in size. They further improved VM performance - 30-50 percent VM speed performance. By moving SmallIntegers to 2^60 from 2^29, they were able to add additional bytecodes. Doing more in a single bytecode improves performance. Additional extensions (new class: SmallDouble) are compatible with the 64 bit work being done on VisualWorks.
How do you upgrade? You need to be on Gemstone 6.1.5 or later. When they deployed to a major shipping client, performance improvements (DB side) of 30-50 percent were seen in the field, although there was an increase in the network load (larger bytecodes). The VW client runs slower (30-50 percent) because 64 bit ids become LargePositiveInteger objects. They are working on that, but it should also improve with 64 bit VW client (on their roadmap).
They currently support Solaris and HP - adding AIX and Linux (64) shortly. Their roadmap has a number of items for future performance improvements on it.
Technorati Tags:
smalltalk, gemstone, esug