On what server hardware does Saxon perform best? [closed]

I am requesting guidance on what server hardware Saxon performs best. Of course the specific transforms matter, but I’m first looking for general guidance to then direct what options I should evaluate in detail.

I’ve been benchmarking a series of 3 XSL transforms pipelined in Jetty. It’s well optimized, using XDM output of one as XDM input of the other. Serialized XML size between steps and the final HTML output is ~3-4MB. Times benchmarked are Jetty start to end, so do not take into account transmission time of final HTML.

I’ve been able to benchmark on AWS t3, c7i, c7g, and a few others. E.g t3.large (2008ms), c7i.large (1126ms), c7i.xlarge (812ms), c7i.2xlarge (810ms), m2 macbook (549ms). c7i.xlarge performs the best, with no increase for larger instances. But nothing is close to the performance of my M2 Max Macbook.

So I can see that hardware makes a big difference. Saxon likes the modern CPU in c7i vs t3. It also likes more CPUs in xlarge vs large, but not beyond that. Clearly there is something about my M2 Max Macbook that Saxon loves. I suspect it’s the very low memory latency of the system-in-a-package design. I’m not sure if the virtualization on the servers is an important factor.

I’m benchmarking on 9.9 PE. There may be an opportunity to take advantage of larger instances if I went to EE and used saxon:threads, but will leave that for another day.

I’m looking for whatever experience and guidance is out there about what server hardware Saxon likes best. It may be that M2 will always blow away any server out there, but maybe not. What have you all seen?

  • “But nothing is close to the performance of my M2 Max Macbook.”: Isn’t there supposed to happen some scarily fast M3 release (or only release announcement?) the next week to shatter you evaluation?

    – 

  • Speculation: if the high Saxon performance on M2 is driven by the low memory latency of the tight integration, and if M3 is just more cores on a smaller process, PE would probably not speed up much. But EE using saxon:threads could potentially take advantage of more cores. I brought up the M2 case just because it shows how Saxon can perform. But I need that performance on a server, not on a laptop. Hence my question asking what server attributes the community has experienced that drives Saxon performance.

    – 




Leave a Comment