You are currently browsing the monthly archive for February 2009.
[Update – 3/19/2009: Read The SSD Anthology: Understanding SSDs and New Drives from OCZ (on AnandTech) if you are thinking of buying an SSD. There’s useful information in a discussion of the article over at Hacker News].
Because disk i/o is one of the primary factors affecting the performance of GemStone/S applications, using SSD drives has been an intriguing proposition ever since they popped onto the scene.
About a week ago, Otto Behrens posted a message on the GemStone Mailing list (emphasis mine):
I’m supporting a GS/S 32 bit system at an investment / insurance company. The database is currently 16GB and runs about 40 concurrent sessions.
I recently bought a 80GB Intel® X25-M Mainstream SATA Solid-State
Drive (SSD) and installed it on a Windows XP desktop (Pentium 4, 1.2GB
RAM). I set up a 512MB SPC and copied (all!) the extent files onto the
SSD, leaving tranlogs on the internal IDE. This machine outperforms
the production environment significantly! OK, the production
environment is a Sun with 2 x 1GB CPUs and 8 GB RAM; the GemStone DB
there is set up with an SPC of 3GB.
Anybody tried this with GS/S? I think it will be significant because
the SSD is perfectly suitable for this kind of database. Because of
all the random reads done on these databases, the biggest bottleneck
have always been the seek time on magnetic disks. The SSD reduces seek
time to practically zero! The net result is that we need a much
smaller SPC and can simply use internal SATA disks. Well, let’s see
first, but I can see much cheaper hardware with much better
performance coming…
And yesterday, Hernan Wilkinson wrote in a message (emphasis mine):
Hi Otto, after your mail we decided to give the SSD a try, and what can I
say… thank you very much for sharing your experience with all of us!
We bought a Super Talent Master Drive OX (http://www.supertalent.com/products/ssd_detail.php?type=MasterDrive%20OX#) that
has 150 MB/Sec (max) of Seq. Read, 100 MB/Sec (max) of Seq. Write and 0.1 ms
of access time. As you can see, it is slower than the Intel X25-M and the
results are just outstanding.
Here are some numbers of one of the migration’s step we have to run in a
couple of weeks in one customer. The customer’s extent is about 3.5 Gb. The
process was run in the same machine with the same GemStone configuration (we
just changed the path of the extent and transaction log files to point to
the SSD drive). The hard drive is a Maxtor stm3250310as ( 300 MB/s of data
transfer rate and 11 ms of average seek time). The machine has an Intel Core
2 Duo of 3.0 GHz and 2 Gb of ram (600 MB of SPC), running Windows XP, SP3:
* Looking for all instances of 8 classes:
* With the hard drive: 28 minutes, 47 seconds
* With the SSD drive: just 39 seconds!!
* Migration total time:
* With the hard drive: 35 hours, 32 minutes, 3 seconds
* With the SSD drive: just 58 minutes, 28 seconds!!
So the difference is really big. We are thinking about telling our customers
to switch to this type of disk.
That’s a 30X performance gain achieved by installing SSD drives!
What’s going on?
If the Shared Page Cache (SPC) is too small relative to your working set, performance will be limited by how fast data pages can be read from disk.
If dirty pages are created too fast (high commit rate and/or high data volume), performance will be limited by how fast data pages can be written to disk.
Even if a system runs at an acceptable rate, its equilibrium can be upset by maintenance activities such as:
- Garbage Collection which involves an increased level of page reads, while all object in the repository are scanned, and an increased level of page writes while the dead objects are disposed and pages are reclaimed.
- Data Migration which involves an increased level of page reads, while allInstances are collected, and an increased level of page writes as each instance is migrated to it’s new shape.
The page read problem is generally solved by increasing the size of the SPC (GS/S 32bit SPC is limited to ~4GB). With an SSD drive, read rates are significantly faster so that you can see significant performance gains without changing the size of the SPC. This means you should be able to allocate your excess RAM to OS processes (like more and/or larger VMs).
The page write problem is generally solved by spreading the extent files across multiple disk spindles and adding additional AIO Page Servers. With an SSD drive, write rates are significantly faster so that you don’t need multiple AIO Page Servers (and multiple disk spindles) to keep up with the generation of dirty pages. This means that you don’t have to add external drives to supply the needed spindles.
I haven’t gotten my hands on an SSD drive yet, but with the kind of results that Otto and Hernan have seen it looks like SSD drives should receive serious consideration when you are looking to squeeze more performance from your GemStone/S application.
—–
[1] Photo by Éole Wind (Creative Commons).
[Update 3/16/2009: see the post GLASS Beta Update: Cooking with GLASS (Preview) for the latest preview information].
With the latest dev release of Pharo (pharo0.1-10243dev09.02.3), the new GemTools Client has stopped working correctly. From what I can see, a number of updates were made to OmniBrowser which causes the buttons to disappear from the OGLauncher….I stopped looking for additional problems at that point:). I’m not going to complain, though, the Pharo image is pretty cool already and it is still pre-Beta.
As of pharo0.1-10213dev09.01.3 (and probably pharo0.1-10236dev09.02.2.zip) the GemTools Client was working correctly. Until further notice don’t use the latest versions of Pharo.
I have been pretty busy fixing bugs recently and anticipate a refresh of the GemTools Client and the GLASS package in a week or so.
—–
[1] Photo by milomingo via Flickr (Creative Commons).
Dr. Dave West is putting on a workshop March 30 to April 3 at the Santa Fe Complex in Santa Fe, New Mexico. Our own James Foster will be leading the workshop, but it should be noted that this is not our workshop, Dr. Dave West is the organizer.
Here are the workshop details:
Building sophisticated multi-media, intensely interactive, Web applications is a significant challenge requiring mastery of multiple technologies. GLASS provides a single environment, and language, for developing desktop-like Web applications.
This workshop will provide a GLASS overview and tutorial followed by a combination of hands-on projects and in-depth coverage of special topics (e.g. the incorporation of Sun’s Lively Kernel technology into GLASS).
James Foster of Gemstone will lead the workshop. You will also have the opportunity to work with prominent members of the Santa Fe Complex on projects.
Dates and Times: Monday, March 30 – Thursday, April 2, 8:30-4:00. Friday, April 3, 8:30-noon. Informal discussions, explorations, and hacking likely to take place each evening.
Where: The Santa Fe Complex – 632 Agua Fria, in Santa Fe (one block from the RailRunner if you are coming up from Albuquerque)
Prerequisites: Some programming background will be helpful. Open to high school students.
Fee: $375 – includes lunch and breaks
Housing: Discounted rates at hotels (all within walking distance of the Complex) will be available.
For More Information:
E-mail Dr. Dave West at profwest at fastmail dot fm or phone him at 505-231-7233.
Or come by the Santa Fe Complex, 632 Agua Fria in Santa Fe.
According to this message, the fee might be waived for ESUG members willing to travel to Santa Fe.
—–
[1] Photo by jared via Flickr (Creative Commons).
James has added two more venues to his Southern California GLASS/Seaside/MagLev Roadshow.
Tuesday evening he’ll be at Loma Linda University and Wednesday evening he’ll be in San Diego. Here’s his full itinerary:
- Monday, February 16, at Caltech for the Los Angeles Smalltalk User’s Group
- Tuesday, February 17, at 11:00 AM in Room 146 of the Price Science Complex at La Sierra University
- Tuesday, February 17, at 7:00 PM in Room 1609 of Nichol Hall at Loma Linda University
- Wednesday evening, February 18, for San Diego’s Ruby Community (details forthcoming)
- Thursday, February 19, at UCLA for the Los Angeles Ruby/Rails Meetup Group
If you’re in the Los Angeles or San Diego area next week you should drop by one of James’ presentations.
[1] Photo by enfad via Flickr (Creative Commons).
SeasideTesting is a package written by David Shaffer for testing Seaside components. David has written a good tutorial on writing tests using SeasideTesting.
I ported SeasideTesting to GLASS last summer. The current version on GemSource is SeasideTesting.g-R1.5-dkh.10 which is based on SeasideTesting-R1.5-mb.5. With a current version of the GLASS package (GLASS.230-dkh.190) a handful of the example tests are failing – there are later versions of the SeasideTesting package on SqueakSource. I will be working on updating to a later version of the package at a later date.
You have two choices when running tests:
- web-based test runner
- standard SUnit TestRunner
Web-based test runner
In order to run the web-based test runner, you’ll need to launch a special Hyper server:
SeasideTestingSite launchSeaside: 9765
When you launch Hyper, your vm will block while it is serving Seaside pages. The special version of Hyper is needed, because of the way the web-based TestRunner launches a Hyper session to run the test while processing the original Seaside request.
Once you’ve launched Hyper, you can use your browser to navigate to http://<hostname>:9765/seaside/testRunner, where you can run individual test cases by clicking on the appropriate link.
For errors or failed tests you can click on the ‘Debug’ link to bring up a debugger.
When you are done testing through the web-based interface, you’ll need to interrupt the Hyper process (Alt-.) to get control back to the client.
SUnit TestRunner
You can also run the tests using the standard TestRunner window, just like any other TestCase. I’ve tested this using the OmniBrowser-based TestRunner available with the GemTools Client Preview and it works like a champ (I haven’t tried this technique with the older Morphic-based TestRunner window, so I can’t be sure that it will work correctly).
When you use TestRunner, you don’t have to start a special version of Hyper and you are able to debug the failures and errors like any other test case (without having to invoke the ‘remote debugger’, so I think that this would be the preferred technique.
A note on Albatross
Albatross is another framework for testing Seaside components, but I have yet to port it to GLASS. Since Albatross uses FFI, we may just wait until 3.0 (which has an FFI interrface) before porting Albatross.
——–
[1] Photo by SideLong via Flickr (Creative Commons).
Sebastion Dietz wrote:
We are using Smalltalk (a rather old implemetation) for a logistics and foreign trade application with a bit over 500,000 lines of code (comments and empty lines excluded ;-) ).
Having worked with Smalltalk for 10 years now, I would not recommend it for larger business applications.
Smalltalk allows me to be agile, productive, my systems are maintainable regardless of all changes of business climate in recent years.
Unfortunately, Smalltalk is an effectively dead langauge to the majority of software shops out there (a real pity, too), relegated to the same dustbin which holds both Lisp and Forth.
Smalltalk is a language that makes true OO programming so cheap that you’re more often than not benefitting from a pure-OO (possibly with patterns) approach to coding for pretty much everything.
In short, it’ll take you, the programmer, substantially longer to implement a properly OO solution to any problem in Java than it would in Smalltalk.
So I’m not suggesting that we are going to see a massive renaissance in Smalltalk use in the near future. Today I still have a hard time recommending most mainstream IT organizations invest heavily in new strategic initiatives with Smalltalk.
If you are BIG fan of dynamics languages (closures, meta programming, and all that cool stuff) then consider giving Smalltalk a look. You might like what you see. Its like Ruby but with bigger muscles. You think Rails is cool? Check out seaside.
In my opinion, Seaside is the coolest thing going in web development
Recently I’ve had the good fortune to be exposed to Blain Buxton, a long time Smalltalker.
Stange talk of ‘messages’ and ‘images’ and crazy talk of changing objects on the fly without restarting anything. In fact, not even having the concept of an application to restart.
After some digging and reading, and after a nice demonstration using Squeak, I am starting to understand things and want to be in this lively Smalltalk world.
I use Ruby, I like Ruby, but Smalltalk is more productive when I’m working in unknown territory.
Smalltalk doesn’t have to be pragmatic, because it’s better than its imitators and the things that make it different are also the things that give it an advantage.
So, if you still haven’t tried Smalltalk, and I mean really tried it, by writing an application in it, give it a go. You’ll never regret it, because everything you learn, and you’ll learn a lot, you’ll be able to bring back with you to whatever language you call home.
Interesting, the corporate world may not be in love with Smalltalk, but for many developers Smalltalk becomes the language of choice (once they get to know it).
The fact is that there are a number of companies with significant and ongoing investments in Smalltalk. There may not be a ton of companies out there leveraging Smalltalk, but they are out there and not all of them are interested in letting the competition in on their secret.
But this post isn’t aimed at IT shops and corporations.
Smalltalk was designed to allow people (not just programmers) to express their creativity in the computing medium.
You don’t program in Smalltalk. You work in Smalltalk. You immerse yourself in Smalltalk.
Everything is an object and everything can be modified from within the development environment, including the tools and the web server. If you need to change the behavior of the web server (i.e., fix a bug), you can – the source code is in the image, easily accessible and the changes can be made without breaking stride.
The image provides built-in persistence for your application objects – no need to configure and manage separate programs to persist your data.
With the built-in inspector you can poke around your object graph. With the built-in debugger you can fix your code and explore the relevant objects. No context switch needed when you hit a problem whether it be a problem in the data base, a problem in your web server, or a problem with your application – the debugger pops up and you just continue with your development. It is a joy to accomplish things in Smalltalk.
For individuals and small groups of programmers (like MicroISVs) for whom productivity is important it can make a lot of sense to choose Smalltalk as the development/deployment platform. For a web application, the entire deployment stack can be built into a single executable program (the image): DB, configuration console and web server, all running within a single program – all written in the same language and all developed with the same tools. Here are several examples of Smalltalk-based deployment stacks in action (each download includes a Mac application, a Linux shell script and a Windows .exe file):
- AIDA6.0-beta1 (Aida; Squeak)
- Pier 1.1.1 (Pier; Pharo)
- Seaside One-Click Experience 2.8.3 (Seaside; Squeak)
Don’t you think it’s time that you gave Smalltalk a whirl?
——
[1] Photo by thebacon via Flickr (Creative Commons).
Check out the updated schedule.
James has added another venue to his Southern California GLASS/Seaside/MagLev Roadshow. He’ll be giving a presentation at 11:00 AM in Room 146 of the Price Science Complex at La Sierra University on Tuesday, February 17. Here’s his full itinerary:
- Monday, February 16, at Caltech for the Los Angeles Smalltalk User’s Group
- Tuesday, February 17, at 11:00 AM in Room 146 of the Price Science Complex at La Sierra University
- Thursday, February 19, at UCLA for the Los Angeles Ruby/Rails Meetup Group
If you’re in the Los Angeles area in February, you are running out of reasons not to attend James’ talk!
[1] Photo by Peace Is War via Flickr (Creative Commons).
Norm Green made the following announcement on the GemStone/S customer forum – the invitation for attending the CAB meeting is extended to users of the free Web Edition:
Hello GemStone Customers,
Back in the 1990s, GemStone hosted an annual meeting of customers here
in Beaverton to talk about “all things GemStone”. This was a chance
to meet other customers, give feedback to us on things you like and
don’t like about the product, and talk directly with the Engineering
team. Since Smalltalk Solutions is not happening this year, we are
thinking of holding Customer Advisory Board meetings in May or June.
These would last for 2 or 3 days (something like Tuesday through
Thursday) and would occur here at GemStone headquarters or at a nearby
venue. We have several ideas regarding the format including tutorials
on GLASS and Seaside. We could do something like host a CampSmalltalk
around the same time as the CAB. The only cost to attend would be
travel and living expenses.
In order to move forward, we’d like to get an idea how many people
would be wiling to attend. If you think you could come, please send
me an email. While we’re not asking for a commitment to attend, we’d
like to know that there’s a pretty decent chance you’d be able to
come. Both 32 bit and 64 bit customers are invited and customers are
free to send more than 1 representative.
Looking forward to hearing from you!!
Best regards,
Norman R. Green
GM – Engineering
GemStone Systems Inc.
If you are interested in attending send send mail here or to Norm directly.
———-
[1] Photo by Thomas Hawk via Flickr (Creative Commons).