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).
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.
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).
To dobra teoria. Trzeba się zapoznać z budową chipletu i/o. Gdzieś widziałem jego schemat blokowy.
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.