RMI call latency and throughput for a simple call.
These calls were made via the loopback interface.
public double add(double a, double b);
| System | call latency 50 / 90 / 98% | calls throughput 50 / 90 / 98 |
|---|---|---|
| Windows laptop simple call | 65 / 67 / 77 µs | 48K / 29K / 23K |
| Windows workstation simple call | 45 / 61 / 68 µs | 97K / 58K / 48K |
| Linux workstation simple call | 42 / 44 / 49 µs | 51K / 41K / 28K |
| Linux server simple call | 19.4 / 23.9 / 26.4 µs | 113K / 63K / 49K |
The ping latency for the Windows system was about 90 µs and for Linux it was about 14 µs
RMI call latency for mixed calls.
A variety of 10 different calls and return values were sampled in this benchmark.
These calls were made via the loopback interface.
| System | call latency 50 / 90 / 98% |
|---|---|
| Windows laptop mixed call | 69 / 75 / 83 µs |
| Windows workstation mixed call | 54 / 60 / 73 µs |
| Linux workstation mixed call | 65 / 71 / 79 µs |
| Linux server mixed call | 35 / 64 / 76 µs |
POJO serialization time.
Two list of 10K each, one with a PrimitivePojo (of all primitive types) and WrapperPojo (All wrappers and String)
This is the average times per pojo.
| System | Time for Java serialization/deserialization | Time to send over RPC with custom serialization |
|---|---|---|
| Windows laptop simple call | 4.9 - 5.5 µs per pojo | 1.5 - 1.6 µs per pojo |
| Windows workstation simple call | 5.1 - 5.7 µs per pojo | 1.8 - 2.0 µs per pojo |
| Linux workstation call | 6.0 - 8.6 µs per pojo | 1.9 - 2.1 µs per pojo |
| Linux server simple call | 6.5 - 7.9 µs per pojo | 1.8 - 2.0 µs per pojo |
Note: The first case is just serialization / deserialization, the later is serialization / write / read / deserialization.
The systems used.
Windows laptop: Windows XP Home SP 2, with T7200 Core Duo.
Windows workstation: Windows XP Pro SP 2, with 2.5 GHz 4800+ Dual Core AMD 64.
Linux server: RedHat 2.6.18, RHEL 5, 2x Dual Core 2.4 GHz AMD 280 processors.
Linux workstation: Fedora 7, Dual Core 2.0 GHz AMD processor.
On Windows I used the -server command line option and set the Process priority to High in the task manager.
On Linux I used the default options.