So I work for a firm where Java performance is highly debated (e.g. threading, garbage collection, overuse of abstraction, interprocess latency, write once, debug everywhere, debuggers for real-time apps, etc). The C and C++ applications developed in-house are used for our real-time systems (high speed prop trading systems) based on high volume/low latency mulit-cast messaging. We do not have memory, latency, debugging issues, etc with these applications, honestly they have been solid. The in-house Java applications perform like crap in semi-real time on the same platforms using Sun Java 1.5.x and 1.6.x.
With the C and C++ applications, our developers addressed security, memory management and instrumention in the design from the start. The Java applications are a different story. My question is without saying hey put Solaris 10 and Dtrace on every server, how are other people here monitoring latency, handling garbage collection, instrumenting their code, tuning, etc without using O/S specific tools and code?
All of our applications run on Red Hat Linux 2.6.x kernel, on Solaris 9 and Solaris 10 x86 the Java applications are very problematic. Dtrace is beyond the comprehension of most of the Java developers and it makes absolutely no sense to replace Linux just to use Dtrace and get poor performance in return. The hardware base is a mix of Intel Xeon and AMD Opteron dual core processors, GbE, 16 GB min, 15K RPM HDDs, EMC fiber attached storage, high end network fabric, etc.
Before I start an O/S and H/W war, the question above is related to Java not the O/S, etc :)
With the C and C++ applications, our developers addressed security, memory management and instrumention in the design from the start. The Java applications are a different story. My question is without saying hey put Solaris 10 and Dtrace on every server, how are other people here monitoring latency, handling garbage collection, instrumenting their code, tuning, etc without using O/S specific tools and code?
All of our applications run on Red Hat Linux 2.6.x kernel, on Solaris 9 and Solaris 10 x86 the Java applications are very problematic. Dtrace is beyond the comprehension of most of the Java developers and it makes absolutely no sense to replace Linux just to use Dtrace and get poor performance in return. The hardware base is a mix of Intel Xeon and AMD Opteron dual core processors, GbE, 16 GB min, 15K RPM HDDs, EMC fiber attached storage, high end network fabric, etc.
Before I start an O/S and H/W war, the question above is related to Java not the O/S, etc :)
Comment