NFsec Logo

Serwery Javy, a dynamiczne skalowanie procesora sterownikiem intel_pstate

09/11/2017 (2 tygodnie temu) w Administracja Brak komentarzy.

W

raz z użyciem w systemie Ubuntu 14.04 LTS jądra z dystrybucji 16.04, czyli Xenial (4.4.0) do obsługi procesorów z rodziny Intel (Sandy Bridge lub nowsze) używany jest sterownik intel_pstate. Na temat jego pracy istnieje wiele opracowań. Czasami wypada lepiej, a czasami gorzej. Wszystko zależy od bardzo wielu czynników np. konfiguracji sprzętu, wykorzystanego oprogramowania, charakterystyki obciążania maszyn zadaniami itd. Dlatego przed nadzieją na szybki zysk wydajności, jak zawsze należy wykonać testy na swoim środowisku zamiast ślepo ufać obcym opracowaniom. Na przykład dla serwerów ElasticSearch oraz PrestoDB bardziej opłacalnym wariantem okazało się trzymanie procesora na stałej częstotliwości (intel_pstate=disable) niż pozwalanie mu na wchodzenie na niższe wartości (zarówno wariant powersafe, jak i performance). Przełożyło się to na zmniejszenie czasów odpowiedzi (obrazek #1 – Elastic) oraz spadek obciążenia maszyn (obrazek #2 – Presto).

Więcej informacji: Intel CPUs: P-state, C-state, Turbo Boost, CPU frequency, Why does the CPU frequency fluctuate when using the performance governor?

TCP BBR – nowy algorytm kontroli przeciążenia od Google

23/07/2017 w Administracja Brak komentarzy.

B

ottleneck Bandwidth and RTT, czyli BBR jest nowym algorytmem kontroli przeciążenia TCP od firmy Google. Został on przetestowany w jego centrach danych, jak i frontowych serwerach takich stron jak: Google.com oraz YouTube.com. Dąży on do optymalizacji zarówno przepustowości, jak i opóźnienia – RTT. Jak wspomina samo Google po wprowadzeniu tego mechanizmu do swojej usługi publicznej chmury obliczeniowej, uzyskał średnio od 4%14% większą przepustowość sieciową. Pierwsze publiczne wydanie BBR nastąpiło we wrześniu 2016 roku. Do jego użycia wymagane jest posiadanie jądra w wersji 4.9 lub wyższej, w przeciwnym wypadku wymagane jest nałożenie łatki i rekompilacja jądra.
[ czytaj całość… ]

Retransmisje TCP

19/05/2017 w Administracja Brak komentarzy.

C

o się może złego dziać, jeśli czasy połączeń i odpowiedzi pomiędzy daemonami lub aplikacjami umieszczonymi na różnych serwerach losowo wahają się dochodząc nawet do wartości sekund? W dodatku liczba pakietów opuszczających serwer na wyjściu jest zauważalnie większa niż otrzymuje on do przetworzenia na wejściu. Wykluczając problemy wydajnościowe dotyczące utylizacji zasobów serwera, do którego się łączymy – pozostaje tylko jedno – sieć.
[ czytaj całość… ]

Ustawienie zmiennej środowiskowej TZ oszczędza tysiące wywołań systemowych

26/02/2017 w Administracja, Debug Brak komentarzy.

A

by zaoszczędzić dodatkowych wywołań systemowych na serwerze przez chodzący proces – wystarczy ustawić zmienną środowiskową TZ na wartość: :/etc/localtime. Spowoduje to, że glibc nie będzie wykonywać zbędnych, dodatkowych wywołań systemowych. Szczególnie sprawdza się to w systemach, w których ustawienie strefy czasowej nie jest cyklicznie przestawiane – lub istnieje możliwość restartu danego procesu, kiedy to występuje (w większości przypadków taka zmiana występuje tylko raz – zazwyczaj w polskich realiach jest to przestawienie z UTC na CET).
[ czytaj całość… ]

Młotkiem w wiele wirtualnych rdzeni – Receive Packet Steering

18/10/2015 w Administracja Brak komentarzy.

S

krótów takich jak: RPS, RFS, XPS nie trzeba przedstawiać chyba nikomu – jeśli tak to warto się z nimi dogłębnie zapoznać. Zostały one wdrożone w wersji jądra 2.6.35 – 2.6.38 przez Toma Herberta z teamu Google i są aplikacyjną implementacją RSS (ang. Receive-Side Scaling). Na dedykowanych serwerach fizycznych do natłoku ruchu sieciowego możemy wykorzystać sprzętowe wsparcie kart sieciowych i mechanizmy do rozładowywania kolejek. Niestety na serwerach wirtualnych (Xen, KVM) cała ta praca spada na przypisany do maszyny procesor(y).
[ czytaj całość… ]

Intel(R) 10 Gigabit PCI Express Network Driver performance degradation

02/10/2015 w Administracja, Debug Brak komentarzy.

O

statnio podczas testów linków 10G zauważyłem ciekawą zależność. Testując różne wersje jądra w systemie Ubuntu 12.04 ze względu na różne problemy z obsługą systemu plików ext4 na świat wyszedł inny błąd powiązany z sterownikiem sieciowym. Dla wersji jądra: Linux darkstar 3.13.0-32-generic #57~precise1-Ubuntu SMP test linków za pomocą iperf prezentuje się następująco:
[ czytaj całość… ]

Rozszerzenie ipset dla iptables

08/11/2014 w Bezpieczeństwo Brak komentarzy.

P

rzez długi czas firewall w Linuksie oparty o iptables nie miał żadnego efektywnego sposobu, aby dopasowywać reguły do zbiorów adresów IP. Jeśli mieliśmy wiele adresów IP, aby dopasować do nich różne reguły (na przykład: setki lub tysiące adresów IP, które należało trzymać z daleka od portu SMTP) trzeba było tworzyć jeden wpis iptables dla każdego adresu IP, a następnie wprowadzać te wpisy sekwencyjnie. To wprowadzało wiele komplikacji w utrzymywanie takiego rozwiązania. Na szczęście w jądrach od serii 2.6.39 (Ubuntu 12.04, 14.04, Fedora 20, RHEL / CentOS 7) pojawiło się rozszerzenie ipset.
[ czytaj całość… ]

Zredukowanie ilości połączeń do serwerów memcache

30/01/2014 w Administracja 1 komentarz.

T

wemproxy (wymawiane „two-em-proxy”) lub nutcracker jest szybkim i lekkim proxy dla protokołów memcached (ascii) oraz redis. Został zbudowany przez programistów z firmy Twitter w celu zredukowania ilości połączeń do serwerów cache znajdujących się w backendzie. Przy dużej ilości serwerów frontowych łączność z warstwą cache lub systemem sesji za pomocą normalnej komunikacji może być bardzo kosztowny.
[ czytaj całość… ]

Przyśpieszanie polecenia: grep

17/12/2013 w CmdLineFu 1 komentarz.

C

iekawy trick zaprezentowany przez Brendan’a Gregg’a z firmy Joyent w przemówieniu na konferencji LISA 13 pt. Blazing Performance with Flame Graphs. Wyniki testu mogą zależeć od wielkości testowanego pliku i rodzaju szukanej fazy:

# export | grep LANG
declare -x LANG="pl_PL.UTF-8"
# du -h access.log.1
436M	access.log.1
# time grep -i 500 access.log.1 > /dev/null
real	0m38.765s
user	0m31.506s
sys	0m0.420s
# echo 3 > /proc/sys/vm/drop_caches
# time LANG=C grep -i 500 access.log.1 > /dev/null
real	0m21.762s
user	0m0.636s
sys	0m0.268s

Więcej informacji: Make grep 50x faster

Web performance – DNS Prefetching

21/01/2013 w Techblog Brak komentarzy.

D

NS Prefetching polega na próbie rozwiązania innej nazwy domenowej przed kliknięciem użytkownika na link znajdujący się w tej domenie. Co to oznacza w praktyce? Na przykład strona nfsec.pl hostuje wszystkie swoje pliki graficzne za pomocą usługi CDN (ang. Content Delivery Network) w domenach img(1|2|3).nfsecstatic.pl oraz używa API pod adresem api.nfsec.pl. Jeśli na stronie głównej lub podstronach strony nfsec.pl będą znajdowały się aktywne linki lub zasoby wykorzystujące w/w nazwy domenowe – to dopiero w momencie kliknięcia użytkownika na wybrany link lub odwołanie się do konkretnego zasobu (np. wyświetleniu obrazka) – przeglądarka dokona rozwiązania DNS, czyli przetłumaczenia nazwy domenowej na konkretny adres IP.
[ czytaj całość… ]

Strona 1 z 212