Donanım Özelliklerini Görüntülemek

Kullanmakta olduğunuz Raspberry Pi sisteminin donanım ve yazılım bilgilerine erişmek isteyebilirsiniz. Bu işi yapmak için /proc dizini birçok faydalı bilgi sunar. Sonraki başlıklarda Raspberry Pi’ın donanım özellikleri hakkındaki detayları nasıl görüntüleyeceğiniz ve yorumlayacağınız hakkında pratik bilgiler yer almaktadır.

vcgencmd aracı ile sistem çipini sorgulamak

Raspberry Pi’ın omurgasını oluşturan sistem çipi de diyebileceğimiz BCMxxxx çipi içerisinde CPU/GPU/GPIO arabirimleri gibi birçok bileşeni bulunduran bir pakettir (SoC). Bu çipin içerisinde Raspberry Pi’ın açılışından kapanışına kadar birçok görevi icra eden ve sistem içindeki donanımsal olayları takip eden (monitoring) bir de yazılım bulunur. Bu yazılıma firmware ya da bellenim yazılımı denir ve SD kartta yüklü işletim sisteminden tamamen bağımsızdır.

vcgencmd (video core generall commands) aracı, Raspberry Pi’ın sistem çipi olan BCMxxxx’in  (Raspberry Pi 3 için BCM2837) bazı donanımsal seçeneklerini sorgulamak ve değiştirmek için kullanılabilir. Broadcom firması tarafından sağlanan araç BCMxxxx’in bazı özelliklerini etkinleştirme/kapatma, CPU/GPU/RAM voltaj, sıcaklık ve çalışma frekanslarını görmemizi sağlayan başka bir tabirle içeriden haber almamızı sağlayan bir araçtır. Vcgencmd ile kullanılabilecek komutların listesini görmek için commands seçeneği verilebilir:

Gördüğünüz gibi vcgencmd ile BCMxxxx üzerinde çalıştırılabilecek oldukça fazla komut vardır. Bu başlıkta bunlardan en çok işimize yarayacakları detaylıca inceleyeceğiz.

Hangi Firmware’i kullandığınızı öğrenin

Raspberry Pi bilgisayarının merkezi işlem birimi ile grafik işlemcisini içerisinde bulunduran BCMxxxx çipi üzerinde firmware olarak da adlandırılan bir öz yazılıma sahiptir. Bu yazılımın temel görevi sistemi açarak açılışın SD kart üzerinde yüklü işletim sisteminden devam etmesini sağlamaktır. Diğer görevleri ise, video çekirdeği ile ilgili güncel yapılandırmaları uygulamak ve sistem çipini monitör etmektir. vcgencmd aracı bu yazılımın sürümünün görüntülenmesini sağlayan bir seçeneğe sahiptir. Aşağıdaki komutu çalıştırın:

Yukarıdaki çıktıda sistem çipinin mevcut yazılımının (firmware) 8 ağustos 2017 tarihli olduğu ve versiyon numarası gözüküyor. Sistemin kararlı ve sorunsuz çalışması için firmware’in düzenli olarak güncellenmesinde büyük önem vardır. Eğer Raspberry Pi 4 ve üstü bir model kullanıyorsanız aşağıdaki komutu verin:

Yukarıdaki ekran çıktısında Raspberry Pi 4 modelinin bootloader firmware’inin tarihi ve sürümü gözüküyor. güncellemek için kitabın içindeki “Raspberry Pi’ı Güncellemek” başlıklı konuya, ayrıca GPU’nun rolü hakkında daha fazla bilgi için “Raspberry Pi’ın Açılış (Boot) Süreci“ başlıklı konuya göz atabilirsiniz.

BCMxxxx alt birimlerinin çalışma frekanslarını görüntülemek

BCMxxxx çipinin içinde CPU ve GPU’nun yanında kendi saat sinyali üreticine sahip birçok bağımsız birim vardır. Bu birimlerin mevcut saat frekanslarını görüntülemek için vcgencmd aracına measure_clock seçeneği verilebilir. Örneğin arm çekirdeğinin (CPU) çalışma frekansını görüntülemek için aşağıdaki komutu verin:

Komutun çıktısında 45 id numaralı arm çekirdeğinin çalışma frekansının 600MHz olduğu gözüküyor aynı komutu birim id numarasını kullanarak şu şekilde de vermek mümkündür:

Yukarıdaki örnektekine benzer olarak ölçümü yapılabilecek diğer çekirdekler ise şunlardır:

  • core: Grafik işlemcisinin çalışma frekansını görüntüler.
  • h264: h264 görüntü sıkıştırma kodlayıcısının saat frekansını görüntüler.
  • isp: görüntü sensör iş hattının (image sensor pipeline)  çalışma frekansını görüntüler.
  • v3d: Video 3D hesaplayıcısının çekirdek frekansını görüntüler.
  • uart: UART arabiriminin çalışma frekansını görüntüler.
  • pwm:  Darbe genişliği modülasyon sinyali üretecinin çalışma frekansını görüntüler.
  • emmc:  Kart okuyucu (MMC) arabirim kontrolörünün çalışma frekansını görüntüler.
  • pixel: GPU pixel hesaplayıcısının çalışma frekansını görüntüler.
  • vec: GPU vektör hesaplayıcısının çalışma frekansını görüntüler.
  • hdmi: HDMI arabirim kontrolörünün çalışma frekansını görüntüler.
  • dpi: Ekran piksel arabiriminin (display pixel interface) çalışma frekansını görüntüler.
  • 26: OTP (One Time Programmable) kaydedici kontrolörünün saat frekansını görüntüler.
  • 50: Sıcaklık sensörünün çalışma frekansını görüntüler.

