• naurM
    link
    fedilink
    Polski
    arrow-up
    1
    ·
    26 days ago

    Zaskakujący jest dla mnie ponowny wzrost wskaźnika skalowalności jeśli rozmiar pamięci roboczej zaczyna być znacznie większy od L3. Tak jakby dostęp do cache’u był wtedy pomijany?

    Nie znałem tego frameworku X-ray do instrumentacji. Bawiłem się niedawno opcją “-finstrument-functions” z GCC, ale w innym celu.
    Chciałem zrobić logowanie wywołań funkcji z nazwą pasującą do określonego wzorca.
    Spróbowałem też użyć frameworku Frida, ale okazało się, że nie działa z kodem rzucającym wyjątki C++.
    Wyjątek z hookowanej funkcji jest rzucany drugi raz, co skutkuje ubiciem procesu przez std::terminate.

    Będę musiał chyba wrócić do oryginalnej koncepcji z instrumentacją z kompilatora.

    • サぺル
      link
      fedilink
      Polski
      arrow-up
      1
      ·
      26 days ago

      Nie wiem czy pomijalny. Raczej coś zaczyna być wykorzystywane w pełni. Może L3 się zaczyna odpowiednio dzielić zasobami. Może kontroler DDR5 zaczyna lepiej paralelizować rozkazy.

      • naurM
        link
        fedilink
        Polski
        arrow-up
        1
        ·
        edit-2
        25 days ago

        Ok, pomyślałem jeszcze nad tym wykresem i doszedłem do wniosku, że to może być związane z NUMA.
        Może topologia wyglądała tak, że każdy procesor miał przydzielone tylko 2 kanały i dla przypadku z jednym workerem odczytywał z RAMu tyle samo danych, co każdy z 6 procesów w drugim scenariuszu.

        Czyli system był skonfigurowany tak, że wydajność RAMu dla pojedynczego procesora była sztucznie zaniżona.
        Uruchomienie dodatkowych procesów mogło w tym przypadku poprawić wynik.
        Na L3 nie miało to wpływu, bo ta warstwa działa z maksymalną przepustowością (pomijając przypadki gdzie trzeba synchronizować dostęp do danych).

        • サぺル
          link
          fedilink
          Polski
          arrow-up
          1
          ·
          25 days ago

          To dobra teoria. Trzeba się zapoznać z budową chipletu i/o. Gdzieś widziałem jego schemat blokowy.

        • サぺル
          link
          fedilink
          Polski
          arrow-up
          1
          ·
          25 days ago

          Mam chiński art: https://zhuanlan.zhihu.com/p/629392033

          Na 图4 (Rysunek 4) masz schemat budowy chipletu i/o. Wygląda na to, że w dalszym ciągu jest RAM bliższy i dalszy. By trzeba zrobić twój benchmark by to zweryfikować.

          Wcześniej byłem przekonany, że skoro zrobili jeden chiplet do komunikacji to obsługa pamięci jest mniej rozproszona i CPU mają do niej bardziej zrównoważony dostęp.

  • サぺル
    link
    fedilink
    Polski
    arrow-up
    1
    ·
    26 days ago

    Podobało mi się Queue ze wskaźnikami obsługiwanymi przez nadawcę jako barierami odczytu. Reszta dość standardowa. Wymienił Actona i nawet go za to nie zjechali. Coś tam pękło w ciągu tych 10 lat?