Temat: oracle benchmarks

Mam małą zagwozdkę związaną z estymacją sprzętu pod bazę dla aplikacji i prosiłbym o wszelkie sugestie.
Czy istnieje jakiś obiektywny sposób żeby stwierdzić, że na tej klasie sprzętu przy tylu aktywnych sesjach aplikacja będzie działała sprawnie (przede wszystkim chodzi mi o operacje dyskowe i procesory)? Jeżeli robicie takie benchmarki, to czym się kierujecie? Liczbą IOPS, MB/s (a co z procesorami?)? Jeżeli iops, to wyciągane z AWRa, czy lepiej jednak użyć np. nmona, albo może oriona (przy testowym pełnym obciążeniu bazy)?
A co z estymacją liczby aktywnych sesji? Robić test obciążenia dla 5 sesji, później dla 10 sesji i wyciągać z tego wnioski, że dla 1000 liczba IOPS powinna być taka?
Druga sprawa - narzędzia. Jakoś intuicja mi podpowiada, że całkiem złym tropem idę, ale mam nadzieję naprostujecie. W pierwszej chwili pomyślałem o Database Replay (ściągnąć obciążenie od klienta, zapuścić na "wzorcowym" sprzęci i odnosić się do tego), jednak problemem jest oczywiście licencja, więc z tego pomysłu nici (nie doczytałem nawet czy można tam dublować obciążenie - estymacja wzrostu aktywnych sesji). Z darmowych narzędzi nieźle się zapowiadał Swingbench, ale sam nie dam rady napisać porządnych testów, nawet pewnie developerzy nie byliby w stanie odwzorować wszystkich kliknięć w aplikacji, logowań itp.
No jak dla mnie ciężki temat więc za wszelkie uwagi/doświadczenia będę wdzięczny.

konto usunięte

Temat: oracle benchmarks

Aleksander Mathias:
No jak dla mnie ciężki temat więc za wszelkie uwagi/doświadczenia będę wdzięczny.

Żart: Zaproponuj najdroższy i najszybszy sprzęt. A jak to nie pomoże, to zwal winę na deweloperów :)

konto usunięte

Temat: oracle benchmarks

Gdzieś wyczytałem, że Database Replay możesz używać przez 30 dni.
Zapoznaj się z dokumentem Oracle® Database Licensing Information 11gRelease 2 (11.2).

W Twoim przypadku najlepszy byłby Replay. Na bazie źródłowej robisz "Capture" a potem odtwarzasz na docelowej konfiguracji.

Temat: oracle benchmarks

A aplikacja juz istnieje ? Jesli masz aplikacje to mozesz znalesc troche narzedzi ktore
pozwalaja symulowac prace userow - najlepiej webowych ale nie tylko - narzedzia sa komercyjne - np. load runner albo darmowe np. grinder.

Jesli aplikacji nie ma - no to swingbench pomoze Ci oszacowac ile transakcji OLTP / DSS (wg. TPC) mozesz wyciagnac a potem pytasz jakiegos madrego architekta czy to wystarczy czy nie ;)
Z doswiadczenia wiem ze potem zaczyna sie spychologia bo aplikacja napisana dziala zupelnie inaczej a wtedy to juz za rada Krzyska zwalasz wine na devow lub architektow - a sam szybko dogadujesz sie z dostawca nowego sprzetu ;)

Marcin

Temat: oracle benchmarks

Też poszukuję takiego rozwiązania. Niestety nie mam EE i database replay odpada :( Czy przypadkiem Quest Fogliht nie ma takiej funkcjonalności?

Temat: oracle benchmarks

Dzięki za podpowiedzi. Marcin, tak zdaję sobie sprawę, że jednak wygenerowane obciążenie jest całkiem inne niż to przy normalnej pracy userów i 100% później będzie spychologia :). Aplikacja już istnieje więc zobaczę te narzędzia, które zaproponowałeś. Tylko jeszcze pytanie jak analizować wyniki tych testów, bo wynikiem będą czasy wykonania testów dla dajmy na to 100 userów, 1000 userów i 10000 userów, no ale jak to przełożyć na wymagania sprzętowe? Co obserwować? Jeżeli pod spodem mam 4 procki, macierz z 16 dyskami w RAIDzie 10, to wszystkie testy będą się odnosiły do tego sprzętu. Dla 10000 userów czas wykonania wzrośnie 15x względnie pierwszego testu z setką userów, ale jak przewidzieć, że dokładając do macierzy kolejne 48 dysków już czas będzie krótszy o 10x, albo dokładając 2 procesory coś tam się nam skróci?! Przy testach na pewno zauważę co jest obciążona i to pewnie będą dyski - obciążenie 100%, ale jak z tego wyciągać wnioski?
Swoją drogą jakaś podpowiedź o widokach w bazie które pokażą mi liczbę IOPS, albo coś w tym stylu? Na AWRze mam przybliżoną liczbę operacji, ale jak to sprawdzić w czasie rzeczywistym?
Tomasz, z tego co mi wiadomo to samo EE nie wystarczy żeby mieć replay'a (to po rozmowie z handlowcem Oracle'a, a dzisiaj jeszcze sprawdzę w docu od licencjonowania.

