solved Performance Test - Details

Ken Rich
Ken Rich
@ken-rich
9 years ago
926 posts
Is it possible to get a breakdown of what the performance test is actually testing and how it's testing it?


--

Ken Rich
indiegospel.net

updated by @ken-rich: 03/18/15 11:09:53PM
michael
@michael
9 years ago
7,719 posts
It compares
* the processor calculation speed
* the database read/write speed
* the file system access speed

of the server that your running to a baseline system of a "XEON @ 2.8GHz, 1 GB RAM and Fast SSD Disk"

The exact process can be seen in the view_jrCore_performance_check() function in
/modules/jrCore/index.php
Ken Rich
Ken Rich
@ken-rich
9 years ago
926 posts
Thanks Michael,

I'll have a look at that process. My speed was down while the datacenter rebuilt a raid one drive configuration. My database scores were way off, so I sent them the test results.

However, the "evidence" of the test results was deemed meaningless (by them), since exactly what is being tested and how, is not known.

I like the idea of having a a means of holding them accountable, so they provide what I pay for. Having the technical minutiae known, would help mitigate any arguments against the test's accuracy and value.

Anything Jamroom can provide along those lines would be extremely helpful.


--

Ken Rich
indiegospel.net
brian
@brian
9 years ago
10,148 posts
The JR Performance test is not an "exhaustive" performance test by any means - it pretty much focuses on JR specific tests - i.e. it's only going to test:

- the processor speed by going into a tight loop and adding numbers 10 million times.

- the database speed by running 12,000 database queries that query Jamroom's "DataStore" structure - i.e. a query like this:

$req = "SELECT DISTINCT(a.`_item_id`) AS _item_id FROM {$tbl} a
     LEFT JOIN {$tbl} b ON (b.`_item_id` = a.`_item_id` AND b.`key` = 'core_num')
     LEFT JOIN {$tbl} c ON (c.`_item_id` = a.`_item_id` AND c.`key` = 'core_set')
     LEFT JOIN {$tbl} d ON (d.`_item_id` = a.`_item_id` AND d.`key` = 'core_string')
     LEFT JOIN {$tbl} e ON (e.`_item_id` = a.`_item_id` AND e.`key` = 'core_title')
         WHERE a.`key` = '_updated'
           AND b.`value` > {$i}
           AND c.`value` > {$i}
           AND d.`value` LIKE '%tri%'
           AND e.`value` LIKE '%itl%'
         ORDER BY a.`value` DESC LIMIT 10";

This is the "search" query portion there are:

- 4,000 create queries (to create 2,000 items in the datastore (insert x 2))
- 2,000 update queries (to update the created items with new keys)
- 2,000 search queries (like above)
- 4,000 delete queries (to delete the created items (delete x 2))

The whole point is to gauge how fast your MySQL is going to work with Jamroom's datastore.

- the disk speed is assessed by creating a 1mb file in 1024 byte "writes" (so 1000 individual file writes). This basically figures out how fast your filesystem can fopen(), fwrite() and fclose() small files, which is a good predictor of file system performance.

Hope this helps!


--
Brian Johnson
Founder and Lead Developer - Jamroom
https://www.jamroom.net

updated by @brian: 02/05/15 07:06:09AM
Ken Rich
Ken Rich
@ken-rich
9 years ago
926 posts
Awesome - thanks very much Brian...


--

Ken Rich
indiegospel.net