Tuesday, November 5, 2013

kernel/debug/vgaswitcheroo


ლეპტოპობი, რომლებსაც ჰიბრიდული ვიდეო კარტა აქვთ [იგულისხმება, როდესაც  2 ვიდეო კარტა არის ლეპტოპზე, ძმლავრი მხოლოდ მაშინ ირთვება, როდესაც ამის რესურსი არის საჭირო. მიზანი ამ ვიდეო კარტების შექმნისა იყი ის რომ, დაეზოგად ბატარეის რესურსი. ცხადია GT 550 M რომ იყოს სულ ჩართული, ერთ საათიც არ დაჭირდება ბატარეა მთიანად რომ დასვას], საჭიროებენ ოპტიმიზაციას.

ერთერთი საშვალება ეკონომიის გასაკეთებლად არის პროექტი სახელად Bumblebee რომელიც რათქმაუნდა იდეალური არ არის, თუმცა ნელნელა ახალ ფუნქციონალურობას უმატებენ, და თანდათან უკეთესი ხდება. მეორე საშვალება კი ეს არის მექანიზმი კერნელისა, რომელსაც vga_switcheroo ვუწოდებთ. დავიწყოთ განხილვა:


vgaswitcheroo საშვალებით ადვილად შეგვიძლია ვაკნტროლოთ ჩვენი ვიდეოკარტების მუშაობა). vgaswitcheroo არის მექანიზმი კერნელში [ისე ზოგს სისტემა linux გონია, არადა მხოლოდ კერნელია ეს სისტემა კი Gnu/Linux] რომლის საშვალებითაც შეგვილია გადავერთოდ სხვადასხვა ვიდეოკარტებზე [ან ერთი გავთიშოთ ან მეორე და ასე შემდეგ]

იმის გასაგებად თუ რა ვიდეოკარტები გაქვთ შეგიძლიათ მარტივად მოვძებნოთ:

lspci | grep 'VGA'

და შედეგიც გვაქვს:
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 540M] (rev ff)
შეგვიძლია ასეც შეცამოწმოთ ჩვენი ვიდეოკარტები:
lspci -vnn | grep '\''[030[02]\]'

-ეს მექანიზმი ყველა გნუ/ლინუქსში არის ჩადებული?
- გააჩნია ვიდეო კარტის რა დრაივერს იყენებს. მხოლოდ იმ შემთხვევაში არის თუ უფენსორს დრაივერს იყენებს სისტემა. კერძოდ nouveau, radeonს. თუ Nvidiaსას იყენებს ან fglrx-ს, მაშინ არ აქვს. და შეგვიძლა შევამოწმოთ კერნელში არის თუ არა ჩადებული შემდეგნაირად:

grep -i switcheroo /boot/config-*
CONFIG_VGA_SWITCHEROO=y




შეგვიძლია შევქმნათ სკრიპტი, რომელსაც ხელით გავუშვებთ ხოლმე.
vakhoq@linux:~> cd [dir]>
vakhoq@linux: [dir]>  touch hybrid.sh
vakhoq@linux: [dir]>  vi hybrid.sh

შიგნით ვწერთ მაგალითად ვიდეოკარტის გათიშვას.

###################################################
#!/bin/sh
# მხოლოდ გავთიშოთ მეტი არაფერი echo OFF > /sys/kernel/debug/vgaswitcheroo/switch ####################################################

ვინახავთ :wq საშვალებით. მოკლედ, Nvidia ვთიშავთ, რათა ინტეგრირებულზე იყოს მხოლოდ ჩვენი ლეპტოპი. (გაითვალისწინეთ ფერმიშენები იქნება საჭირო ამ სკრიპტის გასაშვებად. ამიტომ sudo ან su გამოიყენეთ)
პ.ს საერთოდოდ rc.local ში შეგიძლიათ ჩააგდოთ სკრიპტი. ან after.local  ში , გააჩნია რომელ დისტროს იყენებთ. rc.local უბუნტუში after.local კი OpenSuse ში).



ამასთან სტატუსების შემოწმება, თუ რა მდგომარეობაშია ჩვენი ვიდეო კარტა შეგვიძლია შემდეგნაირად:
cat /sys/kernel/debug/vgaswitcheroo/switch
შევამოწმოთ რამდენად ოპტიმალურია ჩვენი სამუშაო.

ამისთვის ჯერ ჩავთოთ/გამოვრთოთ ვიდეოკარტაზე წვდომა, შემდეგ სტატუსები გამოვაჩინოთ და acpi საშვალებით დროებიც ვნახოთ  (დებიანზე apt-get install acpi , suse  zypper install acpi და ასე შემდეგ)

#############################################################
vakhoq@Gnulinux:~> su
Password: ******

Gnulinux:/home/vakhoq# echo ON > /sys/kernel/debug/vgaswitcheroo/switch Gnulinux:/home/vakhoq # cat /sys/kernel/debug/vgaswitcheroo/switch 0:IGD:+:Pwr:0000:00:02.0 1:DIS: :Pwr:0000:01:00.0 linux:/home/vakhoq# acpi Battery 0: Discharging, 85%, 00:55:07 remaining
Gnulinux:/home/vakhoq# echo OFF > /sys/kernel/debug/vgaswitcheroo/switch Gnulinux:/home/vakhoq # cat /sys/kernel/debug/vgaswitcheroo/switch 0:IGD:+:Pwr:0000:00:02.0 1:DIS: :Off:0000:01:00.0 Gnulinux:/home/vakhoq# acpi Battery 0: Discharging, 85%, 01:35:12 remaining #############################################################


როგორც ხედავთ საკმაოდ კარგი შედეგები გვაქვს.
ახლა სათითაოდ განვამრტოთ რას ნიშნავს გამონატილი შედეგები
IGD - ნიშნავს Integrated Graphic Device (ძირითადად Intel)
DIS: denotes DIScrete graphic device (nVidia ან ATI)
+ რომელსაც უწერია, ნიშნავს რომ ის ვიდეოკარტაა აქტიური.
დანარჩენს აღარ გავნამრტავ, ისედაც ცხადია. :)

No comments:

Post a Comment