Wpis z mikrobloga

@Fox_Murder: a to nie system to kontroluje? Są chyba specjalnie instrukcje procesora do jako-tako sterownia jego taktowaniem.
I system pewnie śledzi ile zjadają programy i odpowiednio dostosowuje moc.
  • Odpowiedz
@GotoFinal: no oczywiście że są. Nawet w 8 bitowym xmega można kręcić PLL na max ok 48 do nawet 58Mhz(tu już się wykrzacza) albo do minimum, chyba 2Mhz.
Ale najpierw w jakiś sposób musi być powiadomiony by dowalić do pieca. Skąd te info ma wziąć?
  • Odpowiedz
@Fox_Murder: jest to programowo zrobione, system decyduje czy przyspieszyć procesor czy nie. Te szybsze rdzenie są włączane jeśli zużycie tych słabszych jest wystarczająco wysokie. Zazwyczaj w ARMach jest to zestaw mały-duży i chodzi tylko jeden z nich
  • Odpowiedz
@Fox_Murder: każdy mikroprocesor ma taki swój mały program wewnętrzny do obsługi peryferiów i rdzenia oraz bootloader - program ładujący system z pamięci stałej. System komunikuje się z tym mikrosystemem procesora i może kazać mu podnieść taktowanie, więc procesor nic nie wie, on tylko wykonuje rozkazy "tego u góry"
  • Odpowiedz
@Fox_Murder: no bo system wszystkim kontroluje, więc widzi że aplikacja używa np kilku wątków, więc wie że musi odpalić wincyj rdzeniuf, i tak samo widzi że aplikacja wykonuje sporo kodu itd, bo to on to odczytuje. I pewnie też może czytać jakieś parametry procesora, jak długość pipeline czy coś (zgaduję)
  • Odpowiedz
Jeśli działasz na linux'ie to poszukaj katalogów:

/sys/devices/system/cpu/cpuX/cpufreq

gdzie X to numer rdzenia (liczony od zera), tam możesz skalować częstotliwość ręcznie (twoja aplikacja może) albo ustawić schemat skalowania.

Jeśli
  • Odpowiedz
Ale najpierw w jakiś sposób musi być powiadomiony by dowalić do pieca. Skąd te info ma wziąć?

@Fox_Murder: Kiedy nie grasz, a np. przeglądasz mirko, to Twój komputer przez 99% czasu nic nie robi. Gdzieś tam w tle snują się jakieś smutne procesy, ale Twój główny proces, czyli np. przeglądarka (o ile nie odtwarza jakichś flashowych gównoanimacji) to czeka na input z klawiatury czy myszki. Więc kiedy system operacyjny chce
  • Odpowiedz
@Fox_Murder: inaczej, masz zadania, oraz mały fragment kodu. Każde zadanie wymaga czasu. Ten mały fragment kodu to na przykład sprawdzanie wartości jakiegoś timera. Czekasz aż program wróci do tego kodu w rutynie np. roud robin i sprawdzasz ile mu to zajęło. Na tej podstawie możesz estymować obładowanie procesora.
Kiedy zadanie jest proste to ten czas jest krótki. Jeśli mamy całą kupę złożonych zadań to wracamy do odczytu timera później i
  • Odpowiedz
@Fox_Murder: W linuchu masz np /proc/loadavg który pokazuje ile procesów czekało w kolejce w ciągu ostatniej minuty, pięciu minut i kwadransa. Zapewne więcej informacji można znaleźć w /proc/sched_debug lub /proc/schedstat.
  • Odpowiedz
Da się to zmienić? Chciałbym, żeby mój procesor był wykorzystywany tak, żeby zadania wykonywały się bez kolejki. Nie lubię na nic czekać. A ma co działać, bo procesor ma 14 rdzeni i 28 wątków.
  • Odpowiedz