Saat frekanslarını toplu olarak görüntülemek için aşağıdaki gibi bir for döngüsü kullanabilirsiniz:

Güncel ARM çekirdek voltajını ve çalışma frekansını birer saniye aralıklarla ekranda görüntülemek için watch aracından aşağıdaki gibi faydalanabilirsiniz. watch’ın çalışma şekli şöyledir –n seçeneği ile saniye cinsinden verilen zaman aralıkları ile “ (tırnak) işaretleri arasındaki komut çalıştırılır.

Çekirdek çalışma voltajının görüntülenmesi

vcgencmd aracı ile işlemci çekirdeğinin çalışma voltajı da görüntülenebilir. Raspberry Pi bilgisayarının işlemci çekirdeği varsayılan olarak 1.2 volt gerilim ile çalışır. Bu değer, bilgisayar üzerindeki voltaj regülatörü entegresi tarafından sağlanır. Regülatör bu değeri 0.025v’luk adımlarla 0.8v ile 1.4v arasında ayarlayabilir. raspi-config aracı ile yapılan hız aşırtma (overclocking) bu voltaj değerlerini artırıp azaltır. İşlemci çekirdeğinin (core) çalışma voltajını görüntülemek için aşağıdaki gibi core argümanı kullanılabilir:

Benzer şekilde RAM belleğin çalışma voltajlarını görüntülemek için kullanılabilecek argümanlar şunlardır: sdram_c, sdram_i, sdram_p. RAM’in voltaj değerlerini döndüren argümanlar sırasıyla kontrolör, giriş/çıkış birimi ve fiziksel voltaj değerlerini ifade eder.

Çekirdek sıcaklığını görüntülemek

BCM2708 chipset’i içinde bulunan sıcaklık sensörünü kullanarak Raspberry Pi’ın o anki sıcaklığını öğrenebilirsiniz.

İşlemci çekirdeğinin sıcaklığı daha hassas okumak için /sys/class/thermal/thermal_zone0/temp dosyasının içeriğini okuyabilirsiniz:

Tüm mikroişlemcili sistemlerde olduğu gibi; sıcaklık, işlemci başarımı olumsuz etkileyen bir faktördür. Raspberry Pi’ı ne kadar iyi soğutursanız o kadar yüksek bir performans sergileyecektir. Aynı zamanda bu, Raspberry Pi bilgisayarınızın malzeme ömrünün daha da uzun olmasını sağlar. Sıcaklığa bağlı başarım artırımına gerek olup olmadığı Raspberry Pi’ de ihtiyaç duyduğunuz başarım miktarı ile Raspberry Pi’ın bulunduğu ortamın sıcaklığı arasında bir karşılaştırma yaparak karar vermeniz gereken bir konudur. Çoğu durumda Raspberry Pi ek bir soğutmaya ihtiyaç duymaz[1] [2]. Raspberry Pi sürekli olarak zor işleri yerine getiriyorsa bir soğutma sistemi kullanmak yerinde olacaktır. Basit olarak, 2 tür soğutma gerçekleştirebilirsiniz. İlki heatsink[3] denilen kendinden yapışkanlı minik çok yapraklı soğutucuları Raspberry Pi’ın chipset’i üzerine yapıştırmaktır. Bu Raspberry Pi’ın sıcaklığının ortalama 3-5 santigrat derece azalmasını sağlayacaktır. Diğer tür soğutmada heatsink’e ek veya ayrı olarak bir üfleme fanı kullanılarak hava ile soğutma sağlanır. Etkin bir soğutma sağlamak için Raspberry Pi’ı kapalı bir muhafaza içine alarak sıcak havanın dışarı üflenmesini sağlayabilirsiniz. Bu da ortam sıcaklığına bağlı olarak ısının birkaç derece daha azalmasını sağlayacaktır.

Ne zaman soğutucu kullanılmalı?

Raspberry Pi sürekli olarak yoğun işlem gücü gerektiren işler ile uğraşıyorsa bunu htop veya top komutunun sunduğu işlemci yoğunluk ortalamalarına bakarak anlayabilirsiniz. Örneğin; 15 dk.’lık işlemci kullanım ortalamasının sürekli yüksek değerlere sahip olması harici bir soğutmaya ihtiyaç duyulduğunun göstergesi olabilir. Top ve htop hakkında detaylı bilgiyi bu kitapta bulabilirsiniz.

Raspberry Pi’ın termal görüntüsü

Bellek miktarını görüntülemek

Grafik işlemcisine ve CPU’nun kullanımına tahsis edilen bellek miktarını görüntülemek için arm ve gpu seçenekleri aşağıdaki gibi kullanılabilir:

Grafik masaüstünde görüntü işleme, tasarım ve video izleme gibi grafik yoğunluklu işlemler yapıyorsanız, bu grafik bellek miktarını artırmanız daha iyi başarım sağlamanıza yardımcı olacaktır.

Grafik belleğinin grafik işlemcisi tarafından ne kadarının kullanıldığını görmek için vcdbg (Video Core Debug) aracından faydalanabilirsiniz:

vcdbg çıktısında grafik işlemcisine ayrılan 76MB’lık belleğin 55MB’ının kullanılmadığını görebilirsiniz. Bu komutun çalıştırıldığı bilgisayar headless moddadır yani grafik masaüstü yöneticisi yüklü değildir. Komut çıktısında yer alan 1..4 numaralı satırlarda ise grafik alt sistemini oluşturan bileşenlerin kullandıkları RAM miktarları listelenmiştir. Bu aracı, vereceği çıktıdan hareketle Raspberry Pi için çok kıymetli olan RAM’den grafik işlemleri için ayrılan RAM miktarını azaltıp/artırarak optimize edebilirsiniz.

