Przyszedł google i posprzątał struktury

Mar 06, 2024 Last reply: 2 years ago 15 Replies

formatting link
Serio przez 30 lat nikt na to nie wpadł, że kolejność zmiennych w strukturze może mieć znaczenie przy użyciu cache??



40%!!

To wiadomo od dawna. Ale te 40% to jak liczone? Bo wiesz, 40% z czegos co zabiera 2% czasu to ledwo 1% poprawy...

I tego nikt nie zrobił? Sorry ale to trochę żenua. Gość pozamieniał miejscami zmienne w strukturze i uzyskał 40% zwiększenie wydajności stosu. Nie 1%, nie 4%...a 40%! 30 lat temu niektórzy onanizowali się w jakieś experymentalnej wersji gcc specjalnymi flagami do optymalizacji pod intel dającymi bagatela 15% szybszy kod. Podjarany tym całe libc + kernel + istotne binaria wtedy tą wersją przekompilowałem po to by stwierdzić, że właściwe nie widzę różnicy...

Widziałeś film?

W dniu 06.03.2024 o 09:53, Marek pisze:

To mowisz, ze sprawdzili na 30 letnim komputerze i wyszlo, ze aplikacje dzialaja 40% szybciej?

No to faktycznie, zbrodnia, ze nikt tego wczesniej nie naprawil!

Odsylanie do filmow jako "dokumentacji technicznej oprogramowania" powinno byc karane.

Serio cache w CPU jest od roku? Niesamowite...

Podobnie jak komentowanie nie na temat i bez zrozumienia kontekstu.

A komputer rzeczywiscie 30 lat?

Bo 30 lat ... 1994 ... juz chyba były pecety z 486, a nawet Pentium.

cache w pecetach pojawił sie raptem kilka lat wczesniej, bo gdzies przy 386 zaistniała potrzeba ...

J.

stosu czy sterty?

Ale co - zrobili wyrównanie do granicy słów pamięci?

Niektóre kompilatory same to robiły, bo chyba i procesory wymagały. Intel x86 akurat był zgrabny i nie wymagał, ale jak widać - wydajność może ucierpiec ...

J.

Co komputer? Mówimy o odpowiedniej optymalizacji kodu a nie o komputerze. Ta optymalizacja powinna być już od dawna. Nie od 30 to zapewne od min 20 bo wtedy już były procesory z odpowiednio dużym cache umożliwiającym optymalizację, o której mowa. Oczywiście dyskusyjne może być jedynie czy 20 lat temu wynik optymalizacji byłby na podobnym poziomie 40%. Zakładam wspaniałomyślnie, że każda optymalizacja dająca wynik dodatni jest pożądana.

Zamienili miejscami zmienne w strukturze. ROTFL. Tylko tyle i aż tyle. Obejrzyj film.

12 minut gadania, a mógl strescic w 3 :-)

J.

To było odnosnie Ghosta, który cos pytał/pisał o 3 latach.

Czyli rozumiem, ze czepiasz/nasmiewasz sie, ze nikt tego wczesniej nie zrobił?

No coz - obejrzałem ten film. Zauwaz, ze na intelu poprawy nie zauwazono. Czy moze raczej - intel na obu wersjach jest równie zły, bo

3x wolniejszy. To po co ktos miałby poprawiac, skoro to 1% daje, a i to nie zawsze ? :-) A kiedy sie pojawił procesor, na którym to cos daje?

Do czego w ogóle służa te struktury netns_ipv4?

formatting link
Duza ta struktura. Ile ona ma razem bajtów? Chodzi tylko o to, żeby pierwsze dostępy trafiały w jedną linie cache? A całosc sie w ogóle miesci w 1 linii? Bo jak nie, to i tak trzeba czytac dwie, no chyba, ze sporo danych jest niepotrzebna :-)

Tych struktur jak sie domyslam, jest sporo w pamieci, ale jak ułozone? Tablica jakas, alokowane dynamicznie? Bo jak duzo i nikt nie zadbał o wlasciwe wyrównanie, to granica linii cache bedzie jakos losowo wypadała w tych strukturach. Nadal zgromadzenie najczesciej uzywanych zmiennych obok siebie moze miec sens, ale co - reszta struktury jest nieuzywana? To może ją skasować? :-)

No i jeszcze ... tam mają karty po 100-200Gb/s ? Wow. Coz to za karty/interfejsy?

Może na słabszej karcie nie ma to znaczenia, bo wąskie gardło jest gdzie indziej ?

A co to w ogóle za konstrukcja/element w strukturze __cacheline_group_begin(netns_ipv4_read_tx);

Jakies wyrównanie ?

J.

Zatem pozwolisz, ze twoje komentarze nie mna temat i bez zrozumienia kontekstu (czyli wszystkie) bede ignorowal. Naczy PLĄK.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required