Pracuję nad narzędziem, które umożliwi uczniom samodzielną ocenę wydajności przydziału programistycznego. W szczególności program, który piszą, jest wielowątkowy i nie mam bezpośredniego sposobu wpływania na liczbę tworzonych wątków. Chciałbym porównać wydajność ich programów, biorąc pod uwagę różną liczbę rdzeni (i najlepiej, że ich programy powinny przyspieszyć w przybliżeniu proporcjonalnie do liczby rdzeni, z których może korzystać).Jak określić, które rdzenie logiczne mają ten sam rdzeń fizyczny?
Możemy przekazać maskę bitową do Process.SetAffinity, aby kontrolować, których rdzeni używa program.
Jest to problematyczne na maszynach i5 i i7, które używają hiperwątkowości i dzielą każdy rdzeń fizyczny na dwa logiczne. Chcę, aby program działał na dwóch/czterech różnych rdzeniach fizycznych. Na mojej maszynie i7 proces z powinowactwem ustawionym na 3 (rdzenie 0 & 1) będzie działał mniej więcej tak szybko, jak program na pojedynczym rdzeniu (wskazując, że te logiczne rdzenie dzielą ten sam rdzeń fizyczny), ale z powinowactwem ustawionym na 5 (rdzenie 0 & 3) będzie działać znacznie szybciej (wskazując, że te rdzenie używają różnych rdzeni fizycznych). Jednak nie znalazłem wiarygodnego sposobu (poza próbą i błędem), aby to ustalić.
Jak mogę (bez eksperymentów) określić, które rdzenie logiczne mają ten sam rdzeń fizyczny?
(/ proc/cpuinfo zawiera informacje potrzebne, ale nie jest dostępna na komputerach z systemem Windows).
Informacje prawdopodobnie dostępne za pośrednictwem [WMI (Windows Management Instrumentation)] (lub co najmniej liczby rdzeni fizycznych/wirtualnych, które mogą * może *) być prawidłowe do ekstrapolacji na przeplataną maskę bitową. – user2864740
Wygląda na to, że zapomniałem wspomnieć, że specjalnie szukam rozwiązania C#. Dodałem tag C#, ale nigdzie go nie wspomniałem. Dodałem teraz C# do tytułu, co powinno sprawić, że będzie jaśniej tego, czego szukam. –
@TomvanderZanden Nie powinieneś dodawać "C#" do tytułu. Tag powinien wystarczyć. Jeśli tak nie jest, wyjaśnij to w swoim pytaniu. – MarcinJuraszek