Interesuje mnie dopracowanie struktur danych świadomych pamięci podręcznej (patrz na przykład drzewo przeskoków bez blokady w Michael Spiegel's dissertation lub Herlihy et al's hopscotch hashing), jak również w zapobieganiu false sharing, np. podczas współbieżnego przetwarzania tablic. Już wiem, jak znaleźć rozmiar wskaźnika JVM za pośrednictwem właściwości "sun.arch.data.model", ale nie udało mi się znaleźć sposobu określenia rozmiaru linii pamięci podręcznej w pamięci podręcznej L1.Jak znaleźć rozmiar linii pamięci podręcznej L1 z procesu Java?
Należy zauważyć, że ta informacja nie jest krytyczna, ponieważ mogę po prostu kontynuować stosowanie konserwatywnych szacunków dla rozmiaru wiersza L1 (64 bajty podczas dostrajania struktur danych świadomych pamięci podręcznej lub 256 bajtów przy zapobieganiu fałszywemu współdzieleniu); jeśli jednak łatwo jest uzyskać właściwości pamięci podręcznej L1, to równie dobrze mogę z nich skorzystać.
Myślę, że to (bardzo interesujące, powiedziałbym nawet ekscytujące) zadanie kosztowałoby zbyt wiele do wdrożenia. Zrobiłbym tu leniwy: rozmiary pamięci podręcznej dla modeli procesorów i ustalenie tego - jak to może być łatwiejsze. Może się to jednak nie powieść, jeśli wirtualna maszyna wirtualna jest uruchomiona w maszynie wirtualnej, która ukrywa rzeczywisty model procesora, podczas gdy rozwiązanie będzie używało prawidłowych rozmiarów dla tego scenariusza ... – ppeterka
Wielkość linii to wielkość linii; w jakim sensie jest to zawsze 64 ** i ** 256? –
@OliCharlesworth Jeśli nie znam dokładnego rozmiaru linii, używam różnych szacunków w zależności od tego, co próbuję osiągnąć, np. jeśli dopracowuję strukturę danych świadomej pamięci podręcznej, użyję niższej estymacji 64 bajtów, ponieważ w ten sposób struktura danych będzie nadal działać poprawnie, jeśli rzeczywisty rozmiar linii jest większy niż 64 bajty, a jeśli jestem zapobiegając fałszywemu współudziałowi, użyję wyższego oszacowania 256 bajtów, ponieważ będzie on nadal działał dobrze, jeśli rzeczywisty rozmiar linii jest mniejszy niż 256 bajtów. –