Kris Kennaway wrote:
Could this cause problem cause a situation where an 8-Core system was 50-75% slower than an otherwise equivalent 2-Core system?If so, then your task is the following:Make SYSV semaphores less dumb about process wakeups. Currently whenever the semaphore state changes, all processes sleeping on the semaphore are woken, even if we only have released enough resources for one waiting process to claim. i.e. there is a thundering herd wakeup situation which destroys performance at high loads. Fixing this will involve replacing the wakeup() calls with appropriate amounts of wakeup_one().
I have a graph of my sysbench/pgsql results here: http://blog.insidesystems.net/files/sysctl-pgsq-amd64-wtf.pngAs the graph shows, the 8-core system is about half the speed of the 2-core system at 2 simultaneous threads, and it decays down to approximately 1/4 the speed of the 2-core system as the # of threads hits 5.
All other (non-pgsql, non-sysv) tests came back approximately as expected, but I'm left wondering if I did something wrong, or if 8 cpus are slower than 2, when it comes to Postgres on currently available FreeBSD.
Kevin Way Inside Systems, Inc.(Full detail of what I did is available at: http://blog.insidesystems.net/articles/2007/04/09/what-did-i-do-wrong )
smime.p7s
Description: S/MIME Cryptographic Signature