powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / db2 i/o
20 сообщений из 20, страница 1 из 1
db2 i/o
    #39231773
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наконец ещё раз смог поиграть - с линухом на отдельной машинке.
10.5.7 Express-c, 6 раздельных SATA-дисков, Core2Duo, 8гиг ОЗУ.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
create database TEST   automatic storage yes
  on /u03/db2,/u04/db2,/u05/db2,/u06/db2
  USING CODESET 1251    TERRITORY RU    COLLATE USING SYSTEM
  PAGESIZE 32768
  dft_extent_sz 32
  catalog tablespace
    managed by automatic storage
    extentsize 32
    prefetchsize 128
    overhead 16
    transferrate 0.4
    autoresize yes
    Initialsize 1 G
    Increasesize 1 G
  user tablespace
    managed by automatic storage
    extentsize 32
    prefetchsize 128
    overhead 16
    transferrate 0.4
    autoresize yes
    iNitialsize 1 g
    iNcreasesize 1 g
  temporary tablespace
    managed by automatic storage
    extentsize 32
    prefetchsize 32
    overhead 16
    transferrate 0.4
  AUTOCONFIGURE USING
    mem_percent 100
    admin_priority performance
    num_local_apps 10
    num_remote_apps 20
  APPLY DB AND DBM;
и закидывал данные таким скриптом


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
drop table T6
@
UPDATE COMMAND OPTIONS USING C OFF  
@
create table T6 (
  n1 bigint not null,
  padding varchar(1000) not null
) not logged initially
@
insert into T6
with 
  xxx(rn) as (
    values(1)
    union all
    select rn+1
    from xxx
    where rn+1 <= 10000000 -- *5
  )
select
  -- trunc((rn-1)/100) n1,
  ((rn-1)/100) n1,
  rpad('x',100) padding
from xxx
@
commit
@




Итак, 32K страница, 32 страницы в экстенте - итого 1M. Но в iostat на фуллскане по таблице в колонке avgrq-sz показывает 1024 (512-байтовых страниц, т.е. полмега). Присваивание в /sys/block/sdX/queue/max_sectors_kb значений 4096 не помогло. (У винды дела ещё хуже, но на линух я надеялся).

Что ещё страннее, между insert'ом и commit'ом avgrq-sz=32, т.е. cleaner пишет по полстраницы. Такое поведение я вообще не понимаю. Там должны были быть непрерывные диапазоны грязных страниц большой длины, так что напрашивается оптимизировать и писать на диск большими кусками. Ну ладно, не оптимизировали. Но делить страницы-то зачем? Может, на AIX'е всё это не имеет значения, а до линуха руки не дошли?

С количеством iocleaner'ов тоже не всё понятно. Кажется, что на каждый диск разумно выделить отдельный cleaner, т.е. для этой базы их должно быть четыре, но если параметр automatic, СУБД определяет почему-то по количеству процессоров. А iostat показывает ещё более сомнительную картину - нагрузка (%util) идёт по двум дискам по 50% (потом по другим по 50%), т.е. одномоментно работает только один cleaner (процессор при этом практически не нагружен). Вручную задал num_iocleaners=16, это привело к небольшой смене поведения - cleaner стал дольше работать с одним диском. От DB2_USE_ALTERNATE_PAGE_CLEANING=YES пользы не увидел. Четыре одновременных вставки в разные таблицы, похоже, задействовали два iocleaner'а.
...
Рейтинг: 0 / 0
db2 i/o
    #39231774
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И fullscan-утилизация далека от 100%.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdc               0.00     0.00   61.30    0.40    30.60     0.00  1015.76     0.91   14.40   14.41   13.25   6.43  39.70
sdd               0.00     0.00   73.70    0.20    36.85     0.00  1021.23     0.94   12.66   12.66   13.50   4.38  32.35
sde               0.00     0.00   59.00    0.20    29.43     0.00  1018.06     0.71   12.06   12.08    4.50   6.20  36.72
sdf               0.00     0.00   80.30    0.20    40.15     0.00  1021.46     1.45   18.01   17.99   24.50   6.93  55.77

Можно подумать, что надо по ядру на диск. Или что Express-C придушена в этом месте.
...
Рейтинг: 0 / 0
db2 i/o
    #39231988
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Victor Metelitsa,

