Вот например диаграмма построенная на основе полученных данных для сервера (MEM 32Gb, 24 CORE, Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz (9.2.3 + perl)) с файловой системой ext4 без тюнинга, CentOS 6.4
По оси Y количество транзакций в секунду. По X скейл фактов в зависимости от размера оперативной памяти (1 - 0.1 памяти, 20 - 2 x MEM)
#!/bin/bash -x
# Andrew G. Saushkin
AVAIL_MEMORY=32
AVAIL_CORES=24
PG_HOST=127.0.0.1
PG_USER=ags
function initdb {
# Префикс баз данных, которые будут использованы при тестировании. Внимание, существующие базы
# данных с этим префиксом будут удалены
DB_PREFIX=pgbench_$PG_USER
DBNAME=$DB_PREFIX$1
SCALE=$2
CLIENTS=$3
THREADS=$4
EXEC_TIME=$5
LIBPQ_OPTIONS=" -U $PG_USER -h $PG_HOST -p 5433 "
#LIBPQ_OPTIONS=
PSQL="psql $LIBPQ_OPTIONS postgres"
$PSQL <<SQL
\c postgres
\set AUTOCOMMIT on
\set ON_ERROR_STOP off
drop database $DBNAME;
\set AUTOCOMMIT off
\set ON_ERROR_STOP on
CREATE DATABASE $DBNAME
WITH ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'ru_RU.UTF-8'
LC_CTYPE = 'ru_RU.UTF-8'
CONNECTION LIMIT = -1
TEMPLATE = template0;
SQL
pgbench $LIBPQ_OPTIONS -i -s$SCALE $DBNAME
pgbench $LIBPQ_OPTIONS -c $CLIENTS -j $THREADS -T $EXEC_TIME $DBNAME
}
# dbname scale clients threads exec_time
initdb 1 $(python -c "print round($AVAIL_MEMORY * 75 * 0.1) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 2 $(python -c "print round($AVAIL_MEMORY * 75 * 0.2) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 3 $(python -c "print round($AVAIL_MEMORY * 75 * 0.3) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 4 $(python -c "print round($AVAIL_MEMORY * 75 * 0.4) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 5 $(python -c "print round($AVAIL_MEMORY * 75 * 0.5) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 6 $(python -c "print round($AVAIL_MEMORY * 75 * 0.6) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 7 $(python -c "print round($AVAIL_MEMORY * 75 * 0.7) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 8 $(python -c "print round($AVAIL_MEMORY * 75 * 0.8) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 9 $(python -c "print round($AVAIL_MEMORY * 75 * 0.9) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 10 $(python -c "print round($AVAIL_MEMORY * 75 * 1.0) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 11 $(python -c "print round($AVAIL_MEMORY * 75 * 1.1) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 12 $(python -c "print round($AVAIL_MEMORY * 75 * 1.2) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 13 $(python -c "print round($AVAIL_MEMORY * 75 * 1.3) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 14 $(python -c "print round($AVAIL_MEMORY * 75 * 1.4) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 15 $(python -c "print round($AVAIL_MEMORY * 75 * 1.5) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 16 $(python -c "print round($AVAIL_MEMORY * 75 * 1.6) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 17 $(python -c "print round($AVAIL_MEMORY * 75 * 1.7) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 18 $(python -c "print round($AVAIL_MEMORY * 75 * 1.8) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 19 $(python -c "print round($AVAIL_MEMORY * 75 * 1.9) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
initdb 20 $(python -c "print round($AVAIL_MEMORY * 75 * 2.0) " | sed 's/\..*//') $(($AVAIL_CORES * 2)) $(($AVAIL_CORES * 1)) 600
Комментариев нет:
Отправить комментарий