Т.к. постгрес каждый запрос выполняем на отдельном цпу (без распараллеливания) то очень важно для системы, работающей с постгрес, чтобы эффективность каждого ядра + работа с памятью была максимальной.
Есть хороший бенчмарк, написанный для этих целей - http://github.com/gregs1104/stream-scaling
Чтобы бенчмарк был более достверный - надо отключить пониженное энергопотребление процессора и динамическую частоту.
На системе с Intel(R) Core(TM) i3-4030U CPU @ 1.90GHz - 4 ядра:
Function Best Rate MB/s Avg time Min time Max time
Copy: 11128.2 0.015148 0.014378 0.016843
Scale: 9838.3 0.017435 0.016263 0.022605
Add: 9520.8 0.026703 0.025208 0.031915
Triad: 8808.9 0.028463 0.027245 0.029689
Number of Threads requested = 2
Function Best Rate MB/s Avg time Min time Max time
Triad: 10690.4 0.026216 0.022450 0.030911
Number of Threads requested = 3
Function Best Rate MB/s Avg time Min time Max time
Triad: 9466.7 0.026791 0.025352 0.030185
Number of Threads requested = 4
Function Best Rate MB/s Avg time Min time Max time
Triad: 10119.8 0.024579 0.023716 0.027354
Вот данные с системы на которой основные бенчмарки проверяются:
Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz
Function Best Rate MB/s Avg time Min time Max time
Copy: 6894.2 0.037242 0.036641 0.038797
Scale: 8803.7 0.028890 0.028694 0.029372
Add: 8344.5 0.045766 0.045409 0.047154
Triad: 7644.4 0.050011 0.049568 0.052200
Number of Threads requested = 2
Function Best Rate MB/s Avg time Min time Max time
Triad: 8180.4 0.047172 0.046320 0.049512
Number of Threads requested = 3
Function Best Rate MB/s Avg time Min time Max time
Triad: 7354.3 0.055346 0.051523 0.060877
Number of Threads requested = 4
Function Best Rate MB/s Avg time Min time Max time
Triad: 7282.7 0.054480 0.052030 0.059323
Современные системы работают с памятью лучше.
В первом случае частота памяти 1600 MHz, во втором - 1333 MHz
Диски
Т.к. постгрес работает с блоками по 8кб - замерим работу диск с данными, которые вдвое превышают оперативу
blocks = 250,000 * (gigabytes of RAM) = 1750000 (для 7gb)
time sh -c "dd if=/dev/zero of=bigfile bs=8k count=1750000 && sync"
time dd if=bigfile of=/dev/null bs=8k
hdd
time sh -c "dd if=/dev/zero of=bigfile bs=8k count=1750000 && sync"
1750000+0 записей получено
1750000+0 записей отправлено
скопировано 14336000000 байт (14 GB), 254,593 c, 56,3 MB/c
real 4m29.297s
user 0m0.284s
sys 0m10.948s
На чтение
time dd if=bigfile of=/dev/null bs=8k
1750000+0 записей получено
1750000+0 записей отправлено
скопировано 14336000000 байт (14 GB), 262,622 c, 54,6 MB/c
real 4m22.634s
user 0m0.592s
sys 0m15.396s
sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 19278 MB in 2.00 seconds = 9647.50 MB/sec
Timing buffered disk reads: 272 MB in 3.01 seconds = 90.22 MB/sec
Скорость памяти можно измерять с помощью memtest86+
Есть хороший бенчмарк, написанный для этих целей - http://github.com/gregs1104/stream-scaling
Чтобы бенчмарк был более достверный - надо отключить пониженное энергопотребление процессора и динамическую частоту.
На системе с Intel(R) Core(TM) i3-4030U CPU @ 1.90GHz - 4 ядра:
Function Best Rate MB/s Avg time Min time Max time
Copy: 11128.2 0.015148 0.014378 0.016843
Scale: 9838.3 0.017435 0.016263 0.022605
Add: 9520.8 0.026703 0.025208 0.031915
Triad: 8808.9 0.028463 0.027245 0.029689
Number of Threads requested = 2
Function Best Rate MB/s Avg time Min time Max time
Triad: 10690.4 0.026216 0.022450 0.030911
Number of Threads requested = 3
Function Best Rate MB/s Avg time Min time Max time
Triad: 9466.7 0.026791 0.025352 0.030185
Number of Threads requested = 4
Function Best Rate MB/s Avg time Min time Max time
Triad: 10119.8 0.024579 0.023716 0.027354
Вот данные с системы на которой основные бенчмарки проверяются:
Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz
Function Best Rate MB/s Avg time Min time Max time
Copy: 6894.2 0.037242 0.036641 0.038797
Scale: 8803.7 0.028890 0.028694 0.029372
Add: 8344.5 0.045766 0.045409 0.047154
Triad: 7644.4 0.050011 0.049568 0.052200
Number of Threads requested = 2
Function Best Rate MB/s Avg time Min time Max time
Triad: 8180.4 0.047172 0.046320 0.049512
Number of Threads requested = 3
Function Best Rate MB/s Avg time Min time Max time
Triad: 7354.3 0.055346 0.051523 0.060877
Number of Threads requested = 4
Function Best Rate MB/s Avg time Min time Max time
Triad: 7282.7 0.054480 0.052030 0.059323
Современные системы работают с памятью лучше.
В первом случае частота памяти 1600 MHz, во втором - 1333 MHz
Диски
Т.к. постгрес работает с блоками по 8кб - замерим работу диск с данными, которые вдвое превышают оперативу
blocks = 250,000 * (gigabytes of RAM) = 1750000 (для 7gb)
time sh -c "dd if=/dev/zero of=bigfile bs=8k count=1750000 && sync"
time dd if=bigfile of=/dev/null bs=8k
hdd
time sh -c "dd if=/dev/zero of=bigfile bs=8k count=1750000 && sync"
1750000+0 записей получено
1750000+0 записей отправлено
скопировано 14336000000 байт (14 GB), 254,593 c, 56,3 MB/c
real 4m29.297s
user 0m0.284s
sys 0m10.948s
На чтение
time dd if=bigfile of=/dev/null bs=8k
1750000+0 записей получено
1750000+0 записей отправлено
скопировано 14336000000 байт (14 GB), 262,622 c, 54,6 MB/c
real 4m22.634s
user 0m0.592s
sys 0m15.396s
sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 19278 MB in 2.00 seconds = 9647.50 MB/sec
Timing buffered disk reads: 272 MB in 3.01 seconds = 90.22 MB/sec
Скорость памяти можно измерять с помощью memtest86+