Чтения:
prefetchsize -> automatic

For N=2,...,6 Do
DB2_PARALLEL_IO=N
num_ioservers=2+N
db2stop/db2start
Тест на холодную

Что показывает, скажем, fio (или аналог) с direct чтениями блоками по 32K на дисках?
...
Рейтинг: 0 / 0
db2 i/o
    #39232095
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я посмотрю во второй половине дня,
но оно и так (без установки DB2_PARALLEL_IO) должно было работать, а в
http://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.admin.regvars.doc/doc/r0005658.html?lang=en
ничего хорошего не обещают (For example, if a table space has two containers and each of the two containers have each a single disk dedicated to it, setting the registry variable might result in contention on those disks because the two prefetchers will be accessing each of the two disks at once.)
а AUTOCONFIGURE поставил num_ioservers в 12 - вроде бы эта каша не была испорчена этим маслом.
...
Рейтинг: 0 / 0
db2 i/o
    #39232133
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Victor Metelitsaно оно и так (без установки DB2_PARALLEL_IO) должно было работать, а в
http://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.admin.regvars.doc/doc/r0005658.html?lang=en
ничего хорошего не обещают (For example, if a table space has two containers and each of the two containers have each a single disk dedicated to it, setting the registry variable might result in contention on those disks because the two prefetchers will be accessing each of the two disks at once.)Если цель - поссмотреть на то, на что способны диски, то одним простым сканированием их навряд ли можно нагрузить полностью. Да, здесь будет посылаться избыточное количество запросов, но раз у вас такая цель, то попробуйте сравнить показания iostat.
...
Рейтинг: 0 / 0
db2 i/o
    #39232164
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinЧтения:
...
For N=2,...,6 Do
DB2_PARALLEL_IO=N
num_ioservers=2+N
Ошибся.
Надо минимум:
num_ioservers=2+N*4
...
Рейтинг: 0 / 0
db2 i/o
    #39232208
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И, наверное, DB2_PARALLEL_IO=*:N?

Ещё несколько потенциальных мест для проверки:
* уменьшить extents size вдвое, с 1М до 512К
* старая десктопная материнская плата могла не справиться с нагрузкой одновременно четырёх дисков (но вряд ли) - погонять ораклячий Orion.
* изменится ли что-нибудь при замене Express-C на EE
* изменится ли что-нибудь при замене двухъядерного процессора на четырёхъядерный

А fio - это https://github.com/axboe/fio ? Я незнаком с этой утилитой. Что она должна показать?
...
Рейтинг: 0 / 0
db2 i/o
    #39232231
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinЕсли цель - поссмотреть на то, на что способны диски, то одним простым сканированием их навряд ли можно нагрузить полностью.
Цель - посмотреть, как работает распараллеливание. Я понял прочитанное в документации так, что при N дисках, N контейнерах на каждом диске и prefetch size = N * extent size чтение будет работать одновременно со всех этих дисков. В таком случае должно быть если не 100%, то хотя бы ~90%. Иначе к чему вообще огород городить?
...
Рейтинг: 0 / 0
db2 i/o
    #39232307
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Victor MetelitsaА fio - это https://github.com/axboe/fio ? Я незнаком с этой утилитой. Что она должна показать?Она делает то же, что и все остальные подобные утилиты - нагружает дисковую подсистему тем типом нагрузки, который нужен.
Victor MetelitsaЦель - посмотреть, как работает распараллеливание. Я понял прочитанное в документации так, что при N дисках, N контейнерах на каждом диске и prefetch size = N * extent size чтение будет работать одновременно со всех этих дисков. В таком случае должно быть если не 100%, то хотя бы ~90%. Иначе к чему вообще огород городить? Распараллеливание работает, и вы это видите с iostat.
Другое дело, что одним сканированием вы не нагружаете полностью диски. По моему мнению это неудивительно. Видимо, db2 вынуждена заниматься еще и другими вещами, кроме чтения с диска при сканировании, поэтому не может одной сессией прогрузить полностью дисковую подсистему.
Если цель - это сделать, то либо заставить сессию делать больше io за один вызов, либо создать N таблиц и запустить N сессий одновременно, где каждая сканирует свою таблицу.
...
Рейтинг: 0 / 0
db2 i/o
    #39232333
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
05/10/2016 04:54:46 AM
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          10.86    0.00    1.45   67.58    0.00   20.11

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdc               0.40     0.20  105.90    0.60    53.11     0.00  1021.42     3.17   29.70   29.59   48.33   8.64  92.04
sdd               0.00     0.00  106.80    0.20    53.35     0.00  1021.19     2.13   20.05   20.03   31.00   6.74  72.17
sde               0.00     0.00  107.20    0.20    53.55     0.00  1021.14     2.92   27.30   27.26   51.50   8.30  89.19
sdf               0.00     0.00  106.60    0.20    53.30     0.00  1022.09     3.36   31.44   31.41   46.50   8.52  90.98
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
Спасибо. Да, с вашими настройками оно гораздо лучше выглядит. Нагрузка на cpu 10% и на диски 90% - это, должно быть, максимум. Интересно, почему с "моими" не так.

