2012-06-19 25 views
7

Rozbudowuję jądro Linuksa w celu kontrolowania częstotliwości niektórych wątków: kiedy są one zaplanowane na rdzeń (każdy rdzeń!), Częstotliwość rdzenia zmienia się przez zapisanie właściwego p -stacja do rejestru IA32_PERF_CTL, zgodnie z sugestią w podręczniku Intela. Ale kiedy zaplanowane są różne wątki z różnymi "niestandardowymi" częstotliwościami, wydaje się, że przepustowość wszystkich wątków wzrasta, tak jakby wszystkie rdzenie pracowały z maksymalną ustawioną częstotliwością.Przyspieszenie częstotliwości Intel MSR

Zrobiłem wiele prób i pomiarów w różnych warunkach obciążenia i konfiguracji, ale wynik jest taki sam. Po kilku próbach z CPUFreq (bez uruchomionej aplikacji, ustawiłem różne częstotliwości na każdym rdzeniu i na koniec zmierzone częstotliwości, z cpufreq-info -w, były równe), zastanawiam się, czy rdzenie procesora mogą naprawdę działać w różnych , niezależne częstotliwości, lub jeśli istnieją zasady sprzętu lub ograniczenia.

Wreszcie, czy istnieje model procesora, który umożliwia skalowanie częstotliwości?

CPU używam jest Intel Core i5 750

+2

Rdzenie procesora nie mogą działać przy różnych napięciach, więc ogranicza to możliwość ustawienia różnych par częstotliwości/napięcia. –

+0

Generalnie każda generacja Intela zapewnia większą separację rdzeni i pozwala na dokładniejszą kontrolę nad tymi obiektami. – ugoren

Odpowiedz

4

Nie można kontrolować poszczególnych częstotliwości rdzenia dla aktywnych rdzeni. Można jednak kontrolować częstotliwości wszystkich aktywnych rdzeni, aby były takie same. Powody są w poprzednich odpowiedziach - wszystkie rdzenie są na tej samej aktywnej płaszczyźnie napięcia. Mam nadzieję, że następna generacja procesorów Haswell umożliwi kontrolowanie każdego rdzenia osobno.

2

cpufreq-info wyświetli informacje, o których rdzenie trzeba być synchroniczny w swoich P Zjednoczonych:

[[email protected] ~]# cpufreq-info 
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009 
Report errors and bugs to [email protected], please. 
analyzing CPU 0: 
    driver: acpi-cpufreq 
    CPUs which run at the same hardware frequency: 0 1 <---- THIS 
    CPUs which need to have their frequency coordinated by software: 0 <--- and THIS 
    maximum transition latency: 10.0 us. 

Przynajmniej ze względu na to, polecam przechodzenie przez interfejsy cpufreq zamiast bezpośredniego ustawiania rejestrów, a także umożliwianie uruchamiania na procesorach innych niż inteligencja, które mogą mieć nietypowe wymagania.

Sprawdź również, jak nić jądra przykleja się do określonego rdzenia, aby uniknąć nieoczekiwanego przełączenia, jeśli jeszcze tego nie zrobiłeś.

+0

Dziękuję wszystkim za odpowiedzi! Teraz mam ogólny obraz. – user1466329

+0

Czy ktoś próbował tego z Haswell? Ponieważ nie mam maszyny o takiej architekturze i zastanawiałem się, czy jest to teraz możliwe; na wszelki wypadek spróbuję ponownie. Po drugie, nie sądzę, że mogę przejść przez cpufreq, ponieważ pracuję na poziomie harmonogramu. Aby dać pełny obraz projektu, nad którym pracuję, ostatecznie ma on na celu uzyskanie planowania zasobów uwzględniającego cele i status: dlatego nie mogę zostawić komuś innej decyzji. – user1466329

+0

Idea ustawienia podstawowego powinowactwa ma jednak wiele sensu. W każdym razie, powinienem również zrozumieć granularność czasu ustawienia częstotliwości. – user1466329

3

Myślę, że brakuje ci dużego fragmentu zdjęcia!

Czytaj na temat domen zasilania i zegarów. Wszystkie rdzenie procesorów w domenie pracują w tym samym stanie P (tj. O tej samej częstotliwości i napięciu). Stan P, w którym wszystkie rdzenie będą działały w tej domenie, będzie zawsze stanem P rdzenia żądającego najwyższego stanu P w tej domenie. MSR w ogóle tego nie odzwierciedlają, ani też interfejsów eksponowanych przez jądro.

AnandTech ma dobry artykuł na ten temat: http://www.anandtech.com/show/2658/2

„To wszystko jest bardzo podobna do Phenom AMD, ale gdzie dwóch się różnić w jaki sposób radzą sobie zarządzanie energią Choć AMD pozwoli poszczególne rdzenie na życzenie. przy różnych prędkościach zegara, Nehalem próbuje uruchomić wszystkie jego rdzenie na tej samej częstotliwości, jeśli jeden rdzeń jest bezczynny, to po prostu moc jest bramkowana, a rdzeń jest skutecznie wyłączony. "

Nie podłączałem miernika mocy do SB/IB, ale domyślam się, że zachowanie jest takie samo.

0

Chcę podziękować wszystkim za wkład! Dalsze dochodzenie, znalazłem inne szczegóły, które dzielę się ze społecznością.

Zgodnie z sugestią, Nehalem umieszcza wszystkie rdzenie w jednej domenie zegara, tak aby maksymalna częstotliwość ustalona spośród wszystkich rdzeni została zastosowana do wszystkich z nich; niektóre narzędzia mogą pokazywać różne częstotliwości na wolnych rdzeniach, ale wystarczy uruchomić dowolną aplikację, aby zwiększyć częstotliwość do maksimum. To, z moich testów, dotyczy także Sandy Bridge, gdzie wszystkie rdzenie i plasterki LLC znajdują się w tej samej domenie częstotliwości/napięcia. Zakładam, że to zachowanie ma miejsce również w przypadku Ivy Bridge, ponieważ jest to tylko iteracja "tick". Zamiast tego, wierzę, że Haswell umieszcza rdzenie i plasterki LLC w różnych, pojedynczych domenach, umożliwiając w ten sposób częstotliwości na rdzeniu. Jest to również reklamowane na kilku stronach, takich jak http://www.anandtech.com/show/8423/intel-xeon-e5-version-3-up-to-18-haswell-ep-cores-/4