Wydanie systemu operacyjnego DragonFly BSD 5.6

Dostępny wydanie DragonFlyBSD 5.6, system operacyjnego z hybrydowym jądrem, stworzonego w 2003 roku w celu alternatywnego rozwoju gałęzi FreeBSD 4.x. Wśród cech DragonFly BSD można wyróżnić rozproszony system plików wersjonowanych HAMMER, wsparcie dla ładowania "wirtualnych" rdzeni systemu jako procesów użytkownika, możliwość buforowania danych i metadanych systemu plików na nośnikach SSD, uwzględniających kontekst opcjonalne linki symboliczne, możliwość zamrażania procesów z zachowaniem ich stanu na dysku, hybrydowe jądro wykorzystujące lekkie wątki (LWKT).

Podstawowe ulepszenia, dodane w DragonFlyBSD 5.6:

  • Przeprowadzono modernizację systemu zarządzania pamięcią wirtualną. Przepisano wiele podsystemów związanych z pamięcią wirtualną i PMAP.
    W wielu miejscach kod pozbawiono blokad, w tym w funkcjach m_page_wakeup, vm_hold i vm_unhold. Zwiększono efektywność wykorzystania pamięci podręcznej procesora poprzez ograniczenie migracji obiektów VM między rdzeniami CPU oraz zmniejszenie opóźnień przy przetwarzaniu wyjątków (page-fault) dla współdzielonych obszarów pamięci. Ulepszono algorytm przydzielania stron pamięci. Usunięto opóźnienia przy pracy funkcji vm_page_alloc(). Dodano API vm_page_hash*(), które pozwala na wybór bez blokad.

    W efekcie udało się zauważalnie zwiększyć wydajność. Na przykład,
    w teście buildkernel czas wykonania operacji po stronie jądra skrócono o 40%. Przepustowość wzrosła o 7% przy użyciu CPU z rodziny Haswell i o 14% dla Xeon. W teście SELF-EXEC S/DI w porównaniu do poprzedniego wydania odnotowano wzrost wydajności o 23% dla Haswell i 18% dla Xeon. W teście
    SELF-EXEC S/SH odpowiednio 28% i 71%, w SELF-EXEC D/DI — 23% i 242% (dzięki poprawie działania wielowątkowości), w SELF-EXEC D/SH o 24% i 234%, w FAULTZF o 17% i 14%, w DOCOMP o 22% i 42%,
    w NATIVEKERNEL o 5.1% i 8.1%;

  • Zdecydowanie zaktualizowano sterownik DRM i menedżer zarządzania pamięcią wideo TTM dla kart graficznych AMD. Dodano wsparcie dla nowych APU Ryzen. Ulepszono wsparcie dla ramki UEFI. W radeon/ttm usunięto wzajemne blokady negatywnie wpływające na wydajność. Przeprowadzono refaktoryzację ustalania opóźnień w procesie ładowania, aby uniknąć konfliktów pomiędzy sterownikiem i915 a serwerem X. Dodano wywołanie DRM_IOCTL_GET_PCIINFO dla lepszego wsparcia mesa/libdrm. Usunięto wiele błędów i niedociągnięć;
  • Przepisano kod synchronizacji w systemie plików HAMMER2, co znacząco zwiększyło wydajność tego systemu plików. Zwiększono również wydajność operacji sekwencyjnego zapisu.
    Aby zwiększyć odporność na awarie, dodano śledzenie zależności, aby uniknąć podziału katalogów/pliki w trakcie wykonywania operacji tworzenia, zmiany nazwy lub usuwania. Przeprojektowano kod pracy z migawkami, aby zredukować opóźnienia i zapewnić spójność migawki. Udoskonalono obsługę równoległych operacji zapisu i wyczyszczenia pamięci podręcznej na dysku (flush). Ulepszono realizację operacji umount. Zwiększono informacyjność komunikatów o naruszeniach integralności (błąd CRC).

    HAMMER2 jest zalecany jako domyślny system plików główny. Obsługa klasteryzacji nie jest jeszcze dostępna. System plików HAMMER2 wyróżnia się takimi funkcjami, jak oddzielne montowanie migawek, migawek dostępnych do zapisu, kwoty na poziomie katalogów, inkrementalne lustrzane odbicie, wsparcie dla różnych algorytmów kompresji danych, multi-master lustrzane odbicie z rozdzieleniem danych na wiele hostów;

  • Dodano wstępną obsługę podsystemu FUSE do tworzenia systemów plików w przestrzeni użytkownika;
  • Zwiększono wydajność filtra pakietów PF w systemach wielordzeniowych;
  • Zrealizowano wsparcie dla mechanizmów ochrony SMAP (Supervisor Mode Access Prevention) i SMEP (Supervisor Mode Execution Prevention) przy ich wsparciu w CPU. SMAP pozwala zablokować dostęp do danych w przestrzeni użytkownika z kodu uprzywilejowanego wykonywanego na poziomie jądra. SMEP nie pozwala na przejście z trybu jądra do wykonywania kodu znajdującego się w przestrzeni użytkownika, co pozwala blokować wykorzystanie wielu luk w jądrze (shell-code nie będzie wykonany, ponieważ znajduje się w przestrzeni użytkownika);
  • Dodano kod do blokowania atakami klasy MDS (Microarchitectural Data Sampling) w procesorach Intel. Do działania wymagana jest aktualizacja mikrokodu. Domyślnie ochrona jest wyłączona i włącza się przez ‘sysctl machdep.mds_mitigation=MD_CLEAR’. Włączenie powoduje dodatkowe opóźnienie na poziomie 250ns przy przełączaniu kontekstu między przestrzenią użytkownika a jądrem;
  • Jądro jest domyślnie kompilowane z ochroną retpoline przed atakami Spectre.
  • Wiele narzędzi z podstawowego systemu zostało przetłumaczonych na użycie LibreSSL;
  • Zaktualizowano wersje komponentów zewnętrznych, w tym xz 5.2.4,
    libarchive 3.3.3, libressl 2.9.1, openssh 8.0, ldns 1.7.0,
    libedit 2019-03-24. Z systemu FreeBSD przeniesiono evdev, makefs, ministat, libfetch,
    dd. Z systemu OpenBSD do libc przeniesiono wywołania reallocarray(), timing_safe*(), freezero(), dup3(), recallocarray(), aligned_alloc(), explicit_bzero(). Domyślnie do kompilacji używany jest kompilator gcc-8 zamiast gcc-5.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster