PowerMonkey

Iš Žinynas.
Jump to navigation Jump to search

Sumažinkite procesoriaus energijos eikvojimą ir padidinkite našumą – ekologiškiau ir paprasčiau

Iki 2020-ųjų visi žinojo, kas yra „overclocking“: sistemos priartinimas iki jos ribų didinant jos darbo dažnį, įtampą arba abu. Šis procesas buvo labai kontraversiškas, tačiau jis buvo tobulinamas, net kai kurios sistemos buvo „gamykliškai paspartintos“.

Tačiau daug mažiau žmonių yra girdėję apie analogą: "undervoltage". Įtampos mažinimas yra tam tikra prasme priešingas procesas nei didinimas: sumažinus procesoriaus įtampą, CPU sunaudoja daug mažiau energijos ir generuoja daug mažiau šilumos.

Įdomu tai, kad tai padarius termiškai ribotai sistemai, tokiai kaip nešiojamasis kompiuteris arba SFF (mažos formos) kompiuteris, sumažins šilumą ir pagerins našumą! Magija? Ne, fizika! Nešiojamojo kompiuterio aušinimo sistema gali pašalinti tik dalį šilumos, o kai to neužtenka, nebelieka kitos išeities, kaip tik riboti centrinį procesorių, kad būtų išvengta katastrofiško gedimo. Sumažinus įtampą aukštais dažniais, žymiai sumažėja galia ir šilumos išeiga, todėl sistema tampa vėsesnė ir greitesnė.

Iššūkiai

Deja, vis sunkiau optimizuoti įprastą nešiojamąjį kompiuterį. Pirma, originalios įrangos gamintojai dažniausiai užrakina CPU įtampos reguliavimą. Šią problemą galima sušvelninti „atrakinant“ programinės aparatinės įrangos nustatymus, kad puikios programos, tokios kaip ThrottleStop, galėtų atlikti savo darbą (nebent platforma būtų visiškai užrakinta).

Tačiau matomos naujos problemos: hipervizorius kaip „Microsoft Hyper-V“ dabar naudoja net tokios galutinio vartotojo programos kaip WSL2 („Windows“ posistemė, skirta Linux). Kadangi „Hypervisor“ neleidžia virtualiai mašinai modifikuoti daugumos pagrindinio kompiuterio aparatinės įrangos registrų, tokios programos kaip „ThrottleStop“ arba „Intel XTU“ negali reguliuoti įtampos.

Kai programa bando įrašyti į aparatinės įrangos registrą, „Hypervisor“ sulaiko šį bandymą ir neatlieka tikrojo įrašymo. Teoriškai įmanoma, kad „Hypervisor“ pardavėjas įgyvendina rašymą, tačiau mažai tikėtina. Tai sukūrė naujų kliūčių įtampos reguliavimui ir panašiems aparatinės įrangos pakeitimams.

Niekas nesukeltų anksčiau minėtų problemų, jei originalios įrangos gamintojai leistų klientams koreguoti programinės įrangos sąrankos nustatymus. Tačiau daugumoje nešiojamųjų kompiuterių yra minimalios konfigūracijos parinktys, todėl savininkas negali koreguoti savo aparatinės įrangos. „PowerMonkey POC“ ketina išspręsti būtent šią problemą.

Kaip veikia „PowerMonkey“ ?

PowerMonkey naudoja UEFI programinės įrangos galimybę vykdyti vadinamąsias „programas“ prieš iškviečiant OS įkrovos programą. Tuo metu (su sąlyga, kad programinė įranga neužsiblokavo) galima (beveik) pilnai reguliuoti procesoriaus dažnį ir įtampą bei maitinimo valdymo konfigūraciją.

PASTABA: „PowerMonkey“ galima visiškai naudoti tik sistemose, naudojančiose S0iX („Connected Standby“ / „Modern Standby“ / „S0 Standby“) režimus. Sistemos, naudojančios seną S3 miego režimą, grįš į platformoje užkoduotus nustatymus, kai atnaujins S3 miego režimą. Kadangi UEFI DXE tvarkyklės / programos nėra įkeliamos iš naujo S3 atnaujinimo eigos metu, prieš atnaujinant „Hypervisor“ negalima taikyti jokių nepaisymų.

Dieginas

Reikalavimai

Kompiliavimas

Pasirašymas

Jeigu savo kompiuteryje turite išjungę secure boot, šį etapą galite praleisti.

Sukuriame failą x509-configuration.ini į jį irašome:

[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts

[ req_distinguished_name ]
O = ojoj
CN = COMPANY ojojoj
emailAddress = ojoj@ojojoj.lt

[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid

Generuojame sertifikatus:

 openssl req -x509 -new -nodes -utf8 -sha256 -days 36500 -batch -config x509-configuration.ini -outform DER -out public_key.der -keyout private_key.priv
 openssl x509 -in public_key.der -inform DER -outform PEM -out MOK.pem

Uždedame parašą ant PowerMonkey.efi

 sbsign --key private_key.priv --cert MOK.pem /boot/efi/EFI/PowerMonkey/PowerMonkey.efi --output /boot/efi/EFI/PowerMonkey/PowerMonkey.efi-signed
 mv /boot/efi/EFI/PowerMonkey/PowerMonkey.efi-signed /boot/efi/EFI/PowerMonkey/PowerMonkey.efi

Importuojame į Mok manager (suvedame slaptažodį kurį prisiminsime vėliau)

 mokutil --import public_key.der

Perkrovę kompiuterį spauskite enroll MOK ir suveskite slaptažodį kurį įvedėte prieš tai

Krovimas su Grub2

Redaguojame /etc/grub.d/40_custom įdedame įrašą:

 menuentry "Windows + Power Monkey" {
       insmod part_gpt
       insmod fat
       search --no-floppy --fs-uuid --set=root A4A3-6EB2
       chainloader /EFI/PowerMonkey/PowerMonkey.efi
       boot
       chainloader /EFI/Microsoft/Boot/bootmgfw.efi
       boot
 }

Reikalui esant jeigu norime nustatyti numatytają įkrovos reikšmę redaguojame failą /etc/default/grub ir pakeičiame šią eilute:

 GRUB_DEFAULT=6

Įgaliname naujus Grub nustatymus:

 grub2-mkconfig -o /boot/grub2/grub.cfg