То, что несколькими сеансами можно прогрузить - это понятно. Но один сеанс тоже интересен.
...
Рейтинг: 0 / 0
db2 i/o
    #39232338
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё бы научиться avgrq-sz побеждать... Быть может, там у DB2 внутри хитрые алгоритмы выбора. А может, банальная константа, которую никому не приходит в голову трогать.
...
Рейтинг: 0 / 0
db2 i/o
    #39232351
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Victor Metelitsa,

А при каких именно настройках эти последние цифры получены?
Какое DB2_PARALLEL_IO?
...
Рейтинг: 0 / 0
db2 i/o
    #39232397
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DB2_PARALLEL_IO=*:4
prefetchsize AUTOMATIC
num_ioservers 20
...
Рейтинг: 0 / 0
db2 i/o
    #39232413
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Victor MetelitsaЕщё бы научиться avgrq-sz побеждать... Быть может, там у DB2 внутри хитрые алгоритмы выбора. А может, банальная константа, которую никому не приходит в голову трогать.
Попробуйте:
Код: plaintext
ALTER BUFFERPOOL  mybp  NUMBLOCKPAGES  N  BLOCKSIZE 32 
Рекомендации для N для хранилищ - 30% от размера буфера.
Blocksize должен быть равен размеру экстента пространства.
mybp - буферный пул для пространства с таблицей.
...
Рейтинг: 0 / 0
db2 i/o
    #39232414
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и рестарт базы после этого, чтоб изменения в силу вступили.
...
Рейтинг: 0 / 0
db2 i/o
    #39232515
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
05/10/2016 07:26:03 AM
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           9.74    0.00    0.85   75.84    0.00   13.56

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.30    0.00    2.90     0.00     0.02    12.31     0.01    2.07    0.00    2.07   0.83   0.24
sdd              59.70     0.00   59.70    0.00    59.70     0.00  2048.00     3.01   50.40   50.40    0.00  10.63  63.45
sde              49.20     0.00   49.10    0.00    49.01     0.00  2044.35     2.37   47.64   47.64    0.00  14.10  69.24
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdf              48.40     0.00   48.40    0.00    48.40     0.00  2048.00     2.93   60.48   60.48    0.00  15.03  72.74
sdc              55.30     0.00   57.30    0.20    57.21     0.00  2037.57     3.88   71.49   71.69   13.00  14.73  84.67
dm-0              0.00     0.00    0.00    2.80     0.00     0.02    11.04     0.01    2.32    0.00    2.32   0.86   0.24
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-2              0.00     0.00    0.00    0.30     0.00     0.00    16.00     0.00    0.00    0.00    0.00   0.00   0.00
Потрясающе, это помогло, а я даже и не верил.
...
Рейтинг: 0 / 0
db2 i/o
    #39314846
dbtwoshnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А у меня iostat -x 10 на выделенном ZFS сервере выглядит примерно так (далее) во время бэкапа, когда бэкап не очень много шлет на бэкап сервер через NFS, т.е. как бы чего-то думает (или читает/пишет random) в этом время:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
nvme0n1           0.00     0.00   42.40   74.20   151.20   509.80    11.34     0.01    0.09    0.17    0.05   0.08   0.92
nvme1n1           0.00     0.00    3.10   84.60    16.65   889.25    20.66     0.01    0.11    0.39    0.10   0.10   0.92
sda               2.00     0.00   44.70   10.20   932.00   221.60    42.03     0.70   12.73   11.19   19.45   5.85  32.12
sdd               1.90     0.00   53.10   39.70   868.40   322.00    25.66     1.77   19.07   20.11   17.67   8.47  78.64
sdf               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sde               0.00     0.10    0.00    0.30     0.00     1.60    10.67     0.00    2.67    0.00    2.67   2.67   0.08
sdb               2.30     0.00   42.70   10.20   759.60   221.60    37.10     0.59   11.24   10.30   15.14   5.39  28.52
sdc               2.70     0.00   54.70   40.00   941.20   321.60    26.67     1.45   15.33   17.58   12.26   7.29  69.04



Как думаете, что можно улучшить и как, кроме добавления дисков в пул и наращивания L1ARC и L2ARC?

Во время реорганизации w/s на SSD доходит примерно до 1500, а writes в db2top в это же время до 10K-50K
...
Рейтинг: 0 / 0
db2 i/o
    #39314856
dbtwoshnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверно надо сначала изучить что-то похожее на:
https://www.psce.com/blog/2012/04/18/analyzing-io-performance/
...
Рейтинг: 0 / 0
db2 i/o
    #39314859
dbtwoshnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
zpool status 
  pool: crucial
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        crucial     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            sde7    ONLINE       0     0     0
            sdf7    ONLINE       0     0     0

errors: No known data errors

  pool: data
 state: ONLINE
  scan: scrub canceled on Sat Sep 17 17:05:46 2016
config:

        NAME           STATE     READ WRITE CKSUM
        data           ONLINE       0     0     0
          mirror-0     ONLINE       0     0     0
            sda        ONLINE       0     0     0
            sdb        ONLINE       0     0     0
          mirror-1     ONLINE       0     0     0
            sdc        ONLINE       0     0     0
            sdd        ONLINE       0     0     0
        logs
          mirror-2     ONLINE       0     0     0
            nvme0n1p2  ONLINE       0     0     0
            nvme1n1p2  ONLINE       0     0     0
        cache
          nvme0n1p3    ONLINE       0     0     0
          nvme1n1p3    ONLINE       0     0     0

errors: No known data errors

  pool: nvram
 state: ONLINE                                                                                                                                                                                                                              
  scan: none requested                                                                                                                                                                                                                      
config:                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                            
        NAME           STATE     READ WRITE CKSUM                                                                                                                                                                                           
        nvram          ONLINE       0     0     0                                                                                                                                                                                           
          mirror-0     ONLINE       0     0     0                                                                                                                                                                                           
            nvme0n1p5  ONLINE       0     0     0                                                                                                                                                                                           
            nvme1n1p5  ONLINE       0     0     0   
...
Рейтинг: 0 / 0
db2 i/o
    #39315107
dbtwoshnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При холодном L2ARC рандомное чтение с дисков, как мне кажется, в таком конфиге не может быть быстрее 3MB/sec :)

Рассчитывается примерно так:

1 SAS HDD дает около 200 random IOPS

Их четыре штуки ...

Так что получается: 4HDD * 200 IOPs/HDD * 4KB/IOP = 3200 KB/sec при абсолютно рандомном чтении

Понятно, что при последовательном намного быстрее, после прогрева L2ARC рандомные чтения работают быстрее в сотни раз.

Но вот ведь какая проблема! У организации на данный момент нет $40 USD :) для апгрейда RAM DDR2 ECC на файлере с 16GB до 32 GB для наращивания таблицы заголовков L2ARC. Хотя в другой момент времени нашлось на несколько очень быстрых nvram SSD, но ведь все запчасти сразу предусмотреть очень трудно.

Так что L2ARC ограничен 128GB, хотя мог бы быть в несколько раз больше и полностью вмещать в себя все базы и соответственно ускорить рандомные чтения в сотни раз, ну или пока хотя бы до пропускной способности Ethernet, но ведь второй Ethernet кабель кинуть недолго.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / db2 i/o
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]