Donanımsal kod çözücüleri (codec) görüntülemek

Raspberry Pi full hd görüntü oynatma ya da DVD videoları oynatma konusunda CPU’sundan çok GPU birimi ön plana çıkar. VideoCore adlı GPU birimini kullanan BCMxxxx sistem çipi bu konuda oldukça başarılıdır. Bir görüntü oynatılırken işlem gücü gerektiren iki konu vardır. Görüntü çözünürlüğü ve disk alanından kazanmak için görüntüye uygulanmış olan sıkıştırma. GPU’nun donanımsal olarak kod çözme desteği verdiği bazı görüntü kodlama biçimleri vardır. Bunlar H264, MPG2, WVC1, MPG4, MJPG ve WMV9’dur. Hâlihazırda kullanmakta olduğunuz Raspberry Pi bilgisayarının hangi donanımsal kod çözücülere sahip olduğunu ve çözücülerin etkin olup olmadığını aşağıdaki gibi vcgencmd aracıyla listeletebilirsiniz.

Ekran çıktısından görebileceğiniz gibi Raspberry Pi’ın H264, MPG4 ve MJPG kod çözücüleri aktiftir. Aktif olmayan MPG2 ve VC1 çözücüleri için lisans anahtarı satın almak gerekir. Lisansınızı küçük bir ücret karşılığında Raspberry Pi Vakfının çevrim içi mağazasından (Raspberry Pi Store[4]) satın alabilir, çoğu DVD filminin temel kodlaması olan MPG2 ve Microsoft’un wmv dosyalarından kullandığı VC1 (Video Codec 1) görüntü formatlı videolarınızı akıcı bir şekilde oynatabilirsiniz. Raspberry Pi üzerinde görüntü oynatmak için donanımsal kod çözücü desteği olan OMXPlayer’ı kullanmanızı tavsiye ederim.

GPU içindeki donanımsal kod çözücüler H264, MPEG1/2/4, VC1, AVS ve MJPG sıkıştırma biçimlerini 1080p ve 30fps çözünürlükte çözebilecek kapasitededir. Linux çekirdeğini desteklediği yazılımsal kod çözücüler ise DVD kalitesindeki VP6, VP7, VP8, RV, Theora ve WMV9 sıkıştırma biçimlerini çözebilir.

İşlemci darboğazlarını tespit etmek

Raspberry Pi’ın sistem çipinin içinde yer alan ARM tabanlı CPU, birçok dâhili monitör ile takip edilir. Bu monitörler CPU’nun çalışma voltajı, saat frekansı ve CPU sıcaklığını takip ederek diğer SoC bileşenleri için alarmların tetiklenmesini ve CPU’nun tekrar istikrarlı duruma geçmesi için çeşitli prosedürlerin çalıştırılmasını sağlarlar. vcgencmd aracına get_throttled komutunu vererek CPU’nun durumu hakkında anlık bilgi edinilebilir.

16’lı sayı tabanında (hex) dönen throttled değeri ikili sayı biçimine çevrildiğinde her bir bitin anlamları şunlardır:

  • 0. Bit: voltaj düşük. Voltaj 4.63 voltun altına düştüğünde gerçekleşir. CPU’nun turbo modu etkinse kapatılır.
  • 1. Bit: CPU darboğazı yaşandı.
  • 2. Bit: CPU dar boğaz yaşıyor. Darboğazın sebebi aşırı CPU ve GPU sıcaklığı veya voltaj düşüklüğü olabilir. Diğer bit’leri kontrol edin.
  • 16. Bit: voltaj düşüklüğü yaşandı ve geçti.
  • 17. Bit: hâlihazırda CPU darboğazı yaşanıyor.
  • 18. Bit: Dar boğaz yaşandı ve geçti. Darboğaz CPU sıcaklığının 80, GPU sıcaklığının da 85 dereceye yaklaşması sırasında da yaşanabilir.

Yukarıdaki örnekte 0x ile başlayan 16 değeri ni 2’lik sayı sistemine çevirmek için bir hesaplama aracı olan bc programını kullanabilirsiniz. Kullanımı aşağıdaki gibidir:

0x50005 onaltılık değerinin 2’lik karşılığı olan 1010000000000000101 sayısına bakılırsa; 0., 2., 16. ve 18. Bit’lerin 1 olduğu görülür. Yukarıdaki listeden bit’lerin anlamlarına bakıldığında CPU’nun besleme voltajı düşüklüğüne bağlı olarak yavaşladığı ve bir darboğaz oluştuğu sonucu çıkacaktır. Bu durumda Raspberry Pi’ın besleme adaptörünü kitabın “Besleme adaptörü” başlığındaki bilgilere göre gözden geçirmenizde fayda vardır.

Özellikle aşırı işlemci sıcaklığına ve voltaj düşüklüğüne bağlı darboğazları tespit etmek için watch aracı ile bir süre izleme yapmanızı tavsiye ederim. Aracı sonlandırmak için Ctrl+C tuş bileşimini kullanabilirsiniz:

Monitörü Açıp/Kapatmak

Bilgisayarınızın başında olmadığınız zamanlarda terminal komut satırını ile uzaktan monitörünüzü kapatabilirsiniz. vgencmd aracı ile GPU’nun HDMI çıkışının sinyalini kesmesini sağlayabilirsiniz. Bu durumda monitör enerji tasarruf moduna girerek kapanacaktır. Monitörü kapatmak ve açmak için display_power seçeneğine 0 veya 1 argümanlarını verebilirsiniz:

