On Thu, Oct 14, 2010 at 02:16:42PM +0100, Bart Swedrowski wrote: > Hi Karanbir, > > On 14 October 2010 19:59, Karanbir Singh <mail-lists at karan.org> wrote: > > > > On 10/14/2010 07:48 AM, Tom Bishop wrote: > > > I think xen is still on top in terms of performance and features....now > > > > that is indeed what it 'feels' like, but I'm quite keen on putting some > > numbers on that. > > I have done some testing some time ago on one of the EQ machines that > I got from hetzner.de. Full spec of the machine was as following: > > * Intel® Core??? i7-920 > * 8 GB DDR3 RAM > * 2 x 750 GB SATA-II HDD > > It's nothing big but even though results are quite interesting. All > tests were performed on CentOS 5.5 x86_64 with PostgreSQL 8.4 (from > CentOS repos). > Note that 64bit Xen guests should be HVM, not PV, for best performance. Xen HVM guests obviously still need to have PV-on-HVM drivers installed. 32bit Xen guests can be PV. -- Pasi > I have run some PostgreSQL PGBench tests as well as Bonnie++ tests. > The PostgreSQL tests was divided into two tests having three goes (to > get an idea of average). The commands I used for testing were: > > > dropdb pgbench && sync && sleep 3 && createdb pgbench && sync && sleep 3 > > pgbench -i -s 100 -U postgres -d pgbench && sync && sleep 3 > > pgbench -c 10 -t 5000 -s 100 -U postgres -d pgbench 2>/dev/null && sync \ > > && sleep 3 && pgbench -c 10 -t 5000 -s 100 -U postgres -d pgbench 2>/dev/null \ > > && sync && sleep 3 && pgbench -c 10 -t 5000 -s 100 -U postgres -d pgbench 2>/dev/null \ > > && sync && sleep 3 > > Now results. First CentOS5/x86_64 without any virtualisation, without > any PostgreSQL optimisation: > > -bash-3.2$ pgbench -c 10 -t 5000 -s 100 -U postgres -d pgbench 2>/dev/null > pghost: pgport: nclients: 10 nxacts: 5000 dbName: pgbench > transaction type: TPC-B (sort of) > scaling factor: 100 > number of clients: 10 > number of transactions per client: 5000 > number of transactions actually processed: 50000/50000 > tps = 141.191292 (including connections establishing) > tps = 141.196776 (excluding connections establishing) > -bash-3.2$ pgbench -c 10 -t 5000 -s 100 -U postgres -d pgbench 2>/dev/null > pghost: pgport: nclients: 10 nxacts: 5000 dbName: pgbench > transaction type: TPC-B (sort of) > scaling factor: 100 > number of clients: 10 > number of transactions per client: 5000 > number of transactions actually processed: 50000/50000 > tps = 156.479561 (including connections establishing) > tps = 156.486222 (excluding connections establishing) > -bash-3.2$ pgbench -c 10 -t 5000 -s 100 -U postgres -d pgbench 2>/dev/null > pghost: pgport: nclients: 10 nxacts: 5000 dbName: pgbench > transaction type: TPC-B (sort of) > scaling factor: 100 > number of clients: 10 > number of transactions per client: 5000 > number of transactions actually processed: 50000/50000 > tps = 164.880109 (including connections establishing) > tps = 164.888009 (excluding connections establishing) > > Now after optimisation (shared_buffers, effective_cache_size etc.): > > pghost: pgport: nclients: 10 nxacts: 5000 dbName: pgbench > transaction type: TPC-B (sort of) > scaling factor: 100 > number of clients: 10 > number of transactions per client: 5000 > number of transactions actually processed: 50000/50000 > tps = 403.430951 (including connections establishing) > tps = 403.474562 (excluding connections establishing) > pghost: pgport: nclients: 10 nxacts: 5000 dbName: pgbench > transaction type: TPC-B (sort of) > scaling factor: 100 > number of clients: 10 > number of transactions per client: 5000 > number of transactions actually processed: 50000/50000 > tps = 336.060764 (including connections establishing) > tps = 336.093214 (excluding connections establishing) > pghost: pgport: nclients: 10 nxacts: 5000 dbName: pgbench > transaction type: TPC-B (sort of) > scaling factor: 100 > number of clients: 10 > number of transactions per client: 5000 > number of transactions actually processed: 50000/50000 > tps = 446.607705 (including connections establishing) > tps = 446.664466 (excluding connections establishing) > > Now KVM based VM with 7GB RAM and 8 CPUs. Using virtio and LVM > partitions as backend. > > PostgreSQL results *w/o* optimisation. > > -bash-3.2$ pgbench -c 10 -t 5000 -s 100 -U postgres -d pgbench > 2>/dev/null && sync && sleep 3 && pgbench -c 10 -t 5000 -s 100 -U > postgres -d pgbench 2>/dev/null && sync && sleep 3 && pgbench -c 10 -t > 5000 -s 100 -U postgres -d pgbench 2>/dev/null && sync && sleep 3 > pghost: pgport: nclients: 10 nxacts: 5000 dbName: pgbench > transaction type: TPC-B (sort of) > scaling factor: 100 > number of clients: 10 > number of transactions per client: 5000 > number of transactions actually processed: 50000/50000 > tps = 124.578488 (including connections establishing) > tps = 124.585776 (excluding connections establishing) > pghost: pgport: nclients: 10 nxacts: 5000 dbName: pgbench > transaction type: TPC-B (sort of) > scaling factor: 100 > number of clients: 10 > number of transactions per client: 5000 > number of transactions actually processed: 50000/50000 > tps = 140.451736 (including connections establishing) > tps = 140.463105 (excluding connections establishing) > pghost: pgport: nclients: 10 nxacts: 5000 dbName: pgbench > transaction type: TPC-B (sort of) > scaling factor: 100 > number of clients: 10 > number of transactions per client: 5000 > number of transactions actually processed: 50000/50000 > tps = 148.091563 (including connections establishing) > tps = 148.102254 (excluding connections establishing) > > PostgreSQL tests *with* optimisation: > > -bash-3.2$ pgbench -c 10 -t 5000 -s 100 -U postgres -d pgbench > 2>/dev/null && sync && sleep 3 && pgbench -c 10 -t 5000 -s 100 -U > postgres -d pgbench 2>/dev/null && sync && sleep 3 && pgbench -c 10 -t > 5000 -s 100 -U postgres -d pgbench 2>/dev/null && sync && sleep 3 > pghost: pgport: nclients: 10 nxacts: 5000 dbName: pgbench > transaction type: TPC-B (sort of) > scaling factor: 100 > number of clients: 10 > number of transactions per client: 5000 > number of transactions actually processed: 50000/50000 > tps = 230.695831 (including connections establishing) > tps = 230.734357 (excluding connections establishing) > pghost: pgport: nclients: 10 nxacts: 5000 dbName: pgbench > transaction type: TPC-B (sort of) > scaling factor: 100 > number of clients: 10 > number of transactions per client: 5000 > number of transactions actually processed: 50000/50000 > tps = 207.535243 (including connections establishing) > tps = 207.572818 (excluding connections establishing) > pghost: pgport: nclients: 10 nxacts: 5000 dbName: pgbench > transaction type: TPC-B (sort of) > scaling factor: 100 > number of clients: 10 > number of transactions per client: 5000 > number of transactions actually processed: 50000/50000 > tps = 206.664120 (including connections establishing) > tps = 206.695176 (excluding connections establishing) > > And, finally, Xen based VM with 7GB RAM and 8 CPUs. Using LVM > partitions as backend. PostgreSQL tests results *w/o* optimisation: > > -bash-3.2$ pgbench -c 10 -t 5000 -s 100 -U postgres -d pgbench > 2>/dev/null && sync && sleep 3 && pgbench -c 10 -t 5000 -s 100 -U > postgres -d pgbench 2>/dev/null && sync && sleep 3 && pgbench -c 10 -t > 5000 -s 100 -U postgres -d pgbench 2>/dev/null && sync && sleep 3 > pghost: pgport: nclients: 10 nxacts: 5000 dbName: pgbench > transaction type: TPC-B (sort of) > scaling factor: 100 > number of clients: 10 > number of transactions per client: 5000 > number of transactions actually processed: 50000/50000 > tps = 126.554719 (including connections establishing) > tps = 126.562829 (excluding connections establishing) > pghost: pgport: nclients: 10 nxacts: 5000 dbName: pgbench > transaction type: TPC-B (sort of) > scaling factor: 100 > number of clients: 10 > number of transactions per client: 5000 > number of transactions actually processed: 50000/50000 > tps = 135.472197 (including connections establishing) > tps = 135.481690 (excluding connections establishing) > pghost: pgport: nclients: 10 nxacts: 5000 dbName: pgbench > > ... and *with* optimisation: > > -bash-3.2$ pgbench -c 10 -t 5000 -s 100 -U postgres -d pgbench > 2>/dev/null && sync && sleep 3 && pgbench -c 10 -t 5000 -s 100 -U > postgres -d pgbench 2>/dev/null && sync && sleep 3 && pgbench -c 10 -t > 5000 -s 100 -U postgres -d pgbench 2>/dev/null && sync && sleep 3 > pghost: pgport: nclients: 10 nxacts: 5000 dbName: pgbench > transaction type: TPC-B (sort of) > scaling factor: 100 > number of clients: 10 > number of transactions per client: 5000 > number of transactions actually processed: 50000/50000 > tps = 312.133362 (including connections establishing) > tps = 312.186309 (excluding connections establishing) > pghost: pgport: nclients: 10 nxacts: 5000 dbName: pgbench > transaction type: TPC-B (sort of) > scaling factor: 100 > number of clients: 10 > number of transactions per client: 5000 > number of transactions actually processed: 50000/50000 > tps = 203.123398 (including connections establishing) > tps = 203.146153 (excluding connections establishing) > pghost: pgport: nclients: 10 nxacts: 5000 dbName: pgbench > transaction type: TPC-B (sort of) > scaling factor: 100 > number of clients: 10 > number of transactions per client: 5000 > number of transactions actually processed: 50000/50000 > tps = 279.864975 (including connections establishing) > tps = 279.910306 (excluding connections establishing) > > From my tests it came out that Xen still outperforms KVM especially in > disk IO performance. As so and fact my applications are dependant on > databases (and which are not these days?) I have kept on using Xen. > > Other thing that I like about Xen is you can easily mount LVM > partitions to the host OS and play with them should you need to. In > KVM you've got this double LVM layer which makes it difficult to do > this. I know there are ways around it but it just seems a bit more > easier and straight forward in Xen at the moment. > > Regards. > _______________________________________________ > CentOS-virt mailing list > CentOS-virt at centos.org > http://lists.centos.org/mailman/listinfo/centos-virt