| formula.queue.maxage |
h |
24 |
Tak |
Maksymalna liczba godzin przechowywania historii
kolejki wyrażeń. Czyszczone są tylko uruchomione wyrażenia.
Jest to przeprowadzane z użyciem formuły. |
Uruchomione pozycje są pozostawiane z uwagi na
statystyki wyrażeń
() i sprawdzanie pętli wartościowań. Przy
wartościowaniu pętli można w konfiguracjach o dużej przepustowości zmniejszyć
tę liczbę, aby ograniczyć wielkość tabeli. |
| formula.queue.maxsize |
pozycje |
500 000 |
Tak |
Maksymalna liczba pozycji w kolejce wyrażeń. Zadanie
czyszczenia powinno utrzymywać liczbę pozycji niższą od podanej,
przeprowadzając czyszczenie historii. Czyszczone są tylko uruchomione wyrażenia.
To ustawienie przesłania ustawienie maxage. |
Z uwagi na poprawę wydajności można przeprowadzić
strojenie tej wartości, tak aby ograniczyć wielkość historii kolejki w okresach
wysokich obciążeń i zachować historię w pozostałych okresach. Dobrym przybliżeniem tej
liczby jest wartość nieco poniżej średniej przepustowości w okresie
zdefiniowanym w ustawieniu maxage. |
| formula.execution.batch.size |
pozycje |
30 |
Tak |
Liczba pozycji kolejki wyrażeń przydzielonych do
jednego wątku w każdym uruchomieniu przydziału. Pozycje zostają oznaczone jako
rozpoczęte i wątek zostaje uruchomiony i zakończony przed przydzieleniem nowego
zadania wsadowego. |
Wyrażenia są uruchamiane współbieżnie
w kilku wątkach na kilku węzłach równocześnie, ale zawsze w
kolejności chronologicznej z uwzględnieniem zależności. Jeśli dwa wyrażenia w kolejce nie są powiązane,
mogą zostać uruchomione w innej kolejności niż zostały dodane. Pozycje wyrażeń
mogą zależeć od wartości innej pozycji. Pozycja wyrażenia może nie
zostać uruchomiona, jeśli instancja pozycji (wartość, od której jest
uzależniona pozycja wyrażenia) nie zostanie uruchomiona przed wyrażeniem.
Takie działanie oraz
współbieżność wymagają przydzielania w celu uniknięcia kolizji, niespójnej
kolejności i nadmiarowej pracy. Przydzielanie jest kosztowne, więc kilka
wyrażeń jest przydzielanych jednocześnie z powyższym wymaganiem i warunkiem
ich uruchomienia w podanej kolejności. Jeśli zostanie przydzielonych wiele
wyrażeń, nakład pracy związany z przydziałem jest rezerwowany, ale to „blokuje”
współbieżność (i odwrotnie). Ogólną zasadą jest zmniejszanie tej wartości,
jeśli wyrażenia tworzą długie łańcuchy zależności, i zwiększanie w przypadku
krótkich wyrażeń lub małej liczby zależności. Wartość tę można zmienić w czasie wykonywania i dlatego należy przeprowadzać
jej strojenie, dopóki nie zostanie znaleziona odpowiednia wartość optymalna. Wartości mniejsze niż 10 lub większe od 200 rzadko są optymalne. |
| formula.cleanup.interval |
ms |
1 800 000 |
Nie |
Częstotliwość czyszczenia kolejki wyrażeń. Wymuszane
są tu ustawienia maxage i maxsize. Przeprowadzane jest jedynie czyszczenie
kolejki. Pierwsza operacja czyszczenia następuje w momencie uruchamiania
serwera i wtedy wykonywana jest specjalna konserwacja. Ponadto co dwa tygodnie
przeprowadzane jest sprawdzenie integralności wyrażenia licznika czasu (w
nocy). |
Większość wartości domyślnych czasu jest
uzasadniona.
Jeśli przepustowość jest wysoka, operacja czyszczenia trwa dłużej, ale powinna
być przeprowadzana częściej (i odwrotnie). Z uwagi na to należy unikać
zbytniego zwiększania tego czasu, ponieważ może prowadzić to do przestojów
wykonywania i spadku wydajności, jeśli nagle obciążenie zostanie znacznie
zwiększone (na przykład po imporcie lub dodaniu atrybutu). |
| formula.background.interval |
ms |
10 000 |
Nie |
Częstotliwość sprawdzania w kolejce wyrażeń nowych
nieprzydzielonych wyrażeń do uruchomienia. Po zakończeniu zadania wsadowego
nowe sprawdzanie jest przeprowadzane natychmiast, bez oczekiwania przez zadany
czas.
Jeśli kolejka nie została „przetworzona” przed nadejściem następnego odstępu
czasu, tworzony jest proces nowego wątku roboczego w celu podwojenia nakładu
pracy. |
We wcześniejszych wersjach produktu
Rational Focal Point
wykonywanie było asynchroniczne i natychmiastowe. Gdy wyrażenie było
przenoszone do bazy danych, nie było to możliwe bez ryzyka zakleszczeń.
Jest to odstęp czasu, w którym w kolejce wyrażeń są sprawdzane nowe wyrażenia
do uruchomienia, to jest maksymalny czas (plus czas wykonywania), przez jaki
użytkownik musi czekać na uruchomienie wyrażenia. Jeśli odstęp czasu jest za
krótki, operacja ta niepotrzebnie zużywa zasoby. Wpływa to również na
skalowanie współbieżności: jeśli wątek roboczy uruchomiony w poprzednim
odstępie czasu nie został w nim zakończony, zostaje uruchomiony również inny
wątek (aż do osiągnięcia wartości thread.per.nodes). Jeśli tempo skalowania
jest niskie, można obniżyć tę liczbę. Jeśli wyrażenia są rzadko używane,
można ją nieco zwiększyć. |
| formula.max.background.threads.per.node |
count |
2 |
Nie |
Maksymalna liczba współbieżnych wątków
uruchamiających wyrażenia dla każdego węzła. Rzeczywista maksymalna liczba jest
dynamicznie uzależniona od tego, czy istnieją wolne wątki w puli wątków
aplikacji. |
Skalowanie współbieżności opisane w ustawieniu
background.interval zwiększa liczbę wątków wartościowania wyrażenia w węźle w
każdym odstępie czasu, jeśli jest więcej pracy do wykonania. Należy pamiętać,
że to jest wartość maksymalna. Wymagane są wolne wątki w puli wątków aplikacji,
a ich liczba jest automatycznie strojona z uwagi na liczbę rdzeni (wirtualnych
lub rzeczywistych). Istnieje również ograniczenie nakazujące nie zużywać
ostatniego wątku w puli. Użytkownik może eksperymentować z tą liczbą, ponieważ
nie przerywa ona żadnej operacji. Nie jest gwarantowana lepsza wydajność,
ponieważ zależy ona przede wszystkim od koniecznych do utrzymywania zdolności
do współbieżności bazy danych. Jeśli w kolejce częściej znajdują się wyrażenia,
które nie zostały wartościowane, oznacza to, że wartość ta jest zbyt niska. |
| formula.cleanup.enabled |
wartość boolowska |
true |
Tak |
Czyszczenie kolejki wyrażeń jest domyślnie włączone. Nie
należy wyłączać tej operacji. Wyjątkiem są cele związane z debugowaniem lub
uruchamianiem pomiarów wydajności, gdy należy wykluczyć czyszczenie. |
Tego ustawienia nie należy dostrajać ani zmieniać,
należy zostawić wartość domyślną true. |