Thursday, August 11, 2005

SOA Blueprints Online

My pal Miko Matsumura has been working very hard forming a TC within OASIS to further my work on SOA Blueprints.

Launched in August (see news story) the new TC will:
...continue work begun within the SOA Blueprints Initiative, originally founded by The Middleware Company and BEA Systems. The group is chartered to develop, circulate, maintain, and update a set of example business profiles ("adoption blueprints") which illustrate the practical deployment of services using SOA methods.
Many useful links to SOA Blueprints are provided at XML Cover Pages, and the main SOA Blueprints site is at SOA Center.

Technorati Tags: , , , ,

Monday, August 08, 2005

So, I guess I'm Anglo-British?


In what must be one of the dumbest ideas I've seen in a while, the government seems to be considering inflicting its population with similar to the often misued xxx-American ones.

The story "British Minorities Slam Proposed Labels" on Yahoo! today really made me rant like I haven't ranted in a while.

The idea is to apply xxx-British labels to people based on their ancestry. How far this should go back, it doesn't say, but to me going back more than, say, one generation is often too far.

One of the interviews summed it up:
Inayat Bunglawala was born in northwest England, speaks English as his native language and only once visited his ancestral homeland, India.

That makes him bridle at a proposal being floated in the government to give members of minorities hyphenated identities — he would be Indian-British — to strengthen their bond to Britain.

The idea "simply makes no sense," the 36-year-old said. "I am 100 percent British."
And that is what is so wrong with the idea and the whole principle of applying labels. From a government point of view it helps to stereotype minorities by applying labels to them. In the US, the Hispanics have it the worst - they're not even considered American. I bet they wish it was at least Spanish-American, but no - they get their own special label. I'm wondering which Brit population will get that treatment? Probably the Brummies (I'm one so I'm allowed to say that).

There is also the question of exactly how "ethnicity" is calculated. I haven't seen an equation for this, but there are many xxx-Americans that choose that label because its convenient. Take Halle Berry for instance. Black father, caucasian mother. Chooses to be African-American. Why? Because she can be more successful that way. If she marries a white guy, are her kids still labeled the same way? And so on.

