Hey guys,
I was playing arround lately with a new computer and used the oportunity for some testing. I want to share my findings.
I was using a Notebook with an Intel i7-4720MQ for some time and switched to an Desktop Computer with an i7-5820K which I overclocked to 4.2 GHz @ all cores. Thats a mild overclock which should be possible with most 5820Ks by just increasing the v by 0.1v
I took my database with approximately 5 million hands in it and did a backup of it to ensure the same basics were given on both systems:
Notebook: i7-4720MQ @ 3.4 GHz @ 4 Cores/ 8 Threads, 16 GB DDR3 RAM @ 1600 MHz, Samsung SSD 850 Pro 512 GB
Desktop: i7-5820K @ 4.2 GHz @ 6 Cores/12 Threads, 16 GB DDR4 RAM @ 2133 MHz, Samsung SSD 850 Pro 256 GB
Windows 7 64 energy setting to max. Performance (important!), PostgreSQL 9.2 with the following Speed Adjustments:
shared_buffers = 2048MB
effective_cache_size = 4096MB
work_mem = 64MB
maintenance_work_mem = 64MB
commit_delay = 10000
checkpoint_segments = 128
checkpoint_completion_target = 0.9
wal_buffers = 16MB
I did a fresh boot between each run, let Windows 7 idle for a minute and did reimport the old backup of DB to ensure a maximum camparability in the results followed by another reboot. As you migh imagine this takes some time, but as DB speed degenerates over size of the DB i think it is important.
I opened HM2, opened the NC tab in it and waited till it appeared bevore i started HH import. NC was set to use Turbo Hand Grabber + saving notes each 10,000 Hands and i took the number immidiately displayed after the saving proces of the last 10k hands block.
The exact values per CPU are:
i7-4720MQ : 524 FR; 668 SH H/s
i7-5820K : 595 FR; 790 SH H/s
This is a comparison of the HM2 import speed, which mostly depends on the Single Core Performance of a CPU as HM2 does not use more. Overclocking one core of the 5820K further to 4.5 GHz ended up in import speed of 821 H/s. I did import HH for FR and SH, which are totaly new for the DB. I did several runs of this and the import speed changes +-20 H/s in each run e.g. by random freezes for half a second. I took the last number after completed import and an average of the collected numbers.
The exact maximum values per CPU are:
i7-4720MQ : 73 @4 Threads ; 84 H/s @ 8 Threads
i7-5820K :109 @4 Threads ; 128 H/s @ 8 Threads ; 138 H/s @ 12 Threads
After the import i let NC process the Hands. I am using arround 2,100 note definitions which is comparabel to the note packages you can buy here. I redid the whole procedure of importing backup and import Hands for each different setting of threads used in NC settings. Took some time...
You can see that with 4 really existing physical cores on both systems NC speed scales well with the frequency of the CPU and the IPC of the cores (The 5820K has a larger cache on the CPU and the platform is faster by using DDR4). NC can however also use some Hyperthreading ti increasy the speed slightly.
The results just changed by max +-3 H/s when i redid a specific run.
The exact maximum values per CPU are:
SATA II SSD OCZ Vertex Plus 120 GB: 752, 135
SATA III SSD Samsung 850 Pro 256 GB: 790, 138
And this is the most interesting finding for me. I uninstalled postgreSQL and installed it on an old SATA II SSD with just 120 GB. These small SSDs are slower than bigger ones and the SATA II interface is also slower than SATA III, so i expected a huge jump in performance.
But the results let me sit there speechless. I redid the test 3 times and even physically unplugged the SATA III Samsung 850 Pro from the system to ensure HM2 just uses the old SSD and that i did not do any mistake.
I mean here are the two SSD compared in a benchmark, i would expect more of a difference:
Unfortunately the old SSD died shortly after my tests and i am not able to do any more comparison or look further into this. If anyone has his hands on 2 different SSDs and can copy my results i would really like to hear about it.
I would really like to hear your opinion on this, as i think it leads to the fact that CPU performance is the only bottleneck when it comes to note processing.
Unfortunately i donīt know how to measure the time untill stats appear on the tables while playing. By opening a Hand in HM2 replayer with me on the last position where stats are loaded, i can just estimate it was about 5-10 % quicker with the faster SSD until all stats were there.
The time for switching between report tabs and filters and opening a specific Hand in the replayer until all stats are on the table was arround 20 % faster on the Desktop System. Again, i donīt know how to measure it exactly.
I did also test the nc speed for optimized vs stock SQL settings, which was 138 H/s vs 131 H/s.
I hope this helps some persons who can not decide which system to buy and how this will result in speed improvements.
For now I can just say it is best to get a system with maximum IPC at a single core for HM2 (Intel way stronger than AMD) and many cores for NC. For the SSD just pick an actual SATA III with at least 250 GB size, as the premium paid for something like a 850 Pro seems to have little effect.