function load_results($dir) { $data = array(); $fs_dir = opendir($dir); while ($fs = readdir($fs_dir)) { if (!is_dir("{$dir}/{$fs}") || in_array($fs, array('.', '..'))) { continue; } echo "{$dir}/{$fs}\n"; $data[$fs] = array(); $pgbs_dir = opendir("{$dir}/{$fs}"); while ($pgbs = readdir($pgbs_dir)) { if ($pgbs == '.' || $pgbs == '..') { continue; } echo "\t{$pgbs}:"; $data[$fs][$pgbs] = array(); $fsbs_dir = opendir("{$dir}/{$fs}/{$pgbs}"); while ($fsbs = readdir($fsbs_dir)) { if ($fsbs == '.' || $fsbs == '..') { continue; } echo " {$fsbs}"; $data[$fs][$pgbs][$fsbs] = array(); $data[$fs][$pgbs][$fsbs]['hash'] = md5("{$fs}/{$pgbs}/{$fsbs}" . microtime(true)); $data[$fs][$pgbs][$fsbs]['pgbench'] = array(); $data[$fs][$pgbs][$fsbs]['pgbench']['ro'] = load_pgbench("{$dir}/{$fs}/{$pgbs}/{$fsbs}/pgbench/ro", 1); $data[$fs][$pgbs][$fsbs]['pgbench']['rw'] = load_pgbench("{$dir}/{$fs}/{$pgbs}/{$fsbs}/pgbench/rw", 9); $data[$fs][$pgbs][$fsbs]['tpch'] = load_tpch("{$dir}/{$fs}/{$pgbs}/{$fsbs}/tpch"); } closedir($fsbs_dir); echo "\n"; } closedir($pgbs_dir); } closedir($fs_dir); return $data; }
if (!is_dir($input)) { echo "ERROR: is not a directory: '{$input}'\n"; exit; } else { if (file_exists($output)) { echo "ERROR: output file '{$output}' already exists\n"; exit; } } } /* query timeout limit */ define('QUERY_TIMEOUT', 300); echo "input directory: {$input}\n"; echo "output file: {$output}\n"; // load the results from directory $data = load_tpch($input); // add information from the shell log parse_log($data, "{$input}/bench.log"); // write the results into CSV print_tpch_csv($data, "{$output}"); /* FUNCTIONS */ /* loads postgresql stats from the directory (expects stats-before/stats-after log files) */ /* param $dir - directory with benchmark results */ function load_stats($dir) { $diff = array(); $before = file("{$dir}/stats-before.log"); $after = file("{$dir}/stats-after.log"); // pg_stat_bgwriter $matches_before = array(); preg_match('/^\\s+([0-9]+)\\s\\|\\s+([0-9]+)\\s\\|\\s+([0-9]+)\\s\\|\\s+([0-9]+)\\s\\|\\s+([0-9]+)\\s\\|\\s+([0-9]+)\\s\\|\\s+([0-9]+)/', $before[2], $matches_before);