Jak ustawić koligację procesora w systemie Snow Leopard na MacBooku Pro Wiem, że w systemie Windows można po prostu przełączyć go w Menedżerze zadań.
Jak ustawić koligację procesora w systemie Snow Leopard na MacBooku Pro Wiem, że w systemie Windows można po prostu przełączyć go w Menedżerze zadań.
Odpowiedzi:
OS X obsługuje API powinowactwa wątków od wersji 10.5. Oto kilka istotnych materiałów ze strony, do której linkuję.
Zestaw koligacji to zbiór wątków, które współużytkują zasoby pamięci i chcą dzielić pamięć podręczną L2. Odrębne zestawy koligacji reprezentują osobne koligacje - to znaczy wątki należące do innego zestawu powinny używać osobnej pamięci podręcznej L2, a zatem działać na różnych procesorach logicznych.
Zestaw powinowactwa jest identyfikowany przez „znacznik”. Wątki są przypisywane do określonego zestawu koligacji, przypisując mu znacznik identyfikujący ten zestaw. Wątek może należeć do co najwyżej jednego zestawu koligacji; to znaczy ma jeden znacznik powinowactwa.
Na przykład aplikacja, która chce uruchomić 2 wątki na osobnych pamięciach podręcznych L2, ustawiłaby wątki o różnych znacznikach powinowactwa. Na maszynie dwurdzeniowej to powinowactwo zostanie skutecznie zignorowane. Jednak na czterordzeniowym MacPro program planujący spróbuje uruchomić wątki na osobnych pakietach. Podobnie na 8-rdzeniowym MacPro program planujący spróbuje uruchomić te wątki na osobnych matrycach (które mogą, ale nie muszą znajdować się w tym samym fizycznym pakiecie procesora).
Aplikacja, która chce umieścić wątek na każdym dostępnym procesorze, wykonałaby następujące czynności:
- Uzyskaj liczbę procesorów w systemie za pomocą sysctl (3).
- Utwórz taką liczbę wątków.
- Ustaw każdy wątek za pomocą odrębnego znacznika powinowactwa.
- Rozpocznij wszystkie wątki.
Wątki z domyślną polityką koligacji będą planowane bardziej swobodnie na dowolnym procesorze. Te wątki będą preferencyjnie migrowane do działania na bezczynnym procesorze. Wątki ze znacznikami powinowactwa będą miały tendencję do pozostawania na miejscu.
Skorzystaj ze źródła, aby uzyskać listę kodów oraz informacje na temat udostępniania znaczników powinowactwa między procesami nadrzędnymi i podrzędnymi, uzyskiwania konfiguracji pamięci podręcznej procesora i nie tylko.
http://developer.apple.com/mac/library/releasenotes/Performance/RN-AffinityAPI/
Mac OS X nie eksportuje interfejsów, które identyfikują procesory lub kontrolują umieszczenie wątku - jawne powiązanie wątku z procesorem nie jest obsługiwane . Zamiast tego jądro zarządza rozmieszczaniem wszystkich wątków. Aplikacje oczekują, że harmonogram w większości przypadków będzie uruchamiał swoje wątki przy użyciu dobrego umiejscowienia procesora w odniesieniu do koligacji pamięci podręcznej.
From http://images.apple.com/macosx/docs/OSX_for_UNIX_Users_TB_July2011.pdf
• Wydajne wątki jądra. Każdy wątek POSIX jest umieszczony w kolejce na określonym procesorze, co poprawia powinowactwo i skalowalność procesora, jednocześnie zmniejszając rywalizację o blokadę. Wątki są zgodne z POSIX (1c), w tym obsługują anulowanie i wspólne muteksy.
Wygląda mi to na reklamę, mój iMac z systemem Lion wygląda na to, że szanuje to przez większość czasu, ale nie „przypina” do rdzenia.
W każdym razie nie mogłem znaleźć interfejsu API do kontrolowania powinowactwa procesu dla darwina.