Temat: oracle benchmarks

Real Application Testing to opcja dodatkowa do EE. Ale ja nie mam EE więc muszę szukać czegoś innego.

Temat: oracle benchmarks

Aleksander Mathias:
Dzięki za podpowiedzi. Marcin, tak zdaję sobie sprawę, że jednak wygenerowane obciążenie jest całkiem inne niż to przy normalnej pracy userów i 100% później będzie spychologia :). Aplikacja już istnieje więc zobaczę te narzędzia, które zaproponowałeś. Tylko jeszcze pytanie jak analizować wyniki tych testów, bo wynikiem będą czasy wykonania testów dla dajmy na to 100 userów, 1000 userów i 10000 userów, no ale jak to przełożyć na wymagania sprzętowe? Co obserwować? Jeżeli pod
...

Popatrz na system operacyjny - narzedzia jak sar, top, iostat
sa tu bardzo pomocne. Zrob sobie model systemu - pamietajac o nieliniowym jego charakterze - najlepiej jakies M/M/1 i no i potem mozesz probowac cos symulowac. Np jesli zwiekszysz liczbe IO do 80 % max IOPS czy przewidywany czas odpowiedzi bedzie jeszcze akceptowalny.

10000 userow aktywnych na bazie ? no to 10 dyskow Ci raczej nie wystarczy ;) no chyba ze tylko zalogowanych userow ;)

Poszukaj informacji o capacity planning
Tu warto zajrzec -
http://amazon.com/Optimizing-Oracle-Performance-Cary-M... - Rozdzial - quening theory for Oracle

moze tez i tu
http://www.amazon.com/Forecasting-Oracle-Performance-C...

ale ta ksiazka lezy juz dlugo w kolejce to poczytania
Swoją drogą jakaś podpowiedź o widokach w bazie które pokażą mi liczbę IOPS, albo coś w tym stylu? Na AWRze mam przybliżoną liczbę operacji, ale jak to sprawdzić w czasie rzeczywistym?

AWR ma liczbe operacji dyskowych i CPU w kazdym snapshocie - w powinenes bazowac na tym - po co Ci czas rzeczywisty ? generalnie capacity planning polega na zabawie duza iloscia danych zebranych w histori i szukaniu trendow ;)

Aaa poczytaj tez o SLOB http://kevinclosson.wordpress.com/2012/02/06/introduci... - to taki prosty benchmark ale pomoze Ci okreslic czy liczba CPU do liczby dyskow jest wystarczajaca

pozdrawiam,
Marcin

Temat: oracle benchmarks

Marcin, wielkie dzięki!!
Przemysław B.

Przemysław B. Unix and Storage
Systems
Administrator, CMC
Markets

Temat: oracle benchmarks

Aleksander Mathias:
Dzięki za podpowiedzi. Marcin, tak zdaję sobie sprawę, że jednak wygenerowane obciążenie jest całkiem inne niż to przy normalnej pracy userów i 100% później będzie spychologia :). Aplikacja już istnieje więc zobaczę te narzędzia, które zaproponowałeś. Tylko jeszcze pytanie jak analizować wyniki tych testów, bo wynikiem będą czasy wykonania testów dla dajmy na to 100 userów, 1000 userów i 10000 userów, no ale jak to przełożyć na wymagania sprzętowe?

Nie wybrałeś łatwego tematu więc nie ma łatwej odpowiedzi ;-)
Jeśli rzeczywiście chcesz to zrobić bardzo dokładnie to chyba nie obędzie się
bez Database Replay. Myślę, że warto zrobić mały research czy, jak pisał Bartosz,
można tego używać przez jakiś czas for free.

>Co obserwować? Jeżeli pod
spodem mam 4 procki, macierz z 16 dyskami w RAIDzie 10, to wszystkie testy będą się odnosiły do tego sprzętu. Dla 10000 userów czas wykonania wzrośnie 15x względnie pierwszego testu z setką userów, ale jak przewidzieć, że dokładając do macierzy kolejne 48 dysków już czas będzie krótszy o 10x, albo dokładając 2 procesory coś tam się nam skróci?!

IMHO nie nastawiałbym się na wyciągnięcie takich łatwych wniosków.
Tak jak Marcin pisał, systemy się skalują ale nie liniowo.
Jeśli w aplikacji/systemie będzie miał np.: lock contention
to żadnego zasobu nie będziesz miał wysyconego a i tak system nie będzie
działał szybko.
Przy testach na pewno zauważę co jest obciążona i to pewnie będą dyski - obciążenie 100%, ale jak z tego wyciągać wnioski?

Wniosek jest jeden: że dyski są obciążone w 100%. Koniec. Kropka. ;-)
Pytanie co z taką informacją teraz zrobisz.
Czy chcesz zmniejszyć ich obciążenie ? Jeśli tak to na czym storage spędza najwięcej czasu: odczyty czy zapisy ? Jeśli odczyty to ...(pewna ścieżka działania)... a jesli zapisy to ...(inna ścieżka działania)...
Diabeł tkwi w szczegółach.
Swoją drogą jakaś podpowiedź o widokach w bazie które pokażą mi liczbę IOPS, albo coś w tym stylu? Na AWRze mam przybliżoną liczbę operacji, ale jak to sprawdzić w czasie rzeczywistym?
Tomasz, z tego co mi wiadomo to samo EE nie wystarczy żeby mieć replay'a (to po rozmowie z handlowcem Oracle'a, a dzisiaj jeszcze sprawdzę w docu od licencjonowania.

Albo spróbujesz podejść całościowo (np. Database Replay, HP Load Runner - osobiście nie używałem) albo spróbujesz testować poszczególne komponenty (storage, CPU, itp).

Jeśli chodzi o CPU to chłopaki już pisali co można używać (SLOB, swingbench). Wspomnę jeszcze o Hammerora. Na przykładzie tego ostatniego (używaliśmy go) powiem, że jeśli nie masz warunków i możliwości niekoniecznie musisz testować całość. Innymi słowy: lepszy rydz niż nic ;-) W naszym przypadku nie mieliśmy możliwości przetestować całości aplikacji przenosząc ją na inną platformę więc wybraliśmy ten element aplikacji, który jest najistotniejszy dla wydajności (u nas np.: składanie zamówień bo dzięki nim business się kręci ;-)) i ten element testowaliśmy do bólu bo on był dla nas najważniejszy. Dobrze by było określić najbardziej priorytetowy element aplikacji i jego testować. Hammerora u nas się sprawdził przy generowaniu zamówień ale przy innych elementach niekoniecznie.
Oczywiście zamiast 'Hammerora' można wstawić SLOB, Swingbench itp. O ile dobrze pamiętam Swingbench też ma opcje OLTP, DW i można sobie dobrać to co jest najbliższe Twojej aplikacji.

Jeśli chodzi o storage benchmarking to jest wiele różnych opcji (znacznie więcej niż przy testowaniu CPU) ale osobiście polecam parę Vdbench + Swing (sam używam regularnie zwłaszcza vdbencha).
Swing pozwala nagrać produkcyjne (real life) obciążenie (na poziomie OS-a) a vdbench pozwala je odtworzyć na innym systemie (oczywiście traktuje ten storage jako raw bo musi wszyskie seek-i również odtworzyć tak więc raczej rób test na pustym storage). Również jeśli chcesz sprawdzić jak się zachowa storage gdy zwiększysz obciążenie to po prostu zwiększasz jeden parametr (np. x2) i wtedy vdbench próbuje to samo odtworzyć ale dwa razy szybciej (a Ty w tym czasie obserwujesz dyski). Polecam.

Generalnie jeśli nie jestem w stanie przetestować całości to staram się wybrać najważniejszy element aplikacji i spróbować znaleźć narzędzie, które jest (w sensie testów) _najbliżej_ temu elementowi. W większości przypadków do działa.

Następna dyskusja:

Oracle Application Server




Wyślij zaproszenie do