Oracle mechanics

09.09.2012

Параметры fast_start_parallel_rollback и parallel_max_servers

Filed under: commonplace,Oracle,parameters,PX — Игорь Усольцев @ 14:07
Tags: , ,

Во время восстановления принудительно терминированной транзакции (без рестарта инстанса) обратил внимание, что SMON задействовал все имеющиеся в системе PX slaves процессы и текущие ресурсоёмкие операции вынуждены были некоторое время выполняться в непараллельном режиме

При этом общее количество параллельных процессов было ограничено значением:

11.2.0.3@ SQL> show spparameter parallel_max_servers

SID      NAME                          TYPE        VALUE
-------- ----------------------------- ----------- ---------
*        parallel_max_servers          integer     36

, что,  казалось бы, не слишком мало

При параллельном восстановлении число выделяемых процессов ограничивается параметром FAST_START_PARALLEL_ROLLBACK, который при значении LOW (по умолчанию)

  • Limits the maximum degree of parallelism to 2 * CPU_COUNT

а для 2-процессорного Xeon E5645 (с гипертредингом) сервера Oracle устанавливает:

SQL> show parameter cpu_count

NAME                                 TYPE        VALUE
------------------------------------ ----------- -----
cpu_count                            integer     24

т.е. фактически в системе FAST_START_PARALLEL_ROLLBACK = 48 — а значит parallel_max_servers нужно устанавливать как минимум:

cpu_count * 2 + N (несколько PX про запас)

Либо отключать параллельное восстановление FAST_START_PARALLEL_ROLLBACK = FALSE, поскольку у параметра нет никаких других (VERY LOW?) доступных значений, а логическое значение LOW никак не учитывает общее кол-во доступных PX процессов

Есть, конечно, вариант не ограничивать вручную parallel_max_servers, однако автоматически Oracle это делает достаточно оптимистично.

Например, на аналогичном сервере с параметрами:

parallel_threads_per_cpu  = 2
cpu_count                 = 24
pga_aggregate_target      = 1G
sga_target                = 9G
processes                 = 150

автоматически параметр согласно документации до версии 11.2.0.2 должен был быть установлен по формуле:

PARALLEL_MAX_SERVERS = PARALLEL_THREADS_PER_CPU * CPU_COUNT * CONCURRENT_PARALLEL_USERS * 5

PARALLEL_MAX_SERVERS = 2 * 24 * 4 * 5 = 960

а после корректировки New Default Value of PARALLEL_MAX_SERVERS in Release 11.2.0.2 [ID 1377411.1]

parallel_max_servers = min( processes-15 , 960 ) = 135

что можно проверить на практике:

SQL> show parameter parallel_max_servers

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
parallel_max_servers                 integer                           135

Но 135 одновременно работающих параллельных процессов также может быть слишком большим значением для production системы

1 комментарий »

  1. ещё один практический пример: при установленном fast_start_parallel_rollback=HIGH

    11.2.@SYS SQL> @param
    
    NAME                          VALUE
    ----------------------------- -----
    fast_start_parallel_rollback  HIGH 
    parallel_max_servers          36   
    cpu_count                     16   

    после «убийства» сессии, выполнявшей транзакцию, SMON для выполнения parallel rollback запрашивает fast_start_parallel_rollback * 4 = 64 PX Slave процесса, и получает/занимает все 36 имеющиеся:

    SQL> select req_degree, count(*) as px_rollback_degree
      2    from v$px_session
      3   where qcsid = (select sid from v$session where program like '%SMON%')
      4     and sid <> qcsid
      5   group by req_degree
      6  /
    
    REQ_DEGREE PX_ROLLBACK_DEGREE
    ---------- ------------------
            64                 36

    комментарий от Igor Usoltsev — 17.10.2012 @ 12:01 | Ответить


RSS feed for comments on this post. TrackBack URI

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

Создайте бесплатный сайт или блог на WordPress.com.

%d такие блоггеры, как: