Wywiad z CTO: Budżetowanie w nanosekundach


Andrew Phillips pracuje w brokerze LMAX od 17 lat i obecnie jest dyrektorem ds. technologii (CTO) firmy. Jego budżet mierzony jest w milisekundach.

Mimo że opóźnienie end-to-end LMAX gwarantowane dla transakcji o wysokiej częstotliwości wynosi 50 ms, maksymalny czas, jaki może poświęcić na działanie dowolnej aplikacji, wynosi osiem nanosekund. Gdy budżet mierzony jest w nanosekundach, nawet najmniejsze potencjalne opóźnienie ma negatywny wpływ.

„Naszymi klientami są duże domy handlowe, które chcą czegoś, co będzie działać bardzo szybko i w sposób deterministyczny” – mówi Phillips.

„Będziemy testować różne Kable Twinax i stosować połączenie bezpośrednie zamiast światłowodów, ponieważ potrzeba niewielkiej, ale mierzalnej liczby nanosekund, aby przekształcić sygnał elektryczny w światło, przesłać go światłowodem, a następnie przekształcić z powrotem w sygnał elektryczny”.

Inne podejście do wydajności oprogramowania

Kiedy firma zaczęła budować swoją platformę w 2010 r., Phillips mówi, że powszechną praktyką było stosowanie metodologii kaskadowej i rozwijanie oprogramowania przy użyciu języka programowania C++. Jednak giełda LMAX jest budowana przy użyciu zwinnej metodologii i jest programowana w Javie.

„Wykorzystywanie zwinnych technik i Javy z jej niezwykle bogatym ekosystemem testowym uważano za coś dość dziwnego” – mówi.

Reklama

W przeciwieństwie do C++, gdzie kod aplikacji jest najpierw kompilowany do programu kodu maszynowego, który następnie jest uruchamiany bezpośrednio na mikroprocesorze (procesorze), Java jest językiem programowania, który używa kompilacji w czasie wykonywania. Oznacza to, że kod Java jest kompilowany „w locie” podczas działania programu.

Java oferuje również wbudowaną funkcję zarządzania pamięcią, zwaną „zbieraniem śmieci”, która może mieć wpływ na wydajność programu, jak wyjaśnia Phillips: „Otrzymujemy sporo niewygodnych pytań od potencjalnych klientów dotyczących skoków opóźnienia i zbierania śmieci.

„Rozpoczęliśmy od standardowego JDK w 2013 r. Zrozumieliśmy, że Java ma swoje dziedzictwo – została zaprojektowana dla dekoderów i była najszczęśliwsza, gdy dano jej około 4 GB pamięci”.

Według Phillipsa, ponad 4 GB pamięci systemowej oznaczało, że czasy zbierania śmieci stały się niestabilne z perspektywy opóźnienia. „Nie chcieliśmy wymieniać ekspresyjności ani szybkości pisania w Javie, a także ekosystemu testowego, który naprawdę wsparł wiele naszych sukcesów”.

Firma korzysta z platformy Java firmy Azul System, aby obejść ograniczenia pamięci standardowego środowiska Java. „W tamtym czasie, jeśli miałem serwer z 64 GB pamięci, unikanie zbierania śmieci było koniecznością” — dodaje Phillips.

Azul, jak mówi, zbiera śmieci tylko w ostateczności. „To dla nas świetne, ponieważ w tamtym czasie zmniejszaliśmy opóźnienie wymiany z milisekundy do obecnego poziomu, czyli 50 mikrosekund”.

A w tym małym, 50-mikrosekundowym oknie dzieje się bardzo wiele. „50 mikrosekund to czas, jaki upływa od złożenia zamówienia na skraju naszej sieci do jego przetworzenia, dopasowania, a następnie potwierdzenia wysłania” — dodaje Phillips.

„Pomijając fakt, że jestem profesjonalnym programistą kompilatorów, uważam, że nawet bardzo dobrzy programiści nie są w stanie osiągnąć poziomu równie dobrego jak kompilator pod względem optymalizacji”

Andrew Phillips, LMAX

Przy tym 50-mikrosekundowym oknie kod Java ma tylko osiem nanosekund na uruchomienie, ponieważ większość opóźnienia występuje, gdy transakcja przechodzi przez infrastrukturę sieciową do serwera. Phillips uważa, że ​​Java jako język programowania jest lepsza w optymalizacji kodu w porównaniu z kimś, kto ręcznie koduje dla wysokiej wydajności.

„Moje doświadczenie opiera się na językach C, C++ i Fortran, a ja często uciekam się do języka assemblera, aby przyspieszyć działanie programów. [Java] „To trochę nielogiczne” – mówi.

Według Phillipsa współczesne mikroprocesory są tak fantastycznie skomplikowane, że jeśli programista zdecyduje się napisać coś w języku C lub C++, kod będzie zoptymalizowany wyłącznie pod kątem „docelowej” architektury procesora, którą programista skonfigurował w kompilatorze C lub C++.

„Jedną z zalet korzystania z Javy jest to, że jest ona zoptymalizowana pod kątem procesora, na którym działasz” – mówi. „To może być bardzo ważne. Nie będąc profesjonalnym programistą kompilatorów, rzucam wyzwanie nawet bardzo dobrym programistom, aby osiągnęli tak dobre wyniki jak kompilator pod względem optymalizacji”.

Zazwyczaj programista C++ używa kompilatora C++ na swoim komputerze deweloperskim do kompilowania aplikacji, używając procesora serwera jako architektury docelowej. Jest to następnie skutecznie naprawione, a aplikacja jest optymalizowana tylko dla tego konkretnego procesora serwera.

Ale, jak wskazuje Phillips, środowiska programistyczne i testowe mogą być kilkoma generacjami architektury procesorów za serwerami produkcyjnymi. Środowiska przejściowe, gdzie kod jest przenoszony przed wprowadzeniem do produkcji, prawdopodobnie również będą obsługiwać starsze generacje procesorów serwerowych.

Java jest w stanie optymalizuj kod w czasie wykonywaniai w ten sposób wykorzystać wszelkie funkcje przyspieszania kodu dostępne na sprzęcie docelowym, na którym działa kod.

„Jako osoba trochę niedowierzająca, byłem dość sceptyczny co do możliwości Javy” — mówi Phillips. „Nawróciłem się po konkursie kodowania pomiędzy doświadczonym programistą Javy a mną, pisząc w C i język asemblera. Po prostu nie mogłem pokonać szybkości programu Java.”

Zapytany o największe wyzwanie, z jakim się mierzy, Phillps mówi: „Największą rzeczą, która mnie spowalnia w Javie, jest możliwość dostępu do dużej ilości pamięci przy bardzo niskich deterministycznych opóźnieniach. To jedno z naszych kluczowych wyzwań inżynieryjnych. Największym problemem, z jakim się obecnie zmagam, jest prawdopodobnie opóźnienie pamięci”.

Przełomowe technologie niskich opóźnień

Patrząc w przyszłość, Phillips mówi, że jest pod wrażeniem możliwości w zakresie opóźnień sprzętowych, jakie obiecuje technologia CXL. Compute Express Link (CXL) umożliwia bezpośrednią łączność pamięci między różnymi elementami sprzętu.

„CXL ma ogromny potencjał, aby całkowicie odmienić to, co robimy, ponieważ różnice między magistralą pamięci, magistralą urządzeń peryferyjnych i warstwą sieciową zaczynają się zacierać” – mówi.

Jednakże, podczas gdy CXL reklamowano jako technologię, która zmieni sprzęt komputerowy architektura w ciągu kilku miesięcy, ale jeszcze nie zyskała popularności. Nawiązując do analogii między CXL a energią fuzyjną, Phillips dodaje: „Zawsze trwa to 10 lat. Pomysł wykonywanie procedury zdalnej „Połączenia realizowane za pośrednictwem sieci CXL są bardzo atrakcyjne.”

Dla Phillipsa CXL oferuje sposób na obejście narzutu tradycyjnych protokołów sieciowych. „Wszystko działa na UDP IP lub TCP IPktóre są [networking] protokoły opracowane w latach 60. i na początku lat 70. XX wieku, kiedy to opracowano modem dial-up [connectivity] było najnowocześniejsze.”

Choć docenia „fantastyczny wysiłek inżynieryjny”, który pozwolił tym protokołom rozwinąć się do obecnej postaci, jaką jest 25-gigabitowy Ethernet, Phillips mówi: „Byłoby to po prostu miłe i znacznie przyspieszyłoby wszystko, gdybyśmy nie musieli zmagać się z narzutem związanym z enkapsulacją IP”.

Ciągła praca nad odkrywaniem możliwości, jakie daje ta technologia, pozwala firmie LMAX przetwarzać transakcje handlowe z najmniejszym opóźnieniem, na jakie pozwalają prawa fizyki, zapewnia firmie bufor i umożliwia obsługę nieoczekiwanie wysokiej przepustowości.

Na przykład, przypominając sobie ogromną zmienność na rynku kryptowalut, która miała miejsce w zeszłym roku, w wyniku której giełdy kryptowalut spadły, Phillips mówi: „Nie spadły. W rzeczywistości zaobserwowaliśmy ogromny wzrost wolumenu, ponieważ ludzie przerzucali ryzyko na naszą giełdę na siebie nawzajem”.

Mimo że wolumen obrotu był daleki od maksymalnego, jaki mógł obsłużyć LMAX, twierdzi, że firma była w stanie obsłużyć handel na całym rynku kryptowalut i – według Phillipsa – miała mnóstwo przestrzeni manewru.



Source link

Advertisment

Więcej

Advertisment

Podobne

Advertisment

Najnowsze

PSA: iOS 18.0.1 zawiera dwie kluczowe poprawki zabezpieczeń, zaktualizuj je teraz

Oprócz kilku znaczących poprawek błędów i ulepszeń wydajności, dzisiejszy iOS 18.0.1 I Aktualizacje iPadOS 18.0.1 zawiera także parę ważnych poprawek bezpieczeństwa. Mówi Apple...

Disney Imagineer chce, aby jego niesamowity, wysuwany miecz świetlny stał się zabawką

Myślę, że firma chciałaby to zrobić. I myślę, że Josh D'Amaro, nasz facet numer dwa, nasz szef Disney Parks, powiedział to na publicznym...

Rhythm FPS Metal: Hellsinger VR w cenie 29,99 dolarów z nowymi funkcjami

Metal: Hellsinger to pierwszoosobowa strzelanka rytmiczna zawierająca elementy strzelanek roguelike i boomer, osadzona w heavy metalowej ścieżce dźwiękowej z udziałem największych nazwisk metalowego...
Advertisment