Я получаю неожиданно низкие транзакции в секунду на опции GCE «Local SSD» (по сравнению с SSD Persistent Disk) с помощью простых тестов «pgbench»:
# With Local SSD
# /dev/mapper/vg0-data on /data type xfs (rw,noexec,noatime,attr2,inode64,noquota)
pg-dev-002:~$ pgbench -c 8 -j 2 -T 60 -U postgres
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 1
query mode: simple
number of clients: 8
number of threads: 2
duration: 60 s
number of transactions actually processed: 10765
tps = 179.287875 (including connections establishing)
tps = 179.322407 (excluding connections establishing)
# With SSD Persistent Disk
# /dev/mapper/vg1-data on /data1 type xfs (rw,noexec,noatime,attr2,inode64,noquota)
pg-dev-002:/data$ pgbench -c 8 -j 2 -T 60 -U postgres
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 1
query mode: simple
number of clients: 8
number of threads: 2
duration: 60 s
number of transactions actually processed: 62457
tps = 1040.806664 (including connections establishing)
tps = 1041.012782 (excluding connections establishing)
Тесты "fio" показывают заявленные IOPS и пропускную способность для локального SSD. Однако выполнение «pg_test_fsync» на локальном монтировании SSD заставляет меня думать, что виной всему задержка fsync. Номера локальных SSD указаны после применения скрипта Google IRQ. Вот:
# Local SSD
open_datasync 319.738 ops/sec 3128 usecs/op
fdatasync 321.963 ops/sec 3106 usecs/op
# Persistent SSD
open_datasync 1570.305 ops/sec 637 usecs/op
fdatasync 1561.469 ops/sec 640 usecs/op
Я не видел ничего относительно ограничений fsync и локального SSD, но я не уверен, где еще проверить или протестировать.
Сравнение не замужем локальный SSD / HDD / и т. д. к RAID-контроллеру типа SAN, это все равно что сравнивать VW Beetle с автомобилем Audi RS10 Le-mans, да, они оба вышли с одного завода, и оба используют четырехтактные двигатели / SSD / HDD, но их настройки и т. д. пути, пути разные.
Я могу привести несколько примеров полученного опыта, но простые ответы связаны с огромным объемом кэша RAM с резервным питанием от батареи, который хранилище на основе SAN имеет по сравнению с не на локальном SSD / HDD. Даже твердотельные накопители не могут вполне конкурировать с оперативной памятью DDR3 с батарейным питанием, когда они подтверждают, что данные были «сохранены» на диске. Более того, один локальный диск может (реально) обрабатывать только одну операцию за один раз, записывая блок на «диск», по сравнению с системами SAN с батарейным питанием, которые могут обрабатывать несколько запросов одновременно «записывая на диск» (поскольку они фиксируют данные к аккумулятору с резервным копированием DDR3 RAM)
Наконец, может возникнуть вопрос который используется локальный SSD-диск, так как я видел огромные различия в производительности записи между разными размеры одного и того же семейства SSD (чем больше, тем быстрее), не говоря уже о различных скоростях различных SSD-дисков.
Да, твердотельные накопители быстрее жестких дисков, но еще не так быстры, как оперативная память DDR3 с батарейным питанием;)