My daughter is part British (actually English-Scottish-Welsh), part Indian and part Portugese? How should she be labeled? There is no (as far as I'm aware) British-American. Asian-American doesn't make sense. And would Portugese be Hispanic? I've heard say that its based on the fathers ethnicity (how truly PC), which really doesn't make sense genetically. So, I guess she's stuck with mixed. Here, that would be Mixed-American. And Mixed-British in the UK.

I'm hoping that the UK doesn't import this brain-dead idea. If they do, some British-Indian guy there will have to think up the next American Idol just to exact revenge.

Java on Solaris and Windows II

I really need to get to the bottom of the Benchmark in my previous post, so I have been doing a little more experimentation. As Anthony Vito pointed out, JDK1.5 optimizes the empty loops (and the simple calcs) out, so to test basic operations I need a little more work going one. I also checked the performance with the "-server" settings in JDK 1.4.2 and found almost the same optimization as JDK 1.5 (is -server the default now? can't find this). Reading the HotSpot VM FAQ verifies I should be using -server (doh! should have remembered this) for performance.

So my new test incorporates a more complex basic operation (find the 20000th prime number), a more complex FP operation (calculate PI to 7 decimal places), a large array test and CRC calculation. Although these are not exactly the operations my real application will be doing, they are some of the areas I need to test performance.

The tests are now:
  1. Finding the 20000th Prime Number (I haven't tried to be clever here, its doesn't use any of the advanced math algorithms)
  2. Calculating pi to 7 places (not too clever here either, but it works)
  3. Writing a 50MB file
  4. Reading the 50MB file using FIS.read
  5. Reading the 50MB file using ByteBuffer
  6. Creating 50 million item random byte array
  7. Perform 64 bit CRC on the array ten times
Note, the addition of the 50M array means you need to use (at least) -Xmx128m -Xms128m in the command line. I ran this on the same Windows Laptop and Solaris Server as the previous tests in both "-client" and "-server" mode.

Windows - Server Windows - Client Solaris - Server Solaris - Client
20000th Prime 4201 12053 8722 24688
PI 7 Dec Places 2931 4901 2936 4217
Write 50MB File 6561 5882 1137 1899
FIS.Read 50MB File 1661 1852 6535 7026
Buffer.Read 50MB 480 490 1338 1425
50M Byte Array 4621 7602 12970 23306
10x50M 64b CRC 5111 8872 6969 24244

In "-server" mode the floating point test is almost identical, but basic ops (prime test) still differs by a factor of two. The memory (large array) operation is also slower on Solaris.

I'm still looking for feedback on this. Most important to me is how to speed up the basic operations (CPU intensive stuff) and improve file reading on Solaris. What I really need to test next is a C program that does the same. I want to determine if the problem is with the operating system, or the Java layer. Of course it could be with the chipset, as Anthony pointed out, but other than buy a Solaris on Intel system, I'm not sure how I can verify that (unless someone out there has one and doesn't mind running the test). I really want to use Java for this, but if C proves to perform many times better, I may be forced to reconsider.

You can download the new BenchMark java file from here.

Technorati Tags: , , , , ,

Friday, August 05, 2005

Will Sun come back with an answer?

Thanks to my truster web stat provider StatCounter, I noticed that Sun Microsystems seem to have taken an interest in my previous entry:

Hopefully, they'll come back to me with an answer pretty soon. Or maybe Performance Systems will beat them to it...

Technorati Tags: , , , , ,

Thursday, August 04, 2005

Java slower on Solaris than Windows?

CLICK HERE FOR LATEST ARTICLE

As part of my job, I have been writing some Java code to do some pretty complex data moving and processing, and was getting great performance results on my laptop. The next step was to test the performance on a "Production" system - usually thought of as Unix/Linux. The first test was on Solaris. To my disappointment, the numbers weren't that great.

So I created a little benchmark class (others must have also done this before, but nothing was handy) to rule out any of the processing and test the performance of basic functions. This class does 5 things:

1) A simple for loop with a billion iterations
2) A loop doing simple FP processing (d = 34.0, for(..) d= (d* 23.7)/56.9
3) Writing a 50MB filling it with ASCII '0123456789' repeated
4) Reading that file using fis.read()
5) Reading the file using a 1MB memory map block read

The results I got kind of shocked me, so I was wondering if anyone could shed any light on them. Both of these results are using exactly the same code, JSDK1.4.2, and the same VM params (Client [HotSpot] mode).


Windows XP on my Laptop: Dell Latitude 600, 1.6GHz, 1GB Ram
Starting Benchmark
Counting to 1,000,000,000...took 5060ms
Doing 500,000,000 FP ops...took 6320ms
Writing a 50MB file...took 7043ms
Reading the 50MB file using FIS.read...took 1893ms
Reading the 50MB file using ByteBuffer...took 531ms
Sun-Fire-V440 Solaris 5.10, 2x1GHz, 4GB Ram
Starting Benchmark
Counting to 1,000,000,000...took 16753ms
Doing 500,000,000 FP ops...took 14140ms
Writing a 50MB file...took 2031ms
Reading the 50MB file using FIS.read...took 7058ms
Reading the 50MB file using ByteBuffer...took 1430ms
So the basic iterations were 3 1/2 times slower, writing a file 3 1/2 times faster, but reading 3 1/2 times slower on Solaris than Windows.

If anyone could repeat this test (its just a simple Java file - you can download it here) and past the results as comments here, I'd really appreciate it. I would like to know if this is expected behavior for Solaris, or if our machine needs its kernel tuned. I have also tried it on our AIX, Linux and HP-UX machines, using Xeon and Itanium processors and gotten equally disappointing results.

Technorati Tags: , , , , ,