Srovnání linuxových ovladačů pro grafické karty Nvidia

Při příležitosti ohlášení nových nvidia beta-driverů (302.07) pro linux, které konečně přináší podporu pro xrandr, jsem se rozhodl udělat malý test, jak jsou na tom vlastně jednotlivé ovladače s výkonem.

Testování proběhlo na dvou strojích: Jednak na notebooku s Nvidia Quadro NVS 140M a CPU Intel Core2Duo T7500 @ 2.2 GHz, 1680×1050 a jednak stolním PC s Nvidia GeForce GTX 560 Ti a CPU Intel Core2Quad Q9550 @ 2.83 GHz, 1920×1080.  Na obou strojích běžel Archlinux s jádrem 3.3.4 a KDE 4.8.3. Testoval jsem jak FPS v samotném KDE, tak v několika aplikacích – glxgears, Minecraft a Unigine-heaven benchmark. Unigine benchmark byl spouštět při vypnutých efektech kwin. Ty měly sice jen minimální význam (pro fullscreen aplikace se standardně nepoužívají), ale pro vyšší relevantnost jsem je vypnul úplně.

Některé testy jsem provedl na notebooku o den dřív na mírně starší verzi KDE, i ovladačů Nvidia, jsou tedy zahrnuty pro porovnání. Na konci pak je i výsledek Unigine benchmarku a Minecraftu pod Windows 7.

Výsledky testů:

Stroj 1

Aktuální stav ovladačů pro Nvidia Quadro NVS 140M na linuxu (testováno v KDE 4.8.2 a Minecraft 1.2.5), CPU Intel Core2Duo T7500 @ 2.2 GHz:

Nvidia 295.40, KDE 4.8.2

KDE s efekty (měřeno integrovaným měřákem v efektech):

  • KDE po spuštění: 60
  • změna velikosti okna: kolem 40

Minecraft:

  • s efekty kwin: 40-50
  • bez efektů kwin: 57-65

glxgears:

  • s efekty kwin: 2200-2300
  • bez efektů kwin: cca 4000

Unigine heaven:
API: OpenGL, Tessallation: low, shaders: none, anisotropy: none, stereo 3D: disabled, multimonitor: disabled, antialiasing: none, fullscreen, 640×480

  • FPS: 7,6
  • Scores: 192
  • Min FPS: 4.6
  • Max FPS: 19,2

Nvidia 302.07: celkem jednoduché, tak o 5 FPS nižší všude, glxgears jsem zapomněl :(

Nouveau 8.0.2:

  • KDE po spuštění: 100
  • změna velikosti okna kolem 40 FPS, možná mírně nižší, než nvidia 295
  • Minecraft: až 30 s vypnutými kompozitními efekty, pod 20 se zapnutými.
  • glxgears 500-600 FPS

––––––––––––––––––––––––––––––––––
Aktuální stav ovladačů pro Nvidia Quadro NVS 140M na linuxu (testováno v KDE 4.8.3 a Minecraft 1.2.5), CPU Intel Core2Duo T7500 @ 2.2 GHz:

Nvidia 295.4:
KDE s efekty (měřeno integrovaným měřákem v efektech):

  • KDE po spuštění: 60
  • změna velikosti okna: 30-40

Minecraft:

  • s efekty kwin: kolem 40
  • bez efektů kwin: 50-60

glxgears:

  • s efekty kwin: cca 2200
  • bez efektů kwin: cca 3800

Unigine heaven:
API: OpenGL, Tessallation: low, shaders: none, anisotropy: none, stereo 3D: disabled, multimonitor: disabled, antialiasing: none, fullscreen, 640×480

  • FPS: 7,9
  • Scores: 199
  • Min FPS: 4,7
  • Max FPS: 19,9

––––––––––––––––––––––––––––––––––
Nvidia 302.7
KDE s efekty (měřeno integrovaným měřákem v efektech):

  • KDE po spuštění: 60
  • změna velikosti okna: 35-40

Minecraft:

  • s efekty kwin: 40-50
  • bez efektů kwin: 60-70

glxgears:

  • s efekty kwin: kolem 2400
  • bez efektů kwin: kolem 4000

Unigine heaven:
API: OpenGL, Tessallation: low, shaders: none, anisotropy: none, stereo 3D: disabled, multimonitor: disabled, antialiasing: none, fullscreen, 640×480

  • FPS: 1,8
  • Scores: 45
  • Min FPS: 1,4
  • Max FPS: 2,5

––––––––––––––––––––––––––––––––––
Nouveau  8.0.2:
KDE s efekty (měřeno integrovaným měřákem v efektech):

  • KDE po spuštění: 100
  • změna velikosti okna: kolem 40

Minecraft:

  • s efekty kwin: 13-15
  • bez efektů kwin: 20-30

glxgears:

  • s efekty kwin: 260
  • bez efektů kwin: kolem 500

Unigine heaven:
API: OpenGL, Tessallation: low, shaders: none, anisotropy: none, stereo 3D: disabled, multimonitor: disabled, antialiasing: none, fullscreen, 640×480

  •  FPS: 1,9
  • Scores: 48
  • Min FPS: 1
  • Max FPS: 6,7
Grafy:

––––––––––––––––––––––––––––––––––
Stroj 2

Aktuální stav ovladačů pro Nvidia GeForce GTX 560 Ti na linuxu (testováno v KDE 4.8.3 a Minecraft 1.2.5), CPU Intel Core2Quad Q9550 @ 2.83 GHz:
Nvidia 295.49:
KDE s efekty (měřeno integrovaným měřákem v efektech):

  • KDE po spuštění: 60
  • změna velikosti okna: kolem 40

Minecraft:

  • s efekty kwin: 370
  • bez efektů kwin: 420

glxgears:

  • s efekty kwin: kolem 11800
  • bez efektů kwin: kolem 17900

Unigine heaven:
API: OpenGL, Tessallation: low, shaders: none, anisotropy: none, stereo 3D: disabled, multimonitor: disabled, antialiasing: none, fullscreen, 640×480

  • FPS: 120,5
  • Scores: 3034
  • Min FPS: 40,1
  • Max FPS: 227,1

API: OpenGL, Tessallation: extreme, shaders: high, anisotropy: 16x, stereo 3D: disabled, multimonitor: disabled, antialiasing: 8x, fullscreen, 1920×1080

  • FPS: 23
  • Scores: 583
  • Min FPS: 13,6
  • Max FPS: 52,6

––––––––––––––––––––––––––––––––––
Nvidia 302.7
KDE s efekty (měřeno integrovaným měřákem v efektech):

  • KDE po spuštění: 60
  • změna velikosti okna: 45-50

Minecraft:

  • s efekty kwin: 270-330
  • bez efektů kwin: 350-390

glxgears:

  • s efekty kwin: cca 11500
  • bez efektů kwin: cca 17500

Unigine heaven:
API: OpenGL, Tessallation: low, shaders: none, anisotropy: none, stereo 3D: disabled, multimonitor: disabled, antialiasing: none, fullscreen, 640×480

  • FPS: 122,1
  • Scores: 3075
  • Min FPS: 36,5
  • Max FPS: 229,2

––––––––––––––––––––––––––––––––––
Nouveau 8.0.2:
KDE s efekty (měřeno integrovaným měřákem v efektech):

  • KDE po spuštění: 100
  • změna velikosti okna: kolem 50

Minecraft:

  • s efekty kwin: 13-15
  • bez efektů kwin: 16-17

glxgears:

  • s efekty kwin: 610
  • bez efektů kwin: 940

Unigine heaven:
API: OpenGL, Tessallation: low, shaders: none, anisotropy: none, stereo 3D: disabled, multimonitor: disabled, antialiasing: none, fullscreen, 640×480

  • FPS: 8.6
  • Scores: 217
  • Min FPS: 4.9
  • Max FPS: 17.9

Poznámka: jediná barva bylo nebe v pozadí, vše ostatní bylo černé

––––––––––––––––––––––––––––––––––
Pro srovnání – stroj 2 na windows 7, verze ovladačů: 301.24, zapnuté Aero:

Unigine heaven:
API: OpenGL, Tessallation: low, shaders: none, anisotropy: none, stereo 3D: disabled, multimonitor: disabled, antialiasing: none, fullscreen, 640×480

  • FPS: 104
  • Scores: 2620
  • Min FPS: 28.3
  • Max FPS: 224.7

Minecraft: kolem 240 FPS s HD texturami

Grafy:

Shrnutí:

Výkonový rozdíl mezi jednotlivými verzemi Nvidia ovladačů je vcelku rozporuplný, pokles v jednom testu vyvažuje zlepšení v jiném, navíc to závisí i na konkrétní kartě: Zatímco na stroji jedna došlo u beta driverů v unigine k obrovskému propadu, na stoji 2 naopak došlo k mírnému zlepšení.

Nouveau dosahuje příjemných výsledků pouze v rámci samotného KDE, jakmile si však musí poradit s náročnější grafikou, výkon padá dolů a očividně není ani bez chyb.

Jako nejlepší řešení se tedy jednoznačně jeví setrvat u stabilních verzí oficiálních ovladačů a po Nouveau sáhnout jen v případě, že opravdu nebude potřeba 3D akcelerace.

A na závěr je poněkud překvapivý rozdíl ve výkonu oproti Windows – skoro 500 bodů v benchmarku navíc, stejně jako několik desítek FPS – to je zhruba 16% dolů oproti Linuxu.

Poznámka: S podobným testováním mnoho zkušeností nemám, ani se jinak ovladači nezabývám. Pokud jsem někde udělal chybu, nebo usuzuji něco špatně, můžete mi to říct, ale nezlobte se :D .

Edit: opraveny prohozené hodnoty s/bez efektů kwin… Efekty vždy znamenaly větší či menší pokles, nikdy ne růst.

Cloud svépomocí 1

Pokud po přečtení nadpisu čekáte návod na spuštění super-hyper-mega-cool cloudového startupu, musím vás zklamat. Tento pamflet je o náhradě Dropboxu a podobných služeb vlastním řešením.

Když jsem někdy na konci roku 2009 začal řešit potřebu synchronizace souborů mezi několika stroji společně s pravidelným zálohováním, poohlížel jsem se po hotovém řešení. První volba padla na jednoduchou synchronizaci z jednoho stroje na druhý, toto řešení ale vyžadovalo, abych měl oba stroje zapnuté současně a rozhodně nešlo o pravidelnou činnost. Navíc se často stávalo, že jsem potřeboval použít druhý stroj v okamžiku, kdy jsem na něm neměl aktuální repliky a v těchto okamžicích vznikaly problémy.

O několik měsíců později (v roce 2010) jsem se tedy prozkoumal nabídku komerčních nabídek, vyzkoušel poskytované účty zdarma a nakonec zakoupil roční licenci na SpiderOak plus. Ten měl oproti jiným službám výhodu ve větší bezpečnosti (soubory šifruje na klientské straně, takže poskytovatel nemá možnost číst data), konfigurovatelnosti (umí synchronizovat víc než jeden adresář), verzování souborů a klienta pro Linux i Windows. V té době byl asi jediným programem, který by poskytoval všechny tyto vlastnosti najednou.

Počáteční nadšení ale začalo opadat, jak vyplouvaly na povrch zdánlivé maličkosti jako třeba při přeinstalaci PC, pokud jsem odstranil z disku synchronizovaná data, musím tento pc přidat pod novým názvem, přičemž starý v systému zůstává a nemohu jej odebrat bez ztráty dat. A nebo nervy drásající pomalost, kdy trvalo i několik minut, než stáhl a obnovil smazaný soubor o pár MB. Synchronizace nějakých 30 GB byla záležitost na celý den, či dva, kdy pc musel trvale běžet. A asi bych si vzpomněl i na další nepříjemnosti. A tak jsem chvíli před uplynutím ročního předplatného začal hledat jiné možnosti.

Rychlá prohlídka komerčních řešení mě tentokrát už nezaujala. Objevilo se sice několik nových hráčů na trhu, nicméně já měl už mnohem konkrétnější požadavky, ke kterým navíc přibyla potřeba mobilního (Android, možná i iPhone) klienta, který umožní i nahrávat nové a upravené soubory. V současnosti to umí už snad všichni větší hráči, v roce 2011 ale byla situace horší.

Rozhodl jsem se tedy ohlížet po řešení svépomocí na domácím serveru. Ve „spolupráci“ s několika diskuzními fóry jsem prozkoumal řadu možností:

  • GIT/SVN – problém s  přístupem bez GIT klienta, problémy s projekty, které mají vlastní GIT, …
  • Bacula (a jiné korporátní systémy) – raketomet na komára. Takové řešení by bylo zbytečně komplikované na moje požadavky, byť jsem o tom vážně uvažoval.
  • Rsync – výborný pouze pro jednosměrnou synchronizaci, obousměrně nepoužitelný
  • Unison – tento program, který je postavený na protokolech rsync umí obousměrně synchronizovat
  • Další možnosti, které si nepamatuji :)

Nakonec jsem vybral Unison pro zajištění synchronizace se serverem (topologie hvězda) v kombinaci se ssh jako komunikačním protokolem pro šifrování dat po cestě, kdy je jako souborový systém použito btrfs, na kterém se pravidelně vytváří snapshoty – sice ne úplně optimální, ale přesto funkční verzování – a dodatečně rsync pro zálohování na sekundární disk.

Protože toto řešení už nějakou dobu spokojeně používám, rozhodl jsem se o sepsat podrobnější informace a postup i pro ostatní a učiním tak v druhé části tohoto traktátu (až ji napíšu :-) ).

Podivná viditelnost na Facebook chatu

Facebook logoFacebook umožňuje svým uživatelům roztřídit své přátele do skupin, přičemž jeden uživatel může být ve více skupinách – a pro každou skupinu lze nastavit, zda vás uživatelé z této skupiny mohou na chatu vidět online. Navíc, pokud je uživatel jen v „offline“ skupině, ani vám nepřekáží v online přátelích. To je rozhodně pozitivní věc. Problém je ale v tom, když jednoho přítele máte jak ve skupině, pro kterou jste offline, tak ve skupině, pro kterou jste online. Jakpak vás asi uvidí tento přítel?

Ať zvedne ruku, kdo si myslí, že online. Zvedli jste? V tom případě jste udělali stejnou chybu, jako já. Facebook k tomu přistupuje stylem „ALLOW, DENY“, neboli, pokud je uživatel ve skupině, která je nastavená jako offline, uvidí vás offline bez ohledu na to, že ho máte v X dalších skupinách, pro něž jste online.

Možnost nastavovat neviditelnost pro jednotlivé skupiny tedy poněkud ztrácí smysl, protože pokud máte velkou část Facebookových přátel ve více skupinách (a pro část z nich nechcete být trvale online), nezbývá vám, než vytvořit si speciální skupinu „trvale offline“ a do ní jednotlivce přidat. Toto řešení je ale poněkud pracné (nelze jednorázově přepnout celou skupinu) a jednak nedokonalé, neboť se vám všichni přátelé zobrazují v chatu a zbytečně jej znepřehledňují, byť oni sami vás opravdu vidí offline.

Pokud bych přišel na nějakou možnost, jak toto chování změnit, dopíšu to sem.