After my first post on hyperthreading, and all the hits I've been getting I've decided to update it..
My first post was pased on testing with a DL980.. This is an 8 socket server with X7560 @ 2.27GHz processes.
My currently updated post is on a new 2 socket server with the E7- 2870 @ 2.40GHz chipset.
The servers I tested on were
2 Socket
10 Core (dual threaded)
11.2.0.3 Oracle
Linux RHEL 2.6.18-274.17.1.el5
132g of ram.
I tested by using Kevin Clossons SLOB test which can be found here.
I tested using multiple process settings, and you see how these servers scaled up with the processes.
I warmed up with 15 processes. Looking at the LIO count, we are doing 7.2 million. output
My first post was pased on testing with a DL980.. This is an 8 socket server with X7560 @ 2.27GHz processes.
My currently updated post is on a new 2 socket server with the E7- 2870 @ 2.40GHz chipset.
The servers I tested on were
2 Socket
10 Core (dual threaded)
11.2.0.3 Oracle
Linux RHEL 2.6.18-274.17.1.el5
132g of ram.
I tested by using Kevin Clossons SLOB test which can be found here.
I tested using multiple process settings, and you see how these servers scaled up with the processes.
I warmed up with 15 processes. Looking at the LIO count, we are doing 7.2 million. output
Load Profile Per Second Per Transaction Per Exec Per Call
~~~~~~~~~~~~ --------------- --------------- ---------- ----------
DB Time(s): 14.4 24.9 0.00 4.60
DB CPU(s): 14.3 24.7 0.00 4.56
Redo size: 13,974.5 24,137.1
Logical reads: 7,259,470.5 12,538,708.3
Block changes: 32.9 56.8
Physical reads: 69.9 120.8
Physical writes: 15.8 27.2
User calls: 3.1 5.4
Parses: 3.8 6.6
Hard parses: 0.0 0.0
W/A MB processed: 0.4 0.7
Logons: 0.1 0.2
Executes: 28,206.8 48,719.3
Rollbacks: 0.0 0.0
Transactions: 0.6
Then 20 processes. 8.7 million still looking good. output
Load Profile Per Second Per Transaction Per Exec Per Call
~~~~~~~~~~~~ --------------- --------------- ---------- ----------
DB Time(s): 18.9 127.0 0.00 10.83
DB CPU(s): 18.9 126.8 0.00 10.82
Redo size: 15,073.6 101,207.6
Logical reads: 8,714,693.4 58,512,431.8
Block changes: 39.2 263.4
Physical reads: 2.1 13.9
Physical writes: 13.0 87.0
User calls: 1.8 11.7
Parses: 3.8 25.6
Hard parses: 0.0 0.1
W/A MB processed: 0.4 2.5
Logons: 0.1 0.4
Executes: 33,859.7 227,341.5
Rollbacks: 0.0 0.0
Transactions: 0.2
Now lets try 25.. see how we go past the number of cores . 9.4 million.. Hyperthreading is scaling nicely. output
Load Profile Per Second Per Transaction Per Exec Per Call
~~~~~~~~~~~~ --------------- --------------- ---------- ----------
DB Time(s): 23.1 91.7 0.00 9.26
DB CPU(s): 23.0 91.6 0.00 9.24
Redo size: 21,634.2 86,063.7
Logical reads: 9,406,658.2 37,420,998.8
Block changes: 68.2 271.4
Physical reads: 3.7 14.8
Physical writes: 5.7 22.5
User calls: 2.5 9.9
Parses: 3.3 13.3
Hard parses: 0.1 0.3
W/A MB processed: 0.4 1.6
Logons: 0.1 0.5
Executes: 36,544.7 145,380.0
Rollbacks: 0.0 0.0
Transactions: 0.3
Next 35.. Still scaling... output
Load Profile Per Second Per Transaction Per Exec Per Call
~~~~~~~~~~~~ --------------- --------------- ---------- ----------
DB Time(s): 33.5 310.9 0.00 18.74
DB CPU(s): 33.5 310.3 0.00 18.70
Redo size: 9,379.2 86,997.8
Logical reads: 11,039,158.6 102,395,221.3
Block changes: 17.7 164.4
Physical reads: 1.3 12.0
Physical writes: 4.0 36.9
User calls: 1.8 16.6
Parses: 2.0 18.9
Hard parses: 0.1 1.0
W/A MB processed: 0.2 2.2
Logons: 0.1 0.6
Executes: 42,882.8 397,765.4
Rollbacks: 0.0 0.0
Transactions: 0.1
Finally the number of threads. This appears to be the peak. output
Load Profile Per Second Per Transaction Per Exec Per Call
~~~~~~~~~~~~ --------------- --------------- ---------- ----------
DB Time(s): 38.3 387.0 0.00 17.48
DB CPU(s): 37.6 380.4 0.00 17.18
Redo size: 9,207.1 93,060.2
Logical reads: 11,577,951.1 117,023,088.1
Block changes: 16.4 166.1
Physical reads: 1.1 11.5
Physical writes: 4.5 45.1
User calls: 2.2 22.1
Parses: 2.0 19.9
Hard parses: 0.1 0.6
W/A MB processed: 0.2 2.5
Logons: 0.1 0.9
Executes: 44,975.6 454,587.0
Rollbacks: 0.0 0.0
Transactions: 0.1
Now lets go up to 45 ... things start dropping off. output
oad Profile Per Second Per Transaction Per Exec Per Call
~~~~~~~~~~~~ --------------- --------------- ---------- ----------
DB Time(s): 40.7 482.9 0.00 16.78
DB CPU(s): 36.0 427.5 0.00 14.86
Redo size: 8,205.8 97,318.2
Logical reads: 11,100,719.6 131,651,002.6
Block changes: 14.0 165.9
Physical reads: 0.9 10.3
Physical writes: 3.2 38.3
User calls: 2.4 28.8
Parses: 2.3 27.5
Hard parses: 0.1 0.6
W/A MB processed: 0.3 3.6
Logons: 0.1 1.4
Executes: 43,122.5 511,418.6
Rollbacks: 0.0 0.0
Transactions: 0.1
So if you look at the throughput..
20 processes 8,7 Million LIO's
40 Processes 11.6 Million LIO's
Not quite linaear progression, but things don't really top off until I get to the number of threads.. This scaled much better, and it seems that hyperthreading is helpgin push more workload through.