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.
Nice measurements. You've just proven once again that with SMT 70 is the new 100 :-) (queuing theory). Most of Intel's literature on the matter also says to expect that 30%... so...cool1
ReplyDeleteWould you be able to drop to the BIOS and disable SMT and try 20 SLOB threads? That would be a nice measurement.
I don't have access the connsole and the servers are due back monday.
Delete