Как получить лучшую производительность для локального SSD диска на GKE?

Я запускаю тест OLTP sysbench с TiDB на локальном SSD-диске GKE. Но у меня плохая производительность по сравнению с постоянным SSD-диском GKE. Как я могу получить ожидаемую производительность IOPS на локальном SSD-диске GKE по умолчанию?

Я запустил тестирование TiDB OLTP и fio psync двигатель, но результаты показывают, что IOPS на локальном диске SSD хуже, чем на постоянном диске SSD. И я также провел тщательный анализ blktrace. Команда fio, которую я выполнил:

fio -ioengine=psync -bs=32k -fdatasync=1 -thread -rw=write -size=10G -filename=test -name="max throughput" -iodepth=1 -runtime=60 -numjobs=4 -group_reporting

Результат теста fio для локального SSD-диска и постоянного диска:

| disk type           | iops | bandwidth |
|---------------------+------+-----------|
| local SSD disk      |  302 | 9912kB/s  |
| persistent SSD disk | 1149 | 37.7MB/s  |

И результат blktrace btt:

==================== All Devices ====================

            ALL           MIN           AVG           MAX           N
--------------- ------------- ------------- ------------- -----------

Q2Q               0.000000002   0.003716416  14.074086987       34636
Q2G               0.000000236   0.000005730   0.005347758       25224
G2I               0.000000727   0.000005446   0.002450425       20575
Q2M               0.000000175   0.000000716   0.000027069        9447
I2D               0.000000778   0.000003197   0.000111657       20538
M2D               0.000001941   0.000011350   0.000431655        9447
D2C               0.000065510   0.000182827   0.001366980       34634
Q2C               0.000072793   0.001181298   0.023394568       34634

==================== Device Overhead ====================

       DEV |       Q2G       G2I       Q2M       I2D       D2C
---------- | --------- --------- --------- --------- ---------
 (  8, 48) |   0.3532%   0.2739%   0.0165%   0.1605%  15.4768%
---------- | --------- --------- --------- --------- ---------
   Overall |   0.3532%   0.2739%   0.0165%   0.1605%  15.4768%

Согласно руководству по оптимизации, я вручную перемонтировал диск с nobarrier опция и результат blktrace btt выглядит как обычно.

==================== All Devices ====================

            ALL           MIN           AVG           MAX           N
--------------- ------------- ------------- ------------- -----------

Q2Q               0.000000006   0.000785969  12.031454829      123537
Q2G               0.000003929   0.000006162   0.005294881       94553
G2I               0.000004677   0.000029263   0.004555917       94553
Q2M               0.000004069   0.000005337   0.000328930       29019
I2D               0.000005166   0.000020476   0.001078527       94516
M2D               0.000012816   0.000056839   0.001113739       29019
D2C               0.000081435   0.000358712   0.006724447      123535
Q2C               0.000113965   0.000415489   0.006763290      123535

==================== Device Overhead ====================

       DEV |       Q2G       G2I       Q2M       I2D       D2C
---------- | --------- --------- --------- --------- ---------
 (  8, 48) |   1.1351%   5.3907%   0.3017%   3.7705%  86.3348%
---------- | --------- --------- --------- --------- ---------
   Overall |   1.1351%   5.3907%   0.3017%   3.7705%  86.3348%

Однако, согласно документу RedHat, nobarrier Опция монтирования должна иметь очень небольшое отрицательное влияние на производительность (около 3%), и ее не рекомендуется использовать в хранилище, настроенном на виртуальных машинах.

Использование nobarrier больше не рекомендуется в Red Hat Enterprise Linux 6, поскольку отрицательное влияние барьеров записи на производительность незначительно (приблизительно 3%). Преимущества барьеров записи обычно перевешивают преимущества производительности при их отключении. Кроме того, опция nobarrier никогда не должна использоваться в хранилище, настроенном на виртуальных машинах.

В добавок к nobarrier Кроме того, в руководстве по оптимизации локального SSD-диска также предлагается установить гостевую среду Linux, но говорится, что она уже установлена ​​на более новом образе виртуальной машины. Однако я обнаружил, что он не установлен на узле GKE.

Поэтому я вручную установил гостевую среду Linux и снова протестировал, на этот раз результат btt выглядит так, как ожидалось:

==================== All Devices ====================

            ALL           MIN           AVG           MAX           N
--------------- ------------- ------------- ------------- -----------

Q2Q               0.000000001   0.000472816  21.759721028      301371
Q2G               0.000000215   0.000000925   0.000110353      246390
G2I               0.000000279   0.000003579   0.003997348      246390
Q2M               0.000000175   0.000000571   0.000106259       54982
I2D               0.000000609   0.000002635   0.004064992      246390
M2D               0.000001400   0.000005728   0.000509868       54982
D2C               0.000051100   0.000451895   0.009107264      301372
Q2C               0.000054091   0.000458881   0.009111984      301372

==================== Device Overhead ====================

       DEV |       Q2G       G2I       Q2M       I2D       D2C
---------- | --------- --------- --------- --------- ---------
 (  8, 80) |   0.1647%   0.6376%   0.0227%   0.4695%  98.4778%
---------- | --------- --------- --------- --------- ---------
   Overall |   0.1647%   0.6376%   0.0227%   0.4695%  98.4778%

Итак, как я могу получить ожидаемую производительность IOPS на локальном SSD-диске GKE по умолчанию без дополнительной настройки?

1 ответ

TiDB рекомендует включить и смонтировать параметры:

Чтобы улучшить производительность записи ввода-вывода, рекомендуется настроитьnodelallocиnoatimeвmountOptionsполе ресурса StorageClass. Подробности см. в разделе «Проверка среды TiDB и конфигурации системы ».

Ссылка: https://docs.pingcap.com/tidb-in-kubernetes/stable/deploy-on-gcp-gke#configure-storageclass

Другие вопросы по тегам