Swift RESAR Project Part 4

This post is a continuation of the Swift RESAR saga. Last time I presented the design of RESAR Swift using MySQL. I would now like to present performance results for this implementation.

Swift MySQL Database Construction

The following shows MySQL database construction times for a given number of disk devices. Each disk device was partitioned into 3 disklets. A Reliability Group was also created for each disk device. Each Reliability Group consisted of 3 disklets.

stream count = 100
total database time = 0:00:12.663257
write time per stream = 0.12663257

stream count = 1,000
total database time = 0:02:03.366211
write time per stream = 0.123366211

stream count = 10,000
total database time = 0:20:43.474188
write time per stream = 0.1243474188

stream count = 100,000
total database time = 3:29:22.296089
write time per stream = 0.12562296089

stream count = 1,000,000
total database time = 1 day, 10:33:13.599063
write time per stream = 0.124393599063

So for a cloud cluster of 1 million devices, MySQL database construction time was (on average) 0.12 seconds for a single device and reliability group. It required over 34 hours to create the entire database of 1 million devices and 1 million reliability groups.

Performance Results

The following shows MySQL database query times for the tables.

Query Device Table by (ID)
average time = 0.00038575144

Query Device Table by (HostName, DeviceName)
average time = 0.00045933403

Query Disklet Table by (ID)
average time = 0.00028206711

Query Disklet Table by (DeviceID)
average time = 0.00031838307

Query ReliabilityGroup Table by (ID)
average time = 0.00027287826

Query ReliabilityGroupsDisklets Table by (ID)
average time = 0.000272622203333

Query ReliabilityGroupsDisklets Table by (ReliabilityGroupID)
average time = 0.00035928513

Query ReliabilityGroupsDisklets Table by (DiskletID)
average time = 0.000347662563333

Query ReliabilityGroupsDisklets Table by (DeviceID)
average time = 0.00038096357

So the minimum query time was 0.000272622203333 seconds and the maximum was
0.00045933403 seconds. We sincerely hoped that this database creation time was excessive and that the second RESAR Swift approach would greatly improve database performance.

So I have presented performance results for the implementation Swift RESAR MySQL
implementation. In my next post, I will present a better implementation. But first I’ll have to determine why the MySQL implementation is so slow. Once we have determined the performance bottlenecks, then we can work on a solution.