Pierwszy tydzień rzucałem w to pieniądze. Różne flagi. Dostosowania jądra. Przypinanie IRQ. Mówiłem sobie—nie, obiecałem—luźne musiało być gdzieś. Zawsze jest luz. Tak wygrywasz przewagę.
Nie w środku Firedancera Fogo.
Wiedziałem po trzecim pominiętym głosie. Nie dlatego, że logi mówiły. Bo moje ręce się trzęsły i nie mogłem jeszcze obwiniać RAM-u.
Buty Firedancer i maszyna wydaje się wstępnie ustalona. Klient zsynchronizowany z infrastrukturą, ciasno w dół. Żadnych "może ta gałąź." Żaden smak walidatora, aby się schować. Klient kanoniczny. Jedna ścieżka wykonania.
Uruchamiasz to, albo nie uruchamiasz Fogo.
Kiedyś lubiłem różnorodność klientów. Przestrzeń. Jeśli jeden stos miał opóźnienie, inny mógłby zserializować inaczej pod obciążeniem. Wariancja, na którą można polegać. Miejsce, aby obwiniać.
Fogo, SVM oparty L1 zaprojektowany do ultra niskiej latencji, nie daje ci wariancji.
Firedancer uruchamia się, a sufit jest tam. Czasy bloków Fogo poniżej 40 ms pojawiają się w tym, jak klient trafia w NIC. Rozdziela, Turbine je rozprowadza. PoH nadal tyka. Zawsze. Tik, który słyszysz o 4 rano, gdy zdajesz sobie sprawę, że patrzyłeś na ten sam ślad slotu przez...

Wątki bankowe rozprzestrzeniają się. Blokady konta albo się rozwiązują, albo duszą kolejkę. Etap odtwarzania spogląda na ciebie, już w tyle. Etap głosowania kolejkowuje pakiet. Jesteś w tej kadencji, albo kłócisz się z powietrzem.
Myślałem, że mogę wyprzedzić to na krawędziach. Czasowania pamięci. Układ NUMA. Obciąć milisekundę z potoku głosowania.
To nie był taki system.
Profilowałem sloty lidera pod obciążeniem w zeszłym miesiącu. CPU przywiązane. Szerokość pasma czysta. Kolejki bankowe płaskie. Ślady były nudne w sposób, który sprawia, że...
Ponieważ nudny oznacza brak miejsca na ukrycie. Brak tajemniczej gałęzi. Brak alternatywnej ścieżki. Tylko ta sama deterministyczna ścieżka inkluzji powtarzająca się jak metronom, na który się nie zgodziłeś.
Nie ma innego klienta.
Kiedy harmonogram lidera przechodzi do mnie, to Firedancer prosto przez. Tiki PoH postępują. Równoległe wykonywanie przetwarza stan, podczas gdy kontencja konta albo się rozwiązuje, albo blokuje grupę wątków. Bank zamraża. Głos zostaje. Albo nie.
Sufit nie jest teoretyczny. Pojawia się w pominiętych głosach, gdy budujesz za mało.
Raz oszczędziłem. Wolniejsza pamięć RAM. Myślałem, że się z tym uporałem, ponieważ propagacja mojej strefy wyglądała czysto. Opóźnienie aktywnej strefy ciasne.
Nie zrobiłem tego.
Trzy milisekundy za kanonicznym śladem. Trzy. Obliczyłem to później. 47K w pominiętych nagrodach w tej godzinie. Trzy milisekundy na 40 ms kadencji to nie jest blisko. To pochówek. A ja wciąż musiałem powiedzieć "Jestem w porządku" w czacie grupowym, ponieważ wszyscy inni trafiali w tik.
Blok propagowany. Głosy zgrupowane. Moje logi mówiły, że jestem w porządku. Etap bankowy też tak myślał.
Wieża nie zrobiła tego.
Etap głosowania go zaakceptował. Za późno. Bank już zamroził slot. PoH się przesunął.
Jedna pominięta rozszerzenie. Potem kolejna. To nie awaria. Głębokość blokady wydłuża się cicho, ponieważ mój głos wylądował po tym, jak klaster już zobowiązał się do następnego tiku.
Ten sam klient. Ta sama wersja. Ta sama ścieżka kodu.
Inny sprzęt.
Kiedy wszyscy uruchamiają ten sam stos, błędy też się zgrywają. Co brzmi czysto, dopóki nie zdasz sobie sprawy, że synchronizuje również kształt awarii.
Chcę to nienawidzić. Monokultura. Przygotowuję argument. Otwieram usta. Potem znowu patrzę na ślad. Brak dryfu. Brak przypadku brzegowego. Brak dziwnej rozbieżności w odtwarzaniu między stosami.
Tylko jednorodność.
Może właśnie tak wygląda sprawiedliwość. Może po prostu wolałem niejasność.
Zamykam usta.
Wciąż sięgam po "wybór klienta" jako wymówkę. Potem przypominam sobie, że nie ma takiego. To tylko ja i sufit.
Fogo's Firedancer nadal produkuje wewnątrz okna lidera i oczekuje, że twój głos wyląduje przed postępem PoH. To nie jest filozofia. To tik-tik-tik, który słyszysz, gdy patrzysz na czas slotu zbyt długo...
Obserwowałem, jak sąsiedni stos pomija kolejne głosy. Nie katastrofalnie. Wystarczająco, aby zobaczyć, jak blokady Wieży się kumulują, a moc głosowania maleje. Ten sam kanoniczny klient. Krzywa chłodzenia spadła pod stałym równoległym wykonaniem. Kontencja konta wzrosła. Deterministyczna ścieżka inkluzji poszła dalej bez nich.
Brak gry w obwinianie. Brak alternatywnej implementacji do obwinienia.
Tylko ślad, który pokazuje, gdzie spadłeś z sufitu.
I jak możesz przegapić to, że Multi-lokalna zgoda warstwy Fogo utrzymuje aktywna strefę ciasną. Firedancer utrzymuje ścieżkę wykonania jeszcze ciaśniej. Nieoptymalizowane. Ciasno. Powiedziałem to komuś. "Ciasno." Jakby to było dobre. Jakbym nie był...

Krzywa wentylatora podnosi się podczas intensywnego równoległego wykonywania. Przerwy NIC grupują się w niewłaściwej mikrosekundzie. Pakiet głosowania wychodzi tuż po tiku PoH, o którym myślałeś, że...
Ciągle powtarzałem sobie, że to było strojenie. To nie było strojenie. To była pojemność.
Teraz mogę powiedzieć, gdzie jest sufit. To moment, w którym Wieża przestaje przebaczać, a ślad milknie. Widzisz to, gdy twój głos przychodzi dwanaście milisekund za późno, a reszta klastra już wydłuża blokadę bez ciebie.
Specyfikacja sprzętowa najpierw. Chłodzenie drugie. Dostosowania jądra po tym, jeśli wciąż....
Obserwowałem, jak slot znowu się obraca. Mój głos nie był w nim.
Wieża nie zrobiła... @Fogo Official

