tpstat ve turbostat Komutları ile İşlemci Frekansı ve Güç Tüketimini Gerçek Zamanlı İzleme
Sunucu odasında bir gece mesaisi düşünün: ekranlar parlıyor, fanlar uğulduyor ve siz neden bu makinenin CPU sıcaklığının 90 dereceyi aştığını anlamaya çalışıyorsunuz. top açıyorsunuz, htop açıyorsunuz, hiçbiri size işlemcinin gerçekte hangi frekansta çalıştığını, hangi C-state’te beklediğini ya da ne kadar güç çektiğini söylemiyor. İşte tam bu noktada turbostat ve tpstat devreye giriyor. Bu iki araç, işlemci davranışını mikro düzeyde görünür kılan, sysadmin’in “neden böyle oluyor?” sorusuna somut veri ile cevap veren komutlardır.
Araçların Farkı ve Neden İkisine Birden İhtiyaç Duyarsınız
Önce terminolojiyi netleştirelim. turbostat, Intel’in kendi geliştirdiği ve Linux çekirdeği araçlarıyla birlikte gelen bir performans izleme aracıdır. linux-tools paketinin içinde gelir ve doğrudan MSR (Model Specific Register) registerlarını okuyarak işlemci durumunu raporlar. Öte yandan tpstat, ThinkPad odaklı bir araç olarak bilinse de aslında genel amaçlı bir güç durumu sorgulama yardımcı programıdır; tp-smapi veya acpi altyapısını kullanır.
Pratikte bu iki aracı birbirinin rakibi olarak görmemek lazım. turbostat size işlemci çekirdeği düzeyinde gerçek zamanlı frekans, güç tüketimi ve C-state istatistikleri verir. tpstat ise daha çok pil yönetimi, batarya durumu ve genel güç profili açısından ek bir katman sağlar. İkisi bir arada kullanıldığında hem CPU hem de güç altyapısının tam resmini görebilirsiniz.
turbostat Kurulumu ve Temel Kullanım
Debian/Ubuntu tabanlı sistemlerde turbostat, linux-tools-common ve sürüme özgü paket içinde gelir:
sudo apt-get install linux-tools-common linux-tools-$(uname -r)
RHEL/CentOS/Rocky Linux tarafında ise:
sudo dnf install kernel-tools
Kurulumdan sonra en temel kullanım şudur:
sudo turbostat --interval 1
Bu komut her saniyede bir ekranı yenileyerek her CPU çekirdeğinin anlık frekansını, paket güç tüketimini ve C-state dağılımını gösterir. Çıktı ilk bakışta gözü korkutabilir; on binlerce sayı sizi karşılar. Ama her kolonun ne anlama geldiğini bir kez kavradığınızda bu çıktıyı okumak neredeyse refleks haline geliyor.
Çıktının önemli kolonları şunlardır:
- Core: Fiziksel çekirdek numarası
- CPU: Mantıksal işlemci numarası (hyper-threading dahil)
- Avg_MHz: Ölçüm aralığında ortalama frekans
- Busy%: İşlemcinin meşgul olduğu sürenin yüzdesi
- Bzy_MHz: Sadece meşgul olduğu dönemde ortalama frekans
- TSC_MHz: Referans saat hızı (değişmez, tutarlıdır)
- IPC: Döngü başına tamamlanan komut sayısı
- IRQ: Kesme sayısı
- SMI: Sistem yönetim kesme sayısı (bu sıfır olmalı, değilse ciddi sorun var)
- C1%, C3%, C6%, C7%: İşlemcinin ilgili C-state’te geçirdiği sürenin yüzdesi
- CoreTmp: Çekirdek sıcaklığı (Celsius)
- PkgTmp: Paket (tüm die) sıcaklığı
- GFX%rc6: Entegre grafik uykuda geçirdiği süre yüzdesi
- Pkg_W: Paketten çekilen toplam güç (Watt)
- Cor_W: Hesaplama çekirdeklerinin çektiği güç
- RAM_W: RAM’in çektiği güç (desteklenen platformlarda)
Sadece İstediğiniz Kolonları Görmek
Tam çıktı kalabalık geliyorsa --show parametresiyle yalnızca ilgilendiğiniz metrikleri seçebilirsiniz:
sudo turbostat --show Core,CPU,Avg_MHz,Busy%,Bzy_MHz,CoreTmp,Pkg_W --interval 2
Bu özellikle terminal ekranı dar olan ortamlarda veya log dosyasına yazarken çok işe yarıyor. Bir üretim sunucusunun CPU frekans davranışını birkaç saatlik bir pencerede kaydetmek istediğinizde şu yöntemi kullanabilirsiniz:
sudo turbostat --show Core,CPU,Avg_MHz,Bzy_MHz,Pkg_W,CoreTmp
--interval 5
--out /var/log/cpu_power_$(date +%Y%m%d_%H%M%S).log
--out parametresi çıktıyı hem terminale hem de dosyaya yönlendirir. Log dosyasına yazarken ekran çıktısı aynı anda devam eder, yani izlemeyi kaybetmezsiniz.
Gerçek Dünya Senaryosu 1: Thermal Throttling Tespiti
Geçen yıl bir veri merkezinde, web sunucusu olarak çalışan bir fiziksel makine yük altında beklenenden çok daha yavaş davranıyordu. top yüzde yüz CPU kullanımı gösteriyordu ama throughput normale gelmiyordu. İşlemci frekansını kontrol etmek için:
sudo turbostat --show Core,CPU,Avg_MHz,Bzy_MHz,CoreTmp,TSC_MHz --interval 1
Çıktıda Bzy_MHz değerinin 2400 MHz olması gerektiği halde sürekli 1200-1600 MHz bandında dolaştığını gördük. CoreTmp ise 95-98 derece arasındaydı. Bu klasik bir thermal throttling vakasıydı. İşlemci aşırı ısındığı için kendini yavaşlatıyordu.
Çözüm sunucu kasasının temizlenmesi ve termal macunun yenilenmesiydi. Sonrasında Bzy_MHz tutarlı bir şekilde 2400-3200 MHz arasına çıktı ve CoreTmp 65-70 dereceye indi. Bunu turbostat olmadan tespit etmek çok daha uzun sürerdi.
Turbo Boost Davranışını İzlemek
Intel Turbo Boost veya AMD Precision Boost ne kadar etkin çalışıyor? Bu soruya cevap vermek için base frekansın üstünde çalışılan sürenin oranına bakmak gerekir. Örneğin işlemcinizin base frekansı 2.4 GHz, max turbo frekansı 3.8 GHz ise:
sudo turbostat --show CPU,Avg_MHz,Bzy_MHz,Busy%,C6% --interval 1 -- sleep 30
-- sleep 30 komutunu turbostat‘a geçirmek, belirtilen komutu çalıştırıp biterken yapılan ölçümü özetleyen bir rapor almanızı sağlar. Bu son derece kullanışlı bir özelliktir: bir benchmark veya yoğun iş yükü çalıştırırken aynı anda turbostat’ın arka planda ölçüm yapmasını sağlayabilirsiniz.
sudo turbostat --show Core,CPU,Avg_MHz,Bzy_MHz,IPC,Pkg_W
--interval 1 -- stress-ng --cpu 0 --timeout 60
stress-ng yükü altında Bzy_MHz değerlerinin nasıl dağıldığına bakarak Turbo Boost’un ne kadar agresif devreye girdiğini ve güç zarfının nasıl genişlediğini görebilirsiniz.
C-State Analizi: İşlemci Ne Zaman Uyuyor?
C-state’ler, işlemcinin boşta olduğunda güç tasarrufu için girdiği enerji tasarrufu modlarıdır. C0 aktif çalışma, C1 hafif uyku, C6 ise derin uyku durumudur. Veri merkezi ortamlarında C-state davranışı hem enerji verimliliği hem de gecikme (latency) açısından kritiktir.
sudo turbostat --show Core,CPU,Busy%,C1%,C3%,C6%,C7% --interval 2
Eğer bir sunucunuzun latency hassas bir uygulama çalıştırdığını (örneğin düşük gecikmeli bir mesajlaşma kuyruğu veya fintech uygulaması) düşünüyorsanız, işlemcinin C6 veya C7’ye çok sık girmesi sorun yaratabilir. Derin C-state’lerden çıkış süresi (exit latency) milisaniyeler mertebesinde olabilir ve bu gerçek zamanlı uygulamalar için kabul edilemez.
Bunu gözlemlemek için:
sudo turbostat --show CPU,C6%,C7%,Avg_MHz --interval 1 |
awk 'NR>1 && $3>50 {print "Uyari: CPU"$1" C6 oranı yüksek: "$3"%"}'
Bu basit pipeline ile C6 oranı yüzde ellinin üzerindeki CPU’ları anlık olarak işaretleyebilirsiniz.
tpstat Kurulumu ve Kullanımı
tpstat ThinkPad odaklı sistemlerde daha yaygın kullanılsa da genel ACPI tabanlı güç bilgisi edinmek için de işe yarar. Kurulum:
sudo apt-get install tp-smapi-dkms thinkpad-acpi
# veya sadece tpstat için:
sudo apt-get install tpstatus
Bazı dağıtımlarda tpstat doğrudan paket olarak gelmeyebilir. Bu durumda acpi ve powertop ile birlikte çalışmak daha pratiktir:
sudo apt-get install acpi powertop
tpstat‘ın temel çıktısı pil durumu, şarj hızı ve güç tüketimini bir arada verir:
tpstat -a
Çıktıdan şu bilgilere ulaşırsınız:
- Battery status: Şarjda mı, deşarjda mı
- Remaining capacity: Kalan kapasite (mWh veya mAh cinsinden)
- Present rate: Anlık akım/güç çekimi
- Last full capacity: Son tam şarj kapasitesi
- Design capacity: Fabrika kapasitesi
Bu veriler özellikle laptop olarak kullanılan sysadmin iş istasyonlarında veya edge computing cihazlarında pil sağlığını izlemek için değerlidir.
Gerçek Dünya Senaryosu 2: Güç Profili Optimizasyonu
Bir Kubernetes worker node’unun edge’de çalıştığı ve enerji kısıtlı bir ortamda olduğu bir projeyle karşılaşmıştık. Düğümler mevcut güç kaynaklarından 45 Watt’ı geçemezdi. turbostat ile anlık güç tüketimini ölçüp cpupower ile governor ayarlarını değiştirerek dengeyi bulduk.
Önce mevcut durumu ölçtük:
sudo turbostat --show Pkg_W,Cor_W,RAM_W,GFX_W --interval 1 -- sleep 60
Ortalama paket gücünün 52 Watt olduğunu gördük. Governor’ı performance‘tan powersave‘e çektik:
sudo cpupower frequency-set -g powersave
Sonra tekrar ölçtük:
sudo turbostat --show Pkg_W,Cor_W,Avg_MHz,Bzy_MHz --interval 1 -- sleep 60
Paket gücü 38 Watt’a indi ancak Bzy_MHz değerleri makul seviyelerde kaldı. Sonuç olarak 14 Watt tasarruf ederken işlem kapasitesinin yalnızca yüzde on ikisi kaybedildi. Bu edge senaryosu için kabul edilebilir bir trade-off’tu.
turbostat ile Script Entegrasyonu
turbostat‘ı bir monitoring pipeline’ına entegre etmek için çıktısını ayrıştırmanız gerekebilir. Aşağıdaki script, belirli aralıklarla paket güç tüketimini ölçüp bir CSV dosyasına kaydeder:
#!/bin/bash
OUTPUT_FILE="/var/log/power_metrics_$(date +%Y%m%d).csv"
echo "timestamp,pkg_w,core_temp" > "$OUTPUT_FILE"
while true; do
TIMESTAMP=$(date +%H:%M:%S)
# turbostat'ı tek seferlik çalıştır, çıktının son satırını al (özet satırı)
METRICS=$(sudo turbostat --show Pkg_W,CoreTmp
--interval 3 --num_iterations 1 2>/dev/null |
tail -1 |
awk '{print $1","$2}')
echo "${TIMESTAMP},${METRICS}" >> "$OUTPUT_FILE"
sleep 10
done
Bu script 10 saniyede bir güç ve sıcaklık verisini kaydeder. Prometheus’a node_exporter custom collector olarak eklenerek Grafana dashboardlarına taşınabilir.
SMI Sayacına Dikkat Edin
turbostat çıktısında SMI (System Management Interrupt) sayacı çoğu zaman göz ardı edilir. Ancak bu sayaç kritik bir göstergedir. SMI, işletim sisteminin tamamen kontrolü geçici olarak kaybettiği kesme türüdür; BIOS/UEFI firmware bu kesmeleri işler ve işletim sistemi bu sürede donmuş gibi görünür.
sudo turbostat --show CPU,SMI,Avg_MHz --interval 1
SMI sayacının sürekli artması, BIOS sorunlarına, bazı UEFI güç yönetimi özelliklerine veya ECC hata kayıtlarına işaret edebilir. Bir üretim sisteminde bu sayacın sıfırdan farklı ve artıyor olması acil inceleme gerektirir. SMI’dan kaynaklanan latency spike’ları cyclictest gibi araçlarla da teyit edilebilir ancak ilk ipucunu turbostat verir.
powertop ile Tamamlayıcı Analiz
tpstat kullanımı kısıtlıysa veya daha ayrıntılı güç profili çıkarmak istiyorsanız powertop mükemmel bir tamamlayıcıdır:
sudo powertop --auto-tune
Bu komut birçok güç optimizasyonunu otomatik olarak uygular. Ama ne yaptığını görmek için önce interaktif modda çalıştırın:
sudo powertop
Tab tuşuyla sekmeler arasında geçiş yaparak güç harcayan süreçleri, wake-up’ları ve aygıt durumlarını inceleyebilirsiniz.
Daha da önemlisi, powertop ile birleşik bir rapor oluşturabilirsiniz:
sudo powertop --html=/tmp/power_report.html --time=30
Bu raporu tarayıcıda açarak hangi cihazın, hangi kernel modülünün veya hangi uygulamanın en çok güç harcadığını görsel olarak inceleyebilirsiniz. Özellikle güç optimizasyonu projesinin başında fotoğrafı görmek için bu rapor son derece değerlidir.
Frekans Sınırlamalarını Anlamak
turbostat çıktısında Avg_MHz ile TSC_MHz arasındaki fark önemlidir. TSC (Time Stamp Counter) değişmez referans frekanstır. Eğer Avg_MHz sürekli olarak beklenenden düşükse birkaç farklı sebep olabilir:
- İşlemci thermal throttling yapıyor (CoreTmp yüksek)
- Power limit throttling: TDP sınırına ulaşıldı
- Voltage regulator limitine ulaşıldı (platforma özel)
- Governor
powersavemodunda ve yük yetersiz
Bu senaryoları birbirinden ayırt etmek için RAPL (Running Average Power Limit) sınırlarına bakmak gerekir:
sudo turbostat --show PkgTmp,Pkg_W,CorWatt,RAMWatt,Busy% --interval 1
Eğer Pkg_W değeri sürekli olarak sistemin TDP değerine (örneğin 35W veya 65W) yakınsa ve işlemci yük altında bunun üstüne çıkamıyorsa, power limit throttling’den söz ediyorsunuzdur. Bu durumda BIOS ayarlarından PL1/PL2 limitlerini veya sunucu management arayüzünden güç politikasını incelemeniz gerekir.
Gerçek Dünya Senaryosu 3: Enerji Maliyeti Hesabı
Büyük ölçekli veri merkezi operasyonlarında elektrik maliyeti ciddi bir kalem oluşturur. turbostat çıktısından elde ettiğiniz Pkg_W değerini kullanarak yaklaşık enerji maliyeti hesaplayabilirsiniz.
#!/bin/bash
# 1 saatlik ölçüm alıp ortalama güç tüketimini hesapla
echo "1 saatlik güç ölçümü başlıyor..."
AVG_WATT=$(sudo turbostat --show Pkg_W --interval 60
--num_iterations 60 2>/dev/null |
awk 'NF==1 && NR>1 {sum+=$1; count++} END {print sum/count}')
echo "Ortalama paket gücü: ${AVG_WATT} W"
# Türkiye sanayi elektrik birim fiyatı (kWh): yaklaşık 3.5 TL
HOURLY_COST=$(echo "scale=4; $AVG_WATT / 1000 * 3.5" | bc)
MONTHLY_COST=$(echo "scale=2; $HOURLY_COST * 24 * 30" | bc)
echo "Saatlik maliyet: ${HOURLY_COST} TL"
echo "Aylık tahmini maliyet: ${MONTHLY_COST} TL"
Bu script ile eski governor ayarı ve yeni optimizasyon sonrası maliyeti karşılaştırabilir, yöneticinize somut tasarruf rakamı sunabilirsiniz.
Sonuç
turbostat ve tpstat, sistem yöneticisinin standart araç setinde bulunması gereken ancak maalesef çoğu zaman göz ardı edilen iki güçlü yardımcı programdır. top ve htop ne kadar iyi araçlar olsa da işlemci frekansı, C-state dağılımı, güç tüketimi ve thermal throttling gibi konularda size tek satır bile bilgi vermezler.
turbostat özellikle şu durumlarda vazgeçilmezdir: beklenmedik performans düşüşlerini araştırırken, thermal throttling şüphesi olduğunda, enerji verimliliği optimizasyonu yaparken ve SMI tabanlı latency sorunlarını tespit etmeye çalışırken. tpstat ise pil yönetimi ve genel güç profili takibi için bu ekosisteme değerli bir katkı sağlar.
Bu araçları düzenli izleme altyapınıza entegre etmenin yolu script’lemeyi ve Prometheus/Grafana ekosistemine bağlamayı geçiyor. Bunu bir kez kurduğunuzda, bir sonraki gece mesaisinde ekranlar parlarken ve fanlar uğuldarken, neden böyle olduğunun cevabı zaten önünüzde hazır olacak.
