Portál AbcLinuxu, 27. května 2024 14:47

Intel Core i5/i7 na plný výkon

27. 6. 2012 | Luboš Doležel
Články - Intel Core i5/i7 na plný výkon  

V tomto krátkém článku se podíváme na schopnosti procesorů Intel Core i5/i7 a na to, jak zkontrolovat, že jich plně využíváte.

Obsah

Turbo Mode

link

Tyto procesory jsou vybaveny takzvaným Turbo Mode. Nebudeme zde rozebírat, za jakých podmínek je tento režim procesorem používán a rovnou si představíme program i7z. i7z je nástroj, který přistupuje k informacím z MSR (Model-specific register) a může tak získávat extra údaje z procesoru. MSR vyžaduje podporu ze strany jádra – lze ověřit nahlédnutím do /dev:

$ ls -l /dev/cpu/*/msr 
crw------- 1 root root 202, 0 Jun 26 20:18 /dev/cpu/0/msr
crw------- 1 root root 202, 1 Jun 26 20:18 /dev/cpu/1/msr
crw------- 1 root root 202, 2 Jun 26 20:18 /dev/cpu/2/msr
crw------- 1 root root 202, 3 Jun 26 20:18 /dev/cpu/3/msr

Pokud tato znaková zařízení nemáte, můžete zkusit modprobe msr nebo se rovnou podívat do nastavení jádra:

Intel Core i5/i7 na plný výkon

Pokud je podpora msr v modulu, je nutné brát na vědomí, že tento modul není obvykle automaticky načítán. Více se dozvíte v man 4 msr. Jakmile máme device nodes na místě, můžeme i7z spustit (jako root). Program bude chvíli sbírat informace a následně nám zobrazí přehled frekvencí jednotlivých jader spolu s údaji, kolik času tráví procesor v jednotlivých stavech (C0-C6).

Intel Core i5/i7 na plný výkon

Pokud máte K variantu procesoru s odemknutým násobičem, tak se vám aktuální hodnota násobiče hodí pro ověření, že v BIOSu nastavené přetaktování skutečně funguje. Osobně mi pro vyhnání násobiče na maximum stačí:

$ while true; do true; done

Případně můžete tento příkaz spustit pro každé jádro CPU nebo využít služeb programu cpuburn. Násobič se hned dostal na hodnotu nastavenou v BIOSu (40×).

Intel Core i5/i7 na plný výkon

Kromě maximálního výkonu nás ale může zajímat i maximální úspornost ve chvílích, kdy výkon nepotřebujeme. Pokud jako já ve výchozím nastavení BIOSu máte ve sloupečcích C3 a C6 samé nuly, tak jsou tyto úsporné stavy na procesoru zakázány. Toto nastavení obvykle najdete pod záložkou Power Management – a pozor, volba Automatic mnohdy znamená Disabled.

Na stránkách programu i7z najdete také skript i7z_rw_registers.rb. Ten je oproti i7z jednodušší, ale rovnou ukazuje, jak údaje získává. Na vybraných procesorech je schopen zobrazit aktuální výkon ve wattech, případně s ním můžete snižovat základní frekvenci nebo měnit nastavení násobiče.

>> clock
clock : allows for software clock modulation ( a form of throttling )
 a good link for understanding this is http://paulsiu.wordpress.com/2007/06/23/does-on-demand-clock-modulation-odcm-conserve-battery/
   probable commands are
        clock set <number> : set the number to one of the below or in range between 0-100
                and i will automatically to the value nearest to
                12.5, 25.0, 37.5, 50.0, 63.5, 75, 87.5  (nehalem)
                sandy bridge supports 6.25% increments
                but, I (the tool) is not smart yet to distinguish between nehalem and sb
                so setting to 12.5 increment
             set <number> to 1 for 12.5%, 2 for 25%, 3 for 37.5%, 4 for 50%, 
                5 for 63.5%, 6 for 75% and 7 for 87.5%
        clock status        : get clock modulation status
        clock disable       : disable clock modulation

Kompilace

link

Od doby, co je možné v GCC používat -march=native už to není takové, ale alespoň můžeme právě schopnost autodetekce použít k zobrazení toho, co procesor umí.

$ gcc -c -Q -march=native --help=target

Na nejnovějších procesorech i5 a i7 stojí za pozornost podpora Intel AVX, neboli nové SIMD instrukce. Na i7, ale i na i5, se to projeví následovně:

$ gcc -c -Q -march=native --help=target | grep march
  -march=                               corei7-avx

avx naleznete rovněž v /proc/cpuinfo.

Virtualizace

link

Hardwarovou podporu virtualizace vám potvrdí obsah souboru /proc/cpuinfo. V příznacích (flags) procesoru figuruje vmx, ale nemusíte ještě mít vyhráno.

Přítomnost znakového zařízení /dev/kvm potvrzuje, že máte v jádře podporu KVM a HW akcelerace funguje. Mnohdy ale tento soubor schází, protože je podpora hardwarové akcelerace zakázaná ve výchozím nastavení BIOSu:

$ dmesg | grep kvm
[    0.652909] kvm: disabled by bios
[    0.653075] kvm: no hardware support

Pokud ani takový výstup nemáte, zkuste modprobe kvm-intel. Jestliže si jádro sestavujete sami, zkontrolujte nastavení pod Virtualization:

Intel Core i5/i7 na plný výkon

Některé základní desky umožňují i hardwarově asistovanou virtualizaci MMU (u Intelu nazýváno VT-d). Zjednodušeně řečeno pak můžete do virtuálních strojů připojovat hardware přítomný ve vašem systému a nemyslím tím zrovna USB zařízení – může jít o grafické karty, síťové karty apod. Jak se můžete dočíst v poradně, chce to trochu vůle a štěstí.

OpenGL

link

Grafický procesor integrovaný do těchto procesorů je relativně výkonný. Zatímco na hraní her typu OpenArena mi bohatě stačilo softwarové vykreslování a ani jsem nepoznal zradu, při zkoušení Unreal Tournamenu 2004 jsem už trochu pohořel a byl jsem rád, že to po chvíli havarovalo, protože jinak bych se k ukončení jen tak nedopracoval. Je proto vhodné si ověřit, zda je integrovaná grafika využívána:

$ glxinfo | grep renderer
OpenGL renderer string: Mesa DRI Intel(R) Ivybridge Desktop

Pokud se vám zobrazí například llvmpipe, něco není v pořádku. Měl by se používat DRI ovladač i965. S tím si i zmiňovaný UT2004 zahrajete...

Akcelerace videa

link

...tedy přesně jeho dekomprese probíhá přes VA-API. Základním potvrzením funkčnosti je výstup vainfo:

$ vainfo
libva: VA-API version 0.33.0
libva: va_getDriverName() returns 0
libva: Trying to open /usr/lib64/va/drivers/i965_drv_video.so
libva: Found init function __vaDriverInit_0_33
libva: va_openDriver() returns 0
vainfo: VA-API version: 0.33 (libva 1.1.0)
vainfo: Driver version: Intel i965 driver - 1.0.18
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileH264Baseline           : VAEntrypointVLD
      VAProfileH264Baseline           : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointVLD

Tyto procesory obecně nemají velký problém s přehráváním H.264, ale i tak může přilepšení potěšit. Podporu VA-API najdete ve frameworku GStreamer (v příslušném modulu), ve speciálních větvích MPlayeru nebo ve VLC. Před VLC bych si dovolil varovat – dle mých zkušeností použití VAAPI ve VLC zátěž procesoru značně zvyšuje a ani s „konkurenčním“ VDPAU (grafické karty NVIDIA) to není o moc lepší. Pěkný přehled najdete na intellinuxgraphics.org.

Opomíjenou a ne příliš využívanou funkcí je podpora hardwarového kódování do H.264. Pohrát si můžete s nástrojem avcenc z pokud možno vývojové verze knihovny libva:

usage: avcenc [options]
  where options are:
  -help or -h
  -input  or -i 
  -output  or -o 
  -width  or -w 
  -height  or -h 
  -cqp : use const qp mode
  -cbr : use const bitrate mode
  -fps  or -f 
  -i_frame_only: use i frames only	
  -i_p_frame_only: use i and p frames
  -i_p_b_frame: use i, p and b frames
  -cavlc :use cavlc, default is to use cabac

Další články z této rubriky

Praktický test komprese ZPAQ v programu lrzip
Porovnávání souborů PDF
Microsoft rozdává zadarmo stovky e-knih
Minimalistické prezentace s Markdown
Kde hledat Creative Commons a alternativy

Diskuse k tomuto článku

27.6.2012 09:05 kavol | skóre: 28
Rozbalit Rozbalit vše Re: Intel Core i5/i7 na plný výkon
Odpovědět | Sbalit | Link | Blokovat | Admin
jen doplním, že vainfo není samostatný balíček, nýbrž součást libva(-utils)
27.6.2012 10:54 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Intel Core i5/i7 na plný výkon

Ono asi bude zalezat od distribucie samotnej, bo na Debian-e je vainfo samostatny balik.

27.6.2012 11:06 kavol | skóre: 28
Rozbalit Rozbalit vše Re: Intel Core i5/i7 na plný výkon
jop, pardon, to jsem zapomněl zmínit, že to platí mimo Debian a klony - kteréžto budou mít kolizi jmen, až budou chtít začlenit VAinfo
27.6.2012 18:35 .
Rozbalit Rozbalit vše Re: Intel Core i5/i7 na plný výkon
LOL
27.6.2012 20:05 snajpa | skóre: 20 | blog: snajpuv_blocek | Brno
Rozbalit Rozbalit vše Re: Intel Core i5/i7 na plný výkon
Odpovědět | Sbalit | Link | Blokovat | Admin
A co AES-NI?
--- vpsFree.cz --- Virtuální servery svobodně
Luboš Doležel (Doli) avatar 27.6.2012 20:44 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Intel Core i5/i7 na plný výkon
No, nebudu zmiňovat každou instrukční sadu, co tam je ;-)
27.6.2012 20:46 snajpa | skóre: 20 | blog: snajpuv_blocek | Brno
Rozbalit Rozbalit vše Re: Intel Core i5/i7 na plný výkon
Spis jsem tim myslel, ze v soucasnych stable distribucich vetsinou AES-NI neni zakompilovany (minimalne v Debianu nebyl) a kdyz pouzivam sifrovani disku, tak se to docela hodi (obzvlast v notebooku kvuli spotrebe).
--- vpsFree.cz --- Virtuální servery svobodně
27.6.2012 21:13 Pindal
Rozbalit Rozbalit vše Re: Intel Core i5/i7 na plný výkon
No tak zrovna u Debianu se není čemu divit, že.
[pindal@abraxus ~]$ openssl engine
(aesni) Intel AES-NI engine
(dynamic) Dynamic engine loading support

[pindal@abraxus ~]$ grep ^driver.*aesni /proc/crypto 
driver       : xts-aes-aesni
driver       : pcbc-aes-aesni
driver       : lrw-aes-aesni
driver       : rfc3686-ctr-aes-aesni
driver       : rfc4106-gcm-aesni
driver       : __driver-gcm-aes-aesni
driver       : ctr-aes-aesni
driver       : __driver-ctr-aes-aesni
driver       : cbc-aes-aesni
driver       : cryptd(__driver-ecb-aes-aesni)
driver       : ecb-aes-aesni
driver       : __driver-cbc-aes-aesni
driver       : __driver-ecb-aes-aesni
driver       : __driver-aes-aesni
driver       : aes-aesni

[pindal@abraxus ~]$ cat /etc/issue
Fedora release 17 (Beefy Miracle)
Kernel \r on an \m (\l)

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.