I had done some testing for my application (WIP) and I had executed same SQL script and queries on real physical 64-bit Windows 7 and on virtualized 64-bit CentOS 6.
Both database servers are tuned with real having 8 GB RAM and 4 cores, virtualized having 2 GB RAM and 2 virtual cores.
Virtualized server crushed real physical server in performance in both DDL and DML scripts.
My question is simple. Does PostgreSQL perform better on Linux than on Windows and how much is it faster in your tests?
Thank you for your time.
Given the exact same hardware, I think PG will perform better on Linux.
Your question "how much faster" is really dependent on usage. If you're
cpu bound then I'd bet they perform the same. You are cpu bound after
all, and on the exact same hardware, it should be the same.
If you have lots of clients, with lots of IO, I think linux would
perform better, but hard to say how much. I cant recall anyone posting
benchmarks from "the exact same hardware".
Comparing windows on metal vs linux on vm is like comparing apples to
Missouri. If your test was io bound, and the vmserver was write
caching, that's why your vm won so well... but I'd hate to see a power
failure.
It would be interesting to compare windows on metal vs windows on vm
though. (Which, I have done linux on metal vs linux on vm, but the
hardware specs where different (dual amd64 4 sata software raid10 vs
intel 8-core something with 6-disk scsi hardware raid), but linux on
metal won every time.)
I think in the long run, running the system you are best at, will be a
win. If you don't know linux much, and run into problems, how much
time/money will you spend fixing it. Compared to windows.
If you have to have the fastest, absolute, system. Linux on metal is
the way to go.
(This is all speculation and personal opinion, I have no numbers to back
anything up)
-Andy
--
Sent via pgsql-performance mailing list (pgsql-pe...@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance
Thank you Andy for your answer.
That is exactly what I had expected, but it is better to consult with experts on this matter.
Again, thank you.
Dusan
You didn't mention what tuning you did on the Windows server. If you
set shared_buffers to a large value, more than around 512MB, that's been
reported to slow the server down rather than make it faster on that OS.
The other thing you can easily get wrong in this sort of comparison is
having one server enforce synchronous writes, while the other cheats.
Many virtualized systems will not flush information to disk properly
during writes, which is faster but can lead to database corruption after
a crash. See http://wiki.postgresql.org/wiki/Reliable_Writes for more
information on this general topic. Generally for a VM solution, you
need to check if it properly handles the "fsync" system call.
Comparing performance across two different operating systems fairly is
really hard to get right. It's easy to skew the results because of
something unrelated to the difference in database performance, such as
Kevin's commentary about network speed heavily influencing results.
--
Greg Smith 2ndQuadrant US gr...@2ndQuadrant.com Baltimore, MD
PostgreSQL Training, Services, and 24x7 Support www.2ndQuadrant.us