PowerTOP 2007 yılında Intel tarafından yazılmış açık kaynak kodlu bir yazılım. Yaptığı iş biraz sistemde çalışan programların ne kadar işlemci, hafıza kullandığını sıralayan "top" programına benziyor, fakat bir farkla. PowerTOP sistemde çalışan programların, Linux çekirdeğindeki sürücülerin, ve donanım "interrupt"larının işlemcinizi ne kadar sıklıkta uyandırdığını gösteriyor.
İşlemciyi Uyandırmak Ne Demek?
Günümüz işlemcileri (ve işlemcilerden de öte, sabit disklerden CD sürücülerine, hatta veriyolu kontrolcülerine kadar neredeyse tüm donanımlar) çeşitli yöntemlerle harcadıkları elektriği azaltabiliyorlar. Bir bilgisayarda harcanan elektriğin azaltılmasının 3 temel faydası var:
- Dizüstü bilgisayarlarda azalan harcamayla birlikte artan pil ömrü
- Sunucularda tek tek yüzlerce sunucunun azalan elektrik harcamasıyla birlikte azalan maliyetler, elektrik ve soğutma masrafları
- Soğutma demişken, dizüstü bilgisayarınızın klavyesi elinizi yakmıyor mu bazen? Azalan ısı.
Cx Durumları
Konumuza dönersek, bir işlemcinin destekleyeceği çeşitli Cx durumları var. C0 'dan başlayıp C1 C2 C3 ... diye devam eden bu durumlar, ACPI standardında belirtiliyor ve ne şekilde güç tasarrufu yapılacağını belirtiyor.
Mesela C0 durumu, işlemcinin normal şekilde çalışması komutları işlemesi durumu, C1 durumu işlemcinin komut çalıştırmaması ve gerekmeyen modüllerini kapatarak enerji tasarrufu yapması; ama her an "aniden" uyandırılmaya hazır olması anlamına geliyor. C2 durumu C1'e benziyor, fakat işlemcinin uyanması daha uzun sürüyor (bu sayede daha derin bir uykuya geçerek daha fazla enerji tasarrufu yapabiliyor). C3 durumu ise işlemcinin üzerindeki önbelleğin bile elektriğini kestiği bir durum. İşlemci üreticileri kendilerince 4'ten daha fazla durum da kullanabiliyor, fakat ACPI standardının tanımları sadece C0-C3 arası için geçerli. Farkedeceğiniz gibi bu C durumlarında, yandaki rakam büyüdükçe güç tüketimi önemli ölçüde azalıyor.
Px Durumları
Cx durumlarından başka bir de farkında olduğumuz Px durumları var. Bu da ne şimdi demeyin, günümüzde buna hepimiz marka isimleriyle alışığız: Intel SpeedStep ya da AMD PowerNow! / Cool'n'Quiet, VIA Powersaver adıyla bu teknolojiyi biliyoruz. İşlemcinin yazılım kontrollü olarak anlık ihtiyacımıza göre çalışma frekansını arttırıp azaltabilmesi. Bu sayede işlemcimizi yoracak bir yazılım aktif olmadığı müddetçe işletim sistemimiz işlemcimizi daha düşük frekanslarda çalıştırarak daha fazla enerji tasarrufu yapabiliyor.
İşlemciyi Uyandırmak Diyorduk?
İşletim sistemimiz, işlemci kullanılmadığı zamanlarda işlemciyi çeşitli Cx ve Px durumlarına geçirerek olabildiği kadar çok enerji tasarrufu yapmaya çalışıyor. Fakat sözünü ettiğimiz bir koşul var: "işlemci kullanılmadığı zamanlarda". Herhangi bir yazılım, bir donanım, hatta linux çekirdeği içinde bir donanım sürücüsü olur da işlemciyi kullanması gerekirse işlemciyi uyandırtıyor. İşlemci uyandığında, daha düşük tüketimli durumlardan daha yüksek durumlara geçmeye mecbur. C0'ın C3 'e oranla çok daha fazla güç tükettiğini biliyoruz, aynı şekilde 2.0Ghz 'de çalışan bir işlemcinin de 1.0Ghz 'de çalışan bir işlemciye göre. Öyleyse işlemcinin daha sık uyanmasına sebep olan programları takip ederek güç tüketimimizi kontrol altına alabiliriz.
PowerTOP Kurulumu
PowerTOP yazılımını, sitesi olan www.lesswatts.org'dan kaynak kodunu indirerek kendimiz derleyebileceğimiz gibi, kullandığımız linux dağıtımının paket yöneticisinden de kurabiliriz. Ben ikinci yolu seçtim.
$ sudo apt-get install powertop
PowerTOP Kullanımı
Programın düzgün veri toplayabilmesi için, root hesabından çalıştırılması gerekiyor:
$ sudo powertop
PowerTOP açıldığı zaman, ilk önce gerekli bilgiyi toplamak için bizi birkaç saniye bekletiyor. Daha sonra bizi 4 parçalı bir ekran karşılıyor.
En tepede işlemcimizin ne kadar sürede hangi C durumunda ve ne kadar sürede hangi frekansta çalıştığını görebiliyoruz. Unutmayın büyük rakamlı C durumlarında daha fazla zaman geçirmesi daha iyiye işaret.
Ortada bazen kırmızı bazen mavi bir bant var. Bantın üzerinde işlemcimizin saniyede kaç kere C3 durumundan uyandırıldığı yazıyor. Bu sayı ne kadar az olursa o kadar iyi. Benim dizüstümde şu anda bu sayı 336, fakat çeşitli işlemlerle 100'e kadar düşürmeyi başarabiliyorum.
Kırmızı bantın altında, dizüstü bilgisayarında çalışıyorsak ve bilgisayarımızı şarjdan çıkarırsak tahmini güç harcaması yer alıyor. Bilgisayar pilde çalışmadığı sürece PowerTOP güç harcamasını öğrenemiyor, çünkü bu bilgiyi pilin boşalma hızından alıyor.
Mesela benim dizüstü bilgisayarım olağan kullanımımda 21 Watt civarında güç harcıyormuş, bir şeyleri kısarak 15-16 Watt civarına düşürebiliyorum. Ayrıca ekranımın en parlak ile en sönük hali arasında 5W tüketim farkı olduğunu da burası sayesinde öğrendim.
Daha aşağıda işlemcimizin uyanmasının sebepleri sıralanıyor. Burada dediklerine yapabileceğimiz fazla bir şey yok, belki o donanımı çıkartmak/iptal etmek (bir kablosuz kartı) ya da kullanılmayan donanımın sürücüsünü sistemden kaldırmak (hiç kullanmadığımız bir bluetooth arabirimi) bir çözüm olabilir. Bunun dışında çeşitli programların da işlemcimizi kaç defa uyandırdığını buradan görüyoruz. Gereksiz olanlarını kullanmamak, ya da daha performanslılarını tercih etmek elimizde.
Ekranın en altında PowerTOP işlemciyi en fazla uyandıran programlara göre bize çeşitli öneriler sunuyor, mesela değişen dosyaların sabit sürücüye yazılma aralığını 5 saniyeden 15 saniyeye çıkartmak ya da bluetooth sürücüsünü iptal etmek gibi.
Neler yapılabilir?
İşlemciyi çok uyandıran sorunlu programları PowerTOP kullanarak tespit etmek mümkün. Zaten PowerTOP kullanarak oldukça çok programda sorunlar bulunmuş, düzeltilmiş ve bulunmaya da devam ediliyor. Mesela dizüstü bilgisayarımdaki Intel 915 çipsetli ekran kartım, 3B aktif olduğu zaman saniyede 100 kere işlemciyi uyandırıyor. Eğer 3 boyutlu efektlerden vazgeçer ve bunu X.Org ayar dosyasından iptal edersem, yaklaşık 1-2W 'lık bir güç tasarrufu yapabiliyorum. 10% güç tasarrufu 2 buçuk saat giden bir bataryada 15 dakika daha fazla şarj süresi verir.
Programlardaki bilinen sorunlar (düzeltilmiş ve henüz düzeltilmemiş) PowerTOP'ın kendi sitesinde de tespit edildikçe yayınlanıyor. Bu sorunlar tespit edildikçe düzeltiliyor ve biz GNU Linux bilgisayarımızın işletim sistemini ve programlarını güncelledikçe bilgisayarımız daha az güç harcar, daha az ısınır, pili daha uzun sürede boşalır hale geliyor.
Aslına bakarsanız işlemcileri sık sık uyandıran programlardaki sorun biraz da tarihsel. Birkaç sene öncesine kadar Linux çekirdeğinde 100Hz lik bir zamanlayıcı vardı. Bu zamanlayıcı işlemcinin saniyede 100 kere uyanmasına sebep oluyordu. Programların geliştiricileri de buna güvenenerek en gerekmeyen yerlerde bile zamanlayıcı kullanmaktan çekinmediler (mesela kullandığım e-posta programı saniyede 10 defa işlemcimi uyandırıyormuş, sadece gönderilecek diye kaydettiğim posta var mı bakmak için! Halbuki gönder düğmesine bastığımda haberi oluyor, zamanlayıcıya ne gerek var?).
Linux çekirdeğinin "tickless", yani bu 100Hzlik zamanlayıcısı olmayan bir hale gelmesiyle, bu sefer "n'olacak ki zamanlayıcı kullanırım" mantığını kullanan programlar işlemciye bir yük oluşturmaya başlamış. Neyse ki bunlar tek tek bulunup düzeltiliyor, PowerTOP gibi uygulamalar sayesinde dizüstü bilgisayarlarımız daha az ısınıyor ve şarjları daha uzun gidebiliyor.