
W homecloud nie znajdziemy konkretnych pakietów, ponieważ sami decydujemy z czego korzystamy. My przygotowaliśmy trzy przykładowe konfiguracje serwerów Pro Cloud i sprawdziliśmy jak różnią się wydajnością. Konfiguracje naszych testowych serwerów Pro Cloud przedstawiamy poniżej.
Serwer-1 | Serwer-2 | Serwer-3 | |
Liczba rdzeni | 1 | 2 | 4 |
Częstotliwość CPU | 1000 MHz | 2000 MHz | 2000 MHz |
Miejsce na dysku | 40 GB | 40 GB | 40 GB |
Pamięć RAM | 1024 MB | 2048 MB | 4096 MB |
Pełna wirtualizacja | Nie | Nie | Nie |
Autoskalowanie | Nie | Nie | Nie |
Przepustowość | 100 Mb/s | 100 Mb/s | 100 Mb/s |
Ilość adresów IPv4 | 1 | 1 | 1 |
Szacunkowy koszt za miesiąc (netto) | 54,72 zł | 100,80 zł | 181.44 zł |
Na każdym serwerze zainstalowany został system CentOS w wersji 6, architektura X86_64. Dodatkowo zainstalowaliśmy Apache 2.2.15, MySQL 5.1.73 oraz PHP 5.3.3. Środowisko graficzne KDE zostało zainstalowane na końcu, gdy było to niezbędne. Jako stronę testową wykorzystaliśmy WordPress z domyślnym stylem. Wyniki są uśrednione, ponieważ wykonywaliśmy kilka pomiarów w różnych godzinach.
UnixBench
Pierwszy test wykonaliśmy z użyciem UnixBench, jest to popularne narzędzie do testowania wydajności komputerów z systemem Linux. UnixBench wykonuje automatycznie kilka pomiarów, bez potrzeby definiowania parametrów lub zmieniania ustawień.
Poniżej zamieściliśmy listę testów, które zostały wykonane podczas pracy narzędzia:
- Dhrystone 2 using register variables – zestaw instrukcji testujących operacje na liczbach stałoprzecinkowych
- Double-Precision Whetstone – podobnie jak powyżej, jednak w tym przypadku testowane są operacje na liczbach zmiennoprzecinkowych
- Execl Throughput – sprawdzenie maksymalnej ilości wywołań execl w ciągu sekundy
- File Copy 1024/256/4096 bufsize 2000/500/8000 – kopiowanie plików o różnych wielkościach przy różnych rozmiarach bufora
- Pipe Throughput – sprawdzanie ile razy w ciągu sekundy da się zapisać i odczytać próbkę o wielkości 512 bitów do określonego kanału komunikacyjnego
- Pipe-based Context Switching - mierzy ile razy dwa procesy mogą wymienić się inkrementowaną liczbą całkowitą poprzez określony kanał komunikacyjny w ciągu sekundy
- Process Creation – test ile procesów można utworzyć i zabić w określonym czasie
- Shell Scripts (1/8 concurrent) – sprawdzenie ile skryptów shell serwer może uruchomić i zamknąć w czasie jednej minuty
- System Call Overhead – szacuje czas potrzebny na wejście i opuszczenie jądra systemu poprzez ciągłe wywoływanie funkcji pobierającej numer procesu
[punkty] więcej = lepiej
Dhrystone 2 using register variables | ![]() ![]() ![]() |
Double-Precision Whetstone | ![]() ![]() ![]() |
Execl Throughput | ![]() ![]() ![]() |
File Copy 1024 bufsize 2000 maxblocks | ![]() ![]() ![]() |
File Copy 256 bufsize 500 maxblocks | ![]() ![]() ![]() |
File Copy 4096 bufsize 8000 maxblocks | ![]() ![]() ![]() |
Pipe Throughput | ![]() ![]() ![]() |
Pipe-based Context Switching | ![]() ![]() ![]() |
Process Creation | ![]() ![]() ![]() |
Shell Scripts (1 concurrent) | ![]() ![]() ![]() |
Shell Scripts (8 concurrent) | ![]() ![]() ![]() |
System Call Overhead | ![]() ![]() ![]() |
Wynik ogólny | ![]() ![]() ![]() |
![]() ![]() ![]() |
Tak jak można było się spodziewać, serwer o najmocniejsze konfiguracji osiągnął w przypadku większości testów najwyższe wyniki. Różnice pomiędzy serwerami są znaczne.
ApacheBench
ApacheBench zostało stworzone do wykonywania testów wydajnościowych serwerów HTTP. Jego zadaniem jest wydawanie powtarzających się żądań do określonego serwera. Nazwa może sugerować, że jest przeznaczony wyłącznie do testowania serwera Apache, jednak bezproblemowo możemy sprawdzić inne rozwiązania.
Test został wykonany z innego serwera, ilość zapytań ustawiliśmy na 1000, jednocześnie było wydawane maksymalnie 5 żądań. Poniżej prezentujemy komendę wykonującą testy.
ab -n1000 –c5 adres-strony
mniej = lepiej
Całkowity czas | ![]() ![]() ![]() |
Średni czas wykonania jednego żądania | ![]() ![]() ![]() |
![]() ![]() ![]() |
Generowanie dużego obciążenia
Skorzystaliśmy z usługi LoadImpact, aby sprawdzić jak serwery radzą sobie podczas dużego obciążenia. Przeprowadzony test trwał 30 min, w tym czasie obciążenie rosło od 0 do 1000 tzw. wirtualnych użytkowników. Test został przeprowadzony z jednego serwera zlokalizowanego w Dublinie. Zależność czasu ładowania strony od ilości aktywnych użytkowników przestawiana jest na wykresie (niżej kolejno serwer 1, 2 oraz 3).
Tutaj również nie ma zaskoczeń, najmocniejszy serwer poradził sobie najlepiej. Czasy odpowiedzi najczęściej są w rozsądnych granicach, biorąc pod uwagę dość duży ruch. Natomiast należy tutaj pamiętać o wpływie konfiguracji na wydajność. W rzeczywistym środowisku bez większych problemów można dokonać optymalizacji i znacznie zmniejszyć czas ładowania (oczywiście do tego celu przydatne są logi serwera i dokładna analiza ruchu). Warto przypomnieć, że usługa Pro Cloud umożliwia skorzystanie z automatycznego skalowania (omawianego wcześniej), jego konfiguracja również może zapewnić czasy dostępu na niskim poziomie nawet przy bardzo dużym ruchu.
HardInfo
Ostatnie testy zostały przeprowadzone za pomocą aplikacji HardInfo. Dostarcza ona informacji o maszynie, na której została uruchomiona (procesor, RAM, karta sieciowa itp.). Dodatkowo posiada kilka testów wydajnościowych. Większość wyników przedstawia czas szyfrowania pewnej próbki danych z wykorzystaniem różnych technologii, który im jest krótszy tym lepszy.
CPU Blowfish [sek] mniej = lepiej | ![]() ![]() ![]() |
CPU CryptoHash [MB/s] więcej = lepiej | ![]() ![]() ![]() |
CPU Fibonacci [sek] mniej = lepiej | ![]() ![]() ![]() |
CPU N-Queens [sek] mniej = lepiej | ![]() ![]() ![]() |
FPU FFT [sek] mniej = lepiej | ![]() ![]() ![]() |
FPU Raytracing [sek] mniej = lepiej | ![]() ![]() ![]() |
![]() ![]() ![]() |