Device-tree ile sistem bilgilerini görüntülemek

Aygıt ağacı (device-tree)[5] sistemdeki donanım bileşenlerinin hiyerarşik olarak listelendiği bir veri yapısıdır. Hem işletim sistemi çekirdeğine hem de diğer programlara ve sürücülere aygıtlar hakkında detaylı bilgiler sunar. Bu bilgilerin içerisinde aygıtla konuşmak için kullanılacak sürücü, aygıtın kullandığı giriş çıkış kaydedicilerin adres aralığı, aygıtın kullandığı kesme numarası, DMA (Direct Memory Access) kanal numaraları, aygıtın etkin olup olmadığı, aygıtın saat frekansı ve uyumlu olduğu donanım bilgileri gibi gerekli birçok temel bilgiler yer alır. Aygıt ağacının içerdiği tüm bu bilgiler, açılış (boot) sırasında yeniden inşa edilerek Linux çekirdeğine geçilir/bildirilir.

Aygıt ağaçlarından, donanıma özel bir Linux çekirdeği (örneğin arm için)  derlenirken de faydalanılır. Çekirdek derlenirken üzerinde çalışacağı donanımın bileşenlerinin (gpu, hdmi, i2c, spi, audio vb.) teknik özellikleri .dts uzantılı (Devicetree Source)  aygıt ağacı dosyaları ile tanımlanır ve derlemenin hedef donanıma uygun şekilde gerçekleştirilmesi sağlanır.

Raspberry Pi’ın açılış sürecinden sorumlu dosyalardan birisi olan start.elf (firmware yükleyicisi) üzerinde çalıştığı donanımı tespit ederek (A/B/2/3/4/Zero vb.) uygun aygıt ağacı yapılandırmasını seçer ve bu ağaca ethernet mac ID, CPU ID ve bellek miktarı gibi değişken bilgileri işleyerek Linux çekirdeğine bildirir. Bu aşamada bildirilen aygıt ağacı, çekirdeğin sonradan dinamik olarak algılayamayacağı daha çok SoC yapısı (BCMxxxx sistem çipine ait aygıt ağacı) içindeki aygıtlara ait bilgileri tutar. Açılış yükleyicisi tarafından seçilen aygıt ağacı dosyalarını (.dts) /boot dizininden inceleyebilirsiniz. Sistem çipine ait aygıt ağacının bir kopyasını ise /sys/firmware dizininde bulabilirsiniz.

Açılış sırasında oluşturulan bu aygıt ağacının kullanıcı tanımlı kısımları ise config.txt aracılığıyla yapılandırılır. Raspberry Pi’da config.txt aracılığıyla oluşturulan aygıt ağacı tanımı device tree overlays olarak bilinir. Overlays’ler sisteme çalışma zamanında eklenen donanım bileşenlerini (örn.: USB aygıtları) aygıt ağacına ekleyebilmek için bir yol sunar.  Linux çekirdeği açılış sürecinde aldığı bu aygıt ağacı bilgisini, tak çalışır (plug&play) aygıtlar ve mevcut sürücü yapılandırmasına göre işleyerek zenginleştirir ve Linux aygıt modeline uygun yeni bir aygıt ağacı oluşturur. Son kullanıcı açısından daha işlevsel olan bu aygıt ağacını /sys/devices/ dizininden incelemek mümkündür.

SoC yapısına ait ağacını incelemek isterseniz /sys/firmware/devicetree/ dizinini ziyaret edebilirsiniz. Buradaki aygıt tanımları, işletim sisteminden bağımsız olarak BCMxxxx sistem çipinin iç bileşenleri ve hiyerarşisi hakkında bilgi sağlar. Bu ağacı aşağıda yer aldığı gibi tree ve cat araçları ile inceleyebilir Raspberry Pi’ın sistem çipinin donanım hiyerarşisi hakkında detaylı bilgiye erişebilirsiniz:

/proc  dizini içerisinde /sys/firmware/devicetree/base dizininin bir sembolik bağlantısı da yer alır. Çalışmakta olan sistemin kullanıdğı aygıt ağacının tam bir örneğine erişmek için ise /proc/device-tree dizinini kullanabilirsiniz.

Raspberry Pi bilgisayarının modelini öğrenmek

Sahip olduğunuz Raspberry Pi’ın modelini öğrenmek için aşağıdaki gibi /sys/firmware/devicetree/base/model dosyasının içeriğini görüntüleyebilirsiniz.

Ayrıca /proc/cpuinfo dosyasının içeriği de Rasberry Pi hakkında birçok bilgi sunar. Aşağıdaki ekran çıktısında yer alan Revision (revizyon) numarası Raspberry Pi bilgisayarının modeli ve daha birçok özelliği hakkında bilgi veren 16’lı sayı sisteminde kodlanmış bir değerdir (a02082).

Bu değer 2’lik (binary) biçime dönüştürülerek yazıldığında her bir bitin ifade ettiği anlam aşağıdaki gibidir:

Bu 48 bitlik ikili değerin her bir basamağının ne anlama geldiği aşağıdaki tabloda listelenmiştir:

Yukarıdaki anlam tablosu kullanılarak oluşturulmuş bazı Revision kodlarının[6] listesi aşağıdaki gibidir:

İşlemci hakkındaki bilgileri görüntülemek

Raspberry Pi’ın sahip olduğu mikroişlemcinin mimarisi ve model numarası vb. bilgiler açılış sırasında /proc/cpuinfo metin dosyasına yazılır.

Yukarıdaki gibi cpuinfo dosyasının içeriği görüntülendiğinde, Raspberry Pi’ın BCM2708 chipset’i üzerinde çalışan ARMv7r5 (5. Revizyon) tabanlı 4 çekirdekli bir işlemciye sahip olduğu görülüyor (arch komutu ile de görüntülenebilir). Ayrıca işlemci seri numarasını da 00000000342d1415 olarak bildirmiş. Bu numara tekil bir numara olarak sadece sizin Raspberry Pi’ınıza özeldir. Üretim sırasında başka bir karta aynı seri numarası atanmaz. Bu numarayı kullanarak çeşitli yazılımlar için donanıma kilitli lisanslamalar oluşturmakta kullanabilirsiniz. BogoMIPS değeri ise Raspberry Pi merkezi işlem biriminin(CPU) sahip olduğu işlem gücü ile ilgili karşılaştırmalı bir başarım değeri sunar. Bu başarım değerini sadece aynı türdeki/mimarideki (ARM) işlemciler ile başarım (performans) karşılaştırması yapmak için kullanmak gerekir.

BogoMIPS: Önceleri işlemci başarımları karşılaştırılırken saniyede çalıştırılan komut sayısı (IPS-Instruction Per Second) referans alınmaktaydı; fakat her komutun çalışması için gereken saat darbesi (clock cycle) farklı olduğundan ve bu ölçümü yapan programın standart bir yapıya sahip olmamasından ötürü IPS değeri güvenilir bir sonuç sunmuyordu. BogoMIPS aynı mimariye sahip olmak şartı ile farklı saat frekanslarına sahip işlemcilerin başarımlarını karşılaştırmak için ortak bir standart daha sağlıklı bir değer sunar.

İşlemci hakkında detaylı bilgileri listelemek için kullanılabilecek bir başka araç da lscpu programıdır. lscpu programını aşağıdaki gibi yükleyip çalıştırdığınızda; işlemcinin destelediği minimum ve maksimum hızlar ile komut seti hakkında daha fazla bilgi görüntüler:

Ölçeklenebilir İşlemci saat frekansı kipi

Raspberry Pi, işlemciyi ön tanımlı olarak ölçeklenebilir saat frekansı kipi (scaling) adı verilen bir kipte çalıştırır. Bunun anlamı; CPU’nun her zaman sabit bir frekansta çalışmamasıdır. İhtiyaç olduğunda belli bir “en yüksek” ve “en düşük” frekans değerleri arasında değişen frekanslarda çalışır. Bu durum modüler birer bilgisayar olan akıllı cep telefonlarında da böyledir. Böylece ihtiyaç olmayan bir enerji tüketimi gerçekleşmez ve enerji verimliliği sağlanmış olur.

Raspberry Pi’ın çalışmasına izin verilen maksimum frekansı ayarlamak için en pratik yol raspi-config aracıdır. Aracı aşağıdaki gibi çalıştırarak overclocking menü seçeneğinde hız aşırtma (overclocking) yapabilirsiniz.

Raspberry Pi’ın sırasıyla en yüksek, en düşük ve hâlihazırdaki CPU çalışma frekanslarını görüntülemek için aşağıdaki komutlar kullanılabilir

Raspberry Pi’ın anlık CPU saat frekansı olan cpuinfo_cur_freq değeri cpuinfo_max_freq ile cpuinfo_min_freq arasında olacaktır.

CPU Hızı ve CPU Voltajı

Raspberry Pi, CPU’nun çalışma hızını dinamik olarak ayarlar. Hızı artırmak gerektiğinde CPU çekirdeklerinin voltajı da (Vcore) arttırılır. 0-2100MHz arasındaki çalışma hızı 0.8625v ile 1.0125v arasında ayarlanan voltaj ile sağlanır. Yeterli akım kapasitesine sahip olmayan ya da regülasyonu iyi olmayan bir besleme kaynağı bu voltaj ayarlamasının düzgün yapılamamasına neden olarak ısınma ve kaynağı belirsiz yavaşlıklara neden olabilir. CPU yük monitöründe (örn.: htop çıktısında) çok az yük gözükürken Raspberry Pi oldukça yavaş çalışabilir.

Bellek kullanımın miktarını görüntülemek ve yorumlamak

Linux işletim sistemlerinde bellek kullanım miktarını görüntülemek için kullanılan klasik araçlardan birisi de free’dir. free aracı ile toplam, kullanılan, boş, paylaşılan ve ön belleklenen veri miktarı yanında kullanıma hazır olan (available) bellek miktarları da görüntülenebilir. Aşağıdaki komutu uygulayın:

free aracı, bellek kullanım verisini Mem ve Swap olarak iki kategori altında sunar. Mem RAM adı verilen fiziksel belleği ifade ederken, Swap (takas alanı) ise; erişim hızı çok daha düşük olan disk üzerinde oluşturulmuş bellek alanını ifade eder. Yukarıdaki çıkta 102396KB’lık Swap alanının hiç kullanılmadığı görülmekte. Bunun anlamı hâlihazırdaki RAM bellekteki boş alan miktarının yeterli olduğudur. Swap kullanılmaya başlandığında ciddi oranda başarım kaybı yaşanır. Swap, disk üzerinde oluşturulan sanal bir bellek gibi davranarak, RAM’in yetersiz olduğu durumlarda işletim sistemi tarafından kullanılır ve RAM ile arasında sürekli olarak veri takası yapılır. İşletim sistemi çok sık kullandığı verileri RAM’ taşırken daha az ihtiyacı olan verileri de disk dosyasına yani takas alanına (Swap) taşır. Bu süreç RAM’in tamamen dolu olduğu durumlarda işletim sistemi tarafından sürekli olarak gerçekleştirilir.

Önemli

Linux, RAM bellek yetmediği durumlarda diskteki SWAP alanını bellek gibi kullanır. Eğer SWAP alanı da dolarsa sistemin kararlılığı kısa sürede bozulur ve Linux çekirdeği sistemi otomatik olarak yeniden başlatır (reset). Eğer anlam veremediğiniz kilitlenmeler veya yeniden başlatmalar yaşıyorsanız RAM kullanım miktarını analiz etmelisiniz, ardından da diskteki boş olan miktarını. Raspberry Pi’ın kurulumunu gerçekleştirdikten sonra, ilk bölümlerde anlatıldığı gibi disk alanını mutlaka genişletmelisiniz.

Linux işletim sisteminin anlık bellek kullanımı detaylı olarak /proc/meminfo dosyasından takip edilebilir. Bu dosyanın içeriği işletim sisteminin fiziksel belleği nasıl kullandığı hakkında detaylı bilgiler sunar ve bu bilgiler olası sorunların çözümü için yol gösterici olabilir.

meminfo çıktısı sistemin sahip olduğu toplam bellek miktarı (MemTotal)yanında anlık tampon (Buffers) ve ön bellek(Cached) miktarlarını ayrı ayrı görmek açısından da faydalıdır. Anlık değerler, sistemin yazılımsal başarımını değerlendirmek açısından kullanışlıdır.

Linux; belleği, verimlilik adına en etkin şekilde (belleğin tamamına yakınını) kullanmaya çalışır. Linux’u diğer işletim sistemleri arasında öne çıkartan en başarılı özelliklerde birisi de budur. Belleğin tamamına yakınının kullanılması iyi bir şeydir, Cached ve Buffers haricindeki belleğin tamamının kullanılıyor olması, artık belleğin dolduğunun ve diğer tüm modern işletim sistemlerinde olduğu gibi, disk alanını (SD kart) bellek gibi kullanılmaya başlanacağının işaretidir. Bu olduğunda SD Kartın aşırı yavaş erişim hızından dolayı çok büyük bir veri işleme darboğazı oluşur ve gözle görülür bir başarım kaybı yaşanır. Bu darboğaz veri işleme kapasitesinde ciddi gecikmelere yol açarak sistemin başarımını yüksek miktarda düşürür. Linux işletim sisteminde (Raspbian) top ve free komutları ile de izleyebileceğiniz gibi; yüksek bellek kullanım değerleri genellikle çalışan programlardan değil, ön belleklenmiş verilerden kaynaklanır. Çünkü Linux, RAM’in tamamını kullanmaya çalışır. Linux, program verilerinin yanında ayrıca, yavaş depolama aygıtlarının (flash veya disk) verilerini de RAM’de tutar. Çünkü gerektiğinde bu verileri RAM’den okumak çok daha hızlıdır. Linux çekirdeği meminfo dosyasının RAM kullanımı hakkında sunduğu değerli bilgilerden bazıları şunlardır:

  • MemTotal: Toplam fiziksel bellek (KB) miktarı.
  • MemFree: Sistem tarafından kullanılmayan fiziksel bellek (KiB) miktarı.
  • Buffers: Disk dosyalarının hızlı erişim için depolandığı tampon bellek (KiB) miktarı.
  • Cached: Program ve program kütüphanelerinin ön belleklendiği bellek (KiB) miktarı.
  • Active: Aktif olarak kullanımda olan Buffers ve Cached miktarı (KiB).
  • Inactive: Belli bir süredir kullanılmayan ve her an güncel ihtiyaçlar için tahsis edilebilecek bellek miktarı (KiB).

Linux, gerekli olduğunda programlar için ihtiyaç duyulan RAM’i, Buffers ve Cached’ı azaltarak sağlar. Linux’un bellek yönetimi konusundaki başarısı, sahip olduğu binlerce ortak aklın çok başarılı bir sonucu olarak kabul edilebilir. Diğer taraftan Cached’ın azalması programlar için performans düşüşüne de yol açabilir. Cached olarak kullanılan belleği azaltmak için sync aracı kullanılabilir. sync aracı diske yazılmak üzere ön belleklenmiş (cached) verileri diske yazmak için zorlar. Bu komutun kullanımının ardında Cached değerinin bir miktar azaldığını görebilirsiniz.

USB aygıtlar hakkında bilgi edinmek

Raspberry Pi’a bağlı USB cihazlar hakkında bilgi almak için lsusb komutu çok faydalıdır. Komutların çıktılarını inceleyelim:

lsusb, USB veri yolları ve bu yollara bağlı aygıtlar hakkında çeşitli bilgiler görüntüler. Seçeneksiz yazıldığında veri yolu üzerindeki (Bus 001) aygıtlar listelenir. lsusb komutuna -t (tree) seçeneği geçilerek, aygılar hiyerarşik (ağaç yapısı) yapıda görüntülenebilir. Buna göre 01 numaralı USB veri yolu üzerinde yer alan Dev 4 isimli aygıt (device 1/aygıt 1) 480Mbit aktarım kapasitesi sahip bir USB depolama cihazıdır (usb storage). Bu aygıt Western Digital Technologies Inc. Firmasına ait bir harici USB disktir.

Disk ve Bölüm Yapısını Analiz Etmek

SD kart gibi boyutu sınırlı bir depolama ortamı kullanılan bilgisayarlarda, disk kullanım durumunu sürekli olarak takip etmek veya bu konuda duyarlı olmak önemlidir. Sistemdeki bir sorundan dolayı sürekli büyüyen log dosyaları, disk alanının kısa sürede tükenmesine ve Raspberry Pi bilgisayarının düzgün çalışmamasına neden olabilir. Benzer soruna programlanırken gerekli kontrolleri yapılmamış bir program da yol açabilir. Disk kullanım miktarının yanında disk üzerinde bulunan bölümler hakkında da bilgi sahibi olunmasında fayda vardır. Fiziksel bir disk üzerinde (SD kart) birden fazla mantıksal disk bölümü, dolayısı ile dosya sistemi yer alabilir. Raspberry Pi’a bağlı SDKartın sahip olduğu disk bölümlerini görüntülemek için öncelikle lsblk komutu kullanalım:

lsblk komutunun çıktısında mmcblk0 adında 7.5GB kapasiteye sahip bir disk olduğu görülüyor. Bu diskin altında mmcblk0p1 ve mmcblk0p2 adında sırasıyla 61MB ve 6.8GB’lık kapasitelere sahip iki adet disk bölümü olduğu, ikinci bölümün Linux’un kök (ana) dizini olan / (root’a) bağlandığı görülüyor. mmcblk şeklinde başlayan isimlendirme dikkatinizi çekmiş olabilir. mmc kullanılan disk aygıtının üretim teknolojisini ifade etmektedir. MMC (MultiMediaCard) taşınabilir depolama aygıtları için bir standart sağlar. Raspberry Pi’ın kullandığı SD (secure digital) kartlar da MMC gibi taşınabilir depolama aygıtları için gerekli bir standardı tanımlar. Linux çekirdeği, daha eski bir standart olan MMC’yi kullanmayı geleneksel olarak tercih eder.

blk ifadesi ise bu aygıtın bir blok aygıtı olduğu anlamına gelir. Linux mimarisinde tüm depolama aygıtları blok aygıt olarak tanınır ve okuma/yazma işlemleri bloklar halinde gerçekleştirilir. Blok aygıtlar tampon bellek kullanan aygıtlardır (indeksten meminfo anahtar kelimesine bakabilirsiniz). Yani, blok aygıta hızlı erişim sağlamak için (okuma/yazma) RAM, bir ara tampon olarak kullanılır. Blok aygıtların dışında bir de karakter aygıtlar vardır. Karakter aygıtlara erişim byte dizeleri şeklinde olur ve tampon bellek kullanılmaz.

Özetle; mmcblk0 adına sahip blok aygıt, flash bellek teknolojisi ile kayıt yapan 0 numaralı depolama aygıtını temsil eder. Sonrasında gelen p harfi ise o aygıt içindeki bölümün (part/partition) sıra numarasını belirtir.

Bölümler hakkında daha fazla bilgi görüntülemek için fdisk komutundan faydalanılabilir:

fdisk komutunun çıktısının son satırlarında her bir bölümün sahip olduğu sektör sayısı ve dosya sistemi türü görüntülenmektedir. Buna göre birinci bölüm; birinci sektörden başlayıp 12500. sektöre kadar olan 125000 sektörlük FAT32 biçimli bir bölüm iken, ikinci disk bölümü ise; 125001. sektör ile 14334047. sektörler arasındaki toplam 14209047 adet sektörden oluşan Linux dosya sistemini kullanmaktadır. Her bir sektör standart olarak 512Byte’tan ibarettir.

Ayrıca fdisk komutunun çıktısında; 0 dan 15’e kadar 4MB kapasiteli /dev/ramX diskleri de yer almaktadır. Bu diskler sanal olarak RAM’de oluşturulan geçici depolama alanlarıdır ve her yeniden başlatma sırasında içerikleri temizlenir. Linux çekirdeği tarafından geçici dosya sistemleri oluşturmak için kullanılırlar. Bunun nedeni; SD kartlar, üretim teknolojisi açısından, manyetik disklerin aksine sınırlı sayıda yazmayı desteklemesidir. Bu sayı aşıldığında SD kart geri dönüşü imkânsız şekilde kullanılmaz duruma gelir. Bu açıdan SD kartların kullanım ömrü yazma sayısı ile sınırlıdır diyebiliriz. Durum böyle olunca, Linux çekirdeği çok sık diske yazma işlemi yapılan dizin ve dosyaları RAM’de oluşturduğu bir disk bölümüne taşır ve belirli periyotlarla diske güncellemesini yapar. Böylece SD kartın ömrünün uzatılması amaçlanır.

İlgili disk bölümünün, dosya sistemi türü ve kullanım miktarı hakkında daha fazla bilgi görüntülemek için df komutu kullanılabilir:

df komutu hâlihazırda kullanımda olan dosya sistemlerini ve Linux dizin ağacında bağlı oldukları dizinleri de listeler. Dikkat ederseniz mmcblk0p1 disk bölümü bağlı değildir. FAT biçimli bu bölüm sadece Raspberry Pi’ın ön yüklemesini yapmak için gereklidir ve Linux çekirdeğinin yüklenmesi sırasında görev yapar. Çıktıdan da görülebileceği gibi / kök (root) dizinine bağlı /dev/root isimli dosya sistemi her biri 1K boyutunda olan 6992908 adet bloktan oluşmakta ve toplam kapasitesinin %50’sinin dolu olduğu gözükmektedir. tmpfs (Temporary File Systems/Geçici Dosya Sistemleri) isimli dosya sistemleri ise /dev/ramX şeklinde oluşturulan RAM disklerden kullanımda (bağlı/mounted) olanları göstermektedir. Ram diskler kalıcı depolama ortamları değildirler, ram bellekte oluşturulduğundan, Raspberry Pi’ın enerjisi kesildiğinde içindeki veriler de yok olur. Ramdisk’ler özellikle belli sayıda okuma/yazma ömrü olan SD kartları korumak ve programları daha hızlı çalışmasını sağlamak amacıyla depolama ortamı olarak kullanılırlar.

Ayrıca parted isimli araç da disk ve bölümler hakkında kullanışlı bilgiler sunmaktadır:

parted sistemde yüklü değilse aşağıdaki komutla kolayca yükleyebilirsiniz:

Bilgi notu: parted isimli aracın bir benzeri grafik ortamda da vardır. Bunun için gparted paketini yükleyebilirsiniz.

SD kartın seri numarasını görüntülemek

Kullanmakta olunan SD kartın (disk) seri numarasını görüntülemek için aşağıdaki komutu kullanabilirsiniz:

Donanım yapılandırmasını listelemek

lshw (list hardware) Raspberry Pi’ın donanımsal yapılandırması hakkında detaylı bilgiler listeleyebilen küçük bir araçtır. Programı aşağıdaki komut ile yükleyebilirsiniz:

lshw seçeneksiz olarak çalıştırıldığında bellek, CPU, board ve veri yolu hızları hakkında detaylı bir rapor sunar. Dilerseniz bu raporu –html seçeneğini kullanarak bir web sayfası biçiminde de alabilirsiniz.

Yukarıdaki komut ile Raspberry Pi’ın tüm donanım yapılandırmasırpi_hw.htm adlı dosyaya kaydedilir. Html gibi xml, json ve sqlite biçimlerinde de rapor üretmek mümkündür. lshw daha kısa raporların üretilmesini de destekler. short seçeneği ile donanım yapılandırmasının bir özeti üretilebilir. Ayrıca belli bir donanım hakkında (örneğin ağ bağdaştırıcıları) rapor üretmek için class seçeneğinden faydalanılabilir. Aşağıdaki örneği inceleyin:

inxi adındaki araç ise lshw’ya göre çok daha kapsamlı sonuçlar üretebilen bir araçtır. Aracı yükledikten sonra aşağıdaki gibi çalıştırabilirsiniz:

inxi kullanarak Raspberry Pi hakkında çok daha detaylı bir donanım bilgisi görüntülemek için aşağıdaki seçenekleri de kullanabilirsiniz:

Ekran ve ekran çözünürlüğü

Eğer, Raspberry Pi’ı bir LCD monitör ile kullanıyorsanız, LCD monitörünüzün desteklediği tavsiye edilen çözünürlük otomatik olarak ayarlanacaktır. Monitörünüzün desteklediği çözünürlükleri tvservice aracı ile aşağıdaki gibi görüntüleyebilirsiniz. hâlihazırdaki çözünürlük, hdmi üzerinden ses ve ekranın modelini görmek için:

Eğer ekran olarak bir TV kullanıyorsanız çözünürlükleri görmek için:

Eğer ekran olarak bir bilgisayar monitörü kullanıyorsanız, çözünürlükler için:

Yukarıdaki komut çıktılarında ekranınızın tavsiye edilen çözünürlüğü (prefer) ibaresi ile belirtilir. Monitörünüzden en iyi görüntüyü almak için bu çözünürlükte kullanmalısınız. Raspberry Pi’ın ekran çözünürlüğünü ayarlamak için raspi-config aracını aşağıdaki gibi çalıştırıp Advanced Options menü seçeneği altındaki Resolution seçeneğini kullanabilirsiniz. Çözünürlüğü tvservice aracıyla da ayarlayabilirsiniz:

Son satır görüntü resim tamponunun temizlenmesini ve ekranın tazelenmesini sağlar.

Bilgisayar monitörlerinin LCD panellerine tümleşik olarak genellikle 256Byte genişliğinde EEPROM (Elektrik ile Silinebilen Programlanabilen Salt Okunur Bellek)[7] çipi vardır. EDID (                Genişletilmiş Ekran Kimlik Bilgileri)[8] çipi adı da verilen bu çip monitörün teknik özellikleri hakkında detaylı bilgiler saklayarak görüntü kaynağı olan cihaza sunar. Böylece işletim sistemi ekranı tanımlayabilir. EPPROM içinde kodlanmış şekilde saklanan bu veriyi okuyup bir dosyaya kaydetmek mümkündür:

Kodlanmış veriyi okunabilir hale getirmek için ise edidparser aracı aşağıdaki gibi çalıştırılabilir.

Eğer HDMI çıkışını kullanmıyorsanız tamamen kapatabilirsiniz. Böylece 25-30 mA akım tasarruf etmiş olursunuz:

HDMI çıkışını tekrar etkinleştirmek için güç verip ekranı tazeleyin:


[1] Raspberry Pi termal haritası: https://goo.gl/guSkDF

[2] Raspberry Pi için soğutma sistemleri: https://goo.gl/S1C8wB

[3] Raspberry Pi heatsink: https://goo.gl/QKMITr

[4] Raspberry Pi çevirim içi mağazası – http://www.raspberrypi.com/

[5] Device Tree – https://github.com/devicetree-org

[6] Revizyon kodlarının listesi: https://goo.gl/d1eVVz

[7] EEPROM: Electronically Erasable Programmable Read-Only Memory

[8] EDID: Extended Display Identification Data

Yazar: Özgür Koca

Yazar - Tankado.com

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.