Documente Academic
Documente Profesional
Documente Cultură
If your system will be performing many small transactions with numerous inserts, updates, and deletes, then a
test that measures online transaction performance (OLTP) would be the proper benchmark. In this series of tests
we will use the TPC-C benchmark. This paper will demonstrate using TPC-C to contrast and compare HDD and
SSD based IO subsystems.
TPC-C Structure
For our tests the 1000 warehouse size was selected, corresponding to 42.63 gigabytes of data. The 42.63
gigabytes corresponds to over 150 gigabytes of actual database size once the needed undo, redo, and temporary
tablespaces and indexes are added to the 42.63 gigabytes of data. Table 1 shows the beginning row counts for
the TPC-C schema used.
By using the dual configuration where one set of tables and indexes owned by schema/user TPCC is placed in
the DATA and INDEXES tablespaces and an identical set using a different schema/owner, HDTPCC, is placed on
the HDDATA and HDINDEXES tablespaces, we can test the effects of having the database reside on RamSan
assets or having it reside on disk drive assets using the exact same database configuration as far as memory and
other internal assets. By placing the redo, undo, and temporary tablespaces on the RamSan-400s we eliminate
the concerns of undo, redo, and temporary activities on the results and can isolate the results due to the relative
placement of data and indexes.
Testing Software
To facilitate database build and the actual TPC-C protocol we utilized the Benchmark Factory software from
Quest Software to build the database and run the tests. By using a standard software system we assured that the
test execution and data gathering would be identical for the two sets of data.
The normal BMF TPC-C build wizard looks for existing tables, if they exist. It assumes that they are loaded and
jumps to the execution of the test. Since we have prebuilt the tables as partitioned tables, this would result in the
test being run against an empty set of tables. Instead of using the provided wizard, Quest provided me with a
custom BMF script that allowed loading of the TPC-C tables in 9 parallel streams against existing tables. The
custom script could also be edited to allow loading of any subset of tables. An example of where this subsetting of
the loading process is critical is in the case of a table running out of room (for example, the C_ORDER_LINE
table). By allowing only a single table to be loaded, if needed, the custom script enabled greater flexibility to
recover from errors. The custom BMF load script did not create indexes. Instead a custom script loading
additional performance-related indexes was used to build the TPC-C related indexes.
3500
3000
2500
TPS
2000
1500
1000
500
0
0 50 100 150 200 250 300 350
SSD 1 Server SSD 2 server
Clients SSD 3 Server SSD 4 Server
HD 1 Server HD 2 Server
HD 3 Server HD 4 Server
Notice that even at 1 node, the RamSan-based system outperforms the HDD based system with 4 full nodes, with
the exception of 3 data points, across the entire range from 5 to 295 users. In the full data set out to 500 users for
the 4 node run on RamSan, the final TPS is 3027 while for the HDD 4 node run it is a paltry 297 TPS.
In addition, the HDD test shows that it was experiencing heavy write stress because the number two wait event
was for free buffer waits which indicates users waited on buffers to be written to disk before they could be reused.
In comparison, the AWR report from the SSD 4-node test shows no listing at all for free buffer waits, indicating
there was little to no write stress on the RamSan during the test.
The statistics above show that the main problem for the HDD runs was latency related. Since the RamSan system
has a latency that is 10 percent of the HDD system, the physical I/O waits are lower by at least a factor of 10
overall. This reduction of latency allows more processing to be accomplished and more transactions as well as
users to be supported.
1000
100
Avg Time
10 Min Time
Max Time
Seconds
1 90th Time
0.0001
0 100 200 300 400 500 600
Users
10
1 Avg Time
Min Time
Max Time
0.1
Seconds
90th Time
Avg Response Time
0.01
Min Response Time
Max Response Time
0.001 90th Response Time
0.0001
0 100 200 300 400 500 600
Users
The RamSan serves more users, at a higher transaction rate, and delivers results anywhere from 5 to 10 times
faster, even at maximum load.
These tests show that a single server with 8 CPUs and 16GB of memory hooked to a RamSan-500 can
outperform a 4-node, 8 CPU, and 16GB per node RAC system when it is running against a 90 disk RAID10 array
setup with identical configurations for the Oracle database.
It should also be noted that the I/O load from the SYSTEM, UNDO, TEMP, and SYSAUX tablespaces, as well as
from the control file and REDO logs was offloaded to RamSan400s. Had this additional load been placed on the
disk array, performance for the HDD tests would have been much worse.
With 1-2 Gbps interfaces per disk array this translates to about 512 MB/s of bandwidth, or 64K IOPS at 8k size.
Because the database is configured at an 8k blocksize and this is OLTP with mostly single block reads, this
should give sufficient bandwidth. With 90 disk drives the maximum expected IOPS would be 18,000 if every disk
could be accessed simultaneously at the maximum random I/O rate.
RedHat multipathing software was used to unify the multiple ports presented into a single virtual port in the
servers for each device. The RamSans were presented with the names shown in the diagram in Figure 5. The
HDD arrays were formed into a single ASM diskgroup with one array as the primary and the other as its failure
group. The HDDATA and HDINDEXES tablespaces were then placed into that ASM diskgroup.
The memory sizes for the various caches (default, keep, and recycle) were then reduced proportionately to see
the effects of memory stress on the four node cluster. The results of the memory stress test are shown in Figure
6.
4000
3500
3000
2500
TPS
2000
1500
1000
500
0
0 100 200 300 400 500 600
Users TPS 9 gb TPS 4.5g
TPS 2.25G TPS 6.75g
TPS1.05g HD 9gb
HD 6.85gb HD 4.5 gb
HD 3 gb
Of course the reason for the wide range between the upper and lower memory results, from a factor of 3 to 7.5
times better performance by the RamSan, can be traced to the increase in physical I/O that resulted from not
being able to cache results and the subsequent increase in physical IOPS. This is shown in Figure 7.
IOPS High and Low Memory
100,000
90,000
80,000
70,000
60,000
IOPS 50,000
40,000
30,000
20,000
10,000
0
0 10 20 30
15 Minute Interval SSD HM
SSD LM
HDD LM
HDD HM
Figure 7 also shows that the IOPS was allowed to reach the natural peak for the data requirements in the
RamSan-based tests, while for the HDD tests it was being artificially capped by the limits of the hardware.
The timing for the db file sequential read waits for the RamSan and HDD runs are also indicative of the latency
differences between RamSan and HDD. For the RamSan runs the time spent doing db file sequential reads
varied from a high of 169,290 seconds for the entire measurement period at 1.05 GB down to 53,826 seconds for
the 9 GB run. In contrast the HDD required 848,389 seconds at 3 GB down to 579,571 seconds at 9 GB.
Summary
These tests prove that the RamSan array out-performs the HDD array in every aspect of the OLTP environment.
In scalability, performance, and under memory stress conditions, the RAMSAN array achieved a minimum of 3
times the performance of the HDD array, many times giving a 10 fold or better performance boost for the same
user load and memory configuration.
In a situation where the choice is between buying additional servers and memory and an HDD SAN versus getting
fewer servers, less memory, and a RamSan array, these results show that you will get better performance from
the RamSan system in every configuration tested. The only way to get near the performance of the RamSan array
would be to over-purchase the number of disks required by almost two orders of magnitude to obtain the required
IOPS through increased spindle counts.
When the costs of purchasing the additional servers and memory and the costs of floor space, disk cabinets,
controllers, and HBAs are combined with the ongoing energy and cooling costs for a large disk array system, it
should be clear that RamSans are a better choice.