database performance: FreeBSD vs Linux vs Solaris: Conclusions
Priorities
As can be seen in the previous report, using the right techniques is much more important than
the operating system.
However, depending on your workload you may find that switching operating system can give you a non negligible performance boost.
FreeBSD
FreeBSD does not get a lot of publicity - at least not as much as its 2 main competitors featured here, but as can be seen in these tests it makes for a very capable Java/Database server.
Linux
With the constant improvements made to the Linux kernel (maximizing disk throughput, fairness of the scheduler, ...) we were expecting Linux to perform better in the tests.
Solaris
In non-threaded tests or with a low number of threads (<500), Solaris performed really well, beating FreeBSD and Linux.
However, the number of unusual errors encountered during the tests is worrying.
(some errors leaked connection which caused a whole series of tests to fail).
Also, the fact that the whole JVM failed to scale past 500 threads when both Linux and FreeBSD are capable
of reaching thousands of threads on the same hardware is a real concern.
Per-test Summary
Non-threaded tests:
- Insert: Solaris wins with MySQL, no real winner with PostgreSQL
- Update: Solaris wins with MySQL and PostgreSQL
- Select: Solaris wins with MySQL (1)
- Math: overall, Solaris and FreeBSD beat Linux with both MySQL and PostgreSQL
Multi-threaded tests:
- Delete: FreeBSD and Linux ex aequo (1) (2)
- Insert: FreeBSD and Linux ex aequo (2)
- Update: FreeBSD and Linux ex aequo (1) (2)
- Select: all very close, Solaris behind with MySQL(1)
- Combined: FreeBSD marginally ahead of Linux(2)
(1): Insufficient data for PostgreSQL - the pages will be updated
(2): Solaris wins for less than 100 threads, but fails with more than 500
Note: there were some errors when running the tests on Solaris, which is why the data for Solaris
is not available for all the tests.