Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 ПОдключение процессоров на лету и Oracle PQ  [new]
@Alex
Member

Откуда:
Сообщений: 145
Добрый день

Ситуация, Oracle 9.2.0.7 ЕЕ, HP-UX. На ходу подключаются 2 резервных CPU. Instance не перегружается. show parameters cpu_count показывает старое значение. Кто-нибудь сталкивался с коллизиями parallel query при таком раскладе ?
1 июн 06, 18:12    [2731702]     Ответить | Цитировать Сообщить модератору
 Re: ПОдключение процессоров на лету и Oracle PQ  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Какие могут быть коллизии?
CPU_COUNT используется для вычисления значений других параметров инициализации (например SPIN_COUNT, PARALLEL_MAX_SERVERS и т.д.)
Но даже на одном процессоре можно выполнять параллельные запросы (хоть зачастую и бессмысленно -- как правило будет только хуже)
prg> select substr(name, 1, 20), substr(value, 1, 10), isdefault
  2  from v$parameter where name in ('cpu_count', 'parallel_max_servers');

SUBSTR(NAME,1,20)    SUBSTR(VAL ISDEFAULT
-------------------- ---------- ---------
cpu_count            1          TRUE
parallel_max_servers 5          TRUE

prg> create table t1 partition by range(owner) (
  2  partition p1 values less than('K'),
  3  partition p2 values less than(maxvalue)
  4  ) parallel
  5  as select * from all_objects;

Table created.

prg> explain plan for select count(*) from t1;

Explained.

prg> @?\rdbms\admin\utlxplp

Plan Table
------------------------------------------------------------------------------------------------------------
| Operation                  |  Name    |  Rows | Bytes|  Cost  |  TQ  |IN-OUT| PQ Distrib | Pstart| Pstop |
------------------------------------------------------------------------------------------------------------
| SELECT STATEMENT           |          |     1 |      |     82 |      |      |            |       |       |
|  SORT AGGREGATE            |          |     1 |      |        |      |      |            |       |       |
|   SORT AGGREGATE           |          |     1 |      |        | 8,00 | P->S | QC (RANDOM)|       |       |
|    PARTITION RANGE ALL     |          |       |      |        | 8,00 | PCWP |            |     1 |     2 |
|     TABLE ACCESS FULL      |T1        |    96K|      |     82 | 8,00 | PCWP |            |     1 |     2 |
------------------------------------------------------------------------------------------------------------

8 rows selected.
А распределением процессоров под процессы все равно занимается ОС

Самая большая задница в том, что CPU_COUNT не отражает истинного количества процессов произойдет тогда, когда изначально CPU_COUNT=1. В этом случае SPIN_COUNT обнуляется (ну кто может освободить защелку если мы займем единственный процессор) и как следствие получаем кучу переключений контекста
2 июн 06, 03:50    [2732720]     Ответить | Цитировать Сообщить модератору
 Re: ПОдключение процессоров на лету и Oracle PQ  [new]
@Alex
Member

Откуда:
Сообщений: 145
Однако запросы с хинтами parallel при подключении доп. CPU на лету арботают медленнее. Не могу пока объяснить почему, надо идти в ночь к клиенту, но включение замедляет таботу процесса который использует PQ
5 июн 06, 10:59    [2740252]     Ответить | Цитировать Сообщить модератору
 Re: ПОдключение процессоров на лету и Oracle PQ  [new]
@Alex
Member

Откуда:
Сообщений: 145
На 8i такого эффекта не было ...
5 июн 06, 11:02    [2740258]     Ответить | Цитировать Сообщить модератору
 Re: ПОдключение процессоров на лету и Oracle PQ  [new]
EugeneS
Member

Откуда:
Сообщений: 1255
Собственно с HP я уже давно не работаю, но вот несколько мыслей.

- Разве это не тема для открытия TAR-а на Металинке
- Просто ползая по Металинку когда-то попадались ссылики на баги именно по этой тематике.
5 июн 06, 11:59    [2740475]     Ответить | Цитировать Сообщить модератору
 Re: ПОдключение процессоров на лету и Oracle PQ  [new]
@Alex
Member

Откуда:
Сообщений: 145
Ну собственно по металинку я уже копаюсь на эту тему, а TAR не могу. Так как там наша апликация, но поддержка ORACLE не наша. При заполненнии TAR надо указать CSI того клиента иными словами TAR будут заполнять те кто поддерживает ORACLE ....
5 июн 06, 13:30    [2740888]     Ответить | Цитировать Сообщить модератору
 Re: ПОдключение процессоров на лету и Oracle PQ  [new]
RA\/EN
Member

Откуда:
Сообщений: 3658
Вячеслав Любомудров

Самая большая задница в том, что CPU_COUNT не отражает истинного количества процессов произойдет тогда, когда изначально CPU_COUNT=1. В этом случае SPIN_COUNT обнуляется (ну кто может освободить защелку если мы займем единственный процессор) и как следствие получаем кучу переключений контекста


А лучше 2000 раз в активной нити, не освобождая процессор, попытаться получить защелку, которую гарантированно никто не отпустит, т.к. проц занят текущей нитью, и потом уйти в тот же sleep?
Или между попытками схавать защелку оракл делает вызов (забыл функцию), позволяющей системе переключится в следующюу нить, ждущую выполнения?
Ввиду отсутствия нитей в оракле для многих ОС, думаю, что на однопроцессорном компе поведение оракла правильное.

P.S. Не помню, где вычитал, но пользую - ставить CPU_COUNT=число процессоров+1.
5 июн 06, 13:56    [2741030]     Ответить | Цитировать Сообщить модератору
 Re: ПОдключение процессоров на лету и Oracle PQ  [new]
Alex Roudnev
Member

Откуда: Валнут Крик, Калифорния
Сообщений: 5547
Как правило, защелки ставят на 10 - 20 операторов процессора (поставили, поменяли флаг, и сняли), и потому и был придуман SPIN_COUNT, чтобы система не тратила время на переключения контекстов там, где это не актуально. Даже 2000 раз _попытаться получить_ может быть эффективнее, чем сразу _уйти на ожидание_ (это будет всяко больше 2000 машинных команд).


RA\/EN
Вячеслав Любомудров

Самая большая задница в том, что CPU_COUNT не отражает истинного количества процессов произойдет тогда, когда изначально CPU_COUNT=1. В этом случае SPIN_COUNT обнуляется (ну кто может освободить защелку если мы займем единственный процессор) и как следствие получаем кучу переключений контекста


А лучше 2000 раз в активной нити, не освобождая процессор, попытаться получить защелку, которую гарантированно никто не отпустит, т.к. проц занят текущей нитью, и потом уйти в тот же sleep?
Или между попытками схавать защелку оракл делает вызов (забыл функцию), позволяющей системе переключится в следующюу нить, ждущую выполнения?
Ввиду отсутствия нитей в оракле для многих ОС, думаю, что на однопроцессорном компе поведение оракла правильное.

P.S. Не помню, где вычитал, но пользую - ставить CPU_COUNT=число процессоров+1.
5 июн 06, 23:01    [2743239]     Ответить | Цитировать Сообщить модератору
 Re: ПОдключение процессоров на лету и Oracle PQ  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
RA\/EN
Вячеслав Любомудров

Самая большая задница в том, что CPU_COUNT не отражает истинного количества процессов произойдет тогда, когда изначально CPU_COUNT=1. В этом случае SPIN_COUNT обнуляется (ну кто может освободить защелку если мы займем единственный процессор) и как следствие получаем кучу переключений контекста


А лучше 2000 раз в активной нити, не освобождая процессор, попытаться получить защелку, которую гарантированно никто не отпустит, т.к. проц занят текущей нитью, и потом уйти в тот же sleep?
Или между попытками схавать защелку оракл делает вызов (забыл функцию), позволяющей системе переключится в следующюу нить, ждущую выполнения?
Ввиду отсутствия нитей в оракле для многих ОС, думаю, что на однопроцессорном компе поведение оракла правильное.

P.S. Не помню, где вычитал, но пользую - ставить CPU_COUNT=число процессоров+1.
Я написал что-то другое?

Alex, объясни мне тупому, вот эту фразу:
Alex Roudnev
Даже 2000 раз _попытаться получить_ может быть эффективнее, чем сразу _уйти на ожидание_ (это будет всяко больше 2000 машинных команд).
Кто в однопроцессорной тачки освободит ту самую защелку -- только невыполняющийся в данный момент процесс. И все равно нужно передать ему управление.
6 июн 06, 04:35    [2743460]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить