Kullanım
powermetrics [-i sample_interval_ms] [-r order] [-t wakeup_cost] [-o output_file]
[-n sample_count]
Açıklama
powermetrics; CPU kullanım istatistiklerini (kullanıcı modu ve denetleyici [supervisor] modunda geçirilen süre olarak ikiye ayrılmış), zamanlayıcı ve kesme (interrupt) uyandırma frekansını (toplam ve neredeyse boşta olan iş yükleri için paket boşta durumundan çıkışlarla sonuçlananlar) ve desteklenen platformlarda kesme frekanslarını (CPU numarasına göre kategorize edilmiş), paket C-state istatistiklerini (çekirdek kompleksi + varsa entegre grafiklerin düşük güçte boşta kalma durumlarında geçirdiği sürenin bir göstergesi), örnekleme sırasındaki CPU frekansı dağılımını toplar ve görüntüler. Bu araç ayrıca CPU, GPU, ANE (Apple Neural Engine) gibi çeşitli SoC alt sistemleri tarafından tüketilen tahmini gücü de görüntüleyebilir. Not: powermetrics tarafından raporlanan ortalama güç değerleri tahminidir ve hatalı olabilir; bu nedenle cihazlar arasındaki herhangi bir karşılaştırma için kullanılmamalıdır, ancak uygulamaları enerji verimliliği açısından optimize etmeye yardımcı olmak için kullanılabilir.
-h, --help Yardım mesajını yazdırır.
-s samplers, --samplers samplers Virgülle ayrılmış örnekleyiciler (samplers) ve örnekleyici grupları listesi. Örnekleyicilerin ve örnekleyici gruplarının bir listesini görmek için -h seçeneğiyle çalıştırın. "default" belirtilmesi varsayılan seti, "all" belirtilmesi ise desteklenen tüm örnekleyicileri görüntüleyecektir.
-o file, --output-file file stdout yerine dosyaya çıktı verir.
-b size, --buffer-size size Çıktı arabellek boyutunu ayarlar (0=yok, 1=satır)
-i N, --sample-rate N Her N milisaniyede bir örnek alır (0=devre dışı) [varsayılan: 5000ms]
-n N, --sample-count N N adet periyodik örnek alır (0=sonsuz) [varsayılan: 0]
-t N, --wakeup-cost N Zaman tabanlı metriklerle boşta uyandırmaları kullanan hibrit sıralama düzenlerini kullanırken, paket boşta uyandırmalarının N mikrosaniye CPU zaman maliyetine sahip olduğunu varsayar.
-r method, --order method Belirtilen yöntemi kullanarak süreç listesini sıralar [varsayılan: composite]
[pid] süreç kimliği (process identifier) [wakeups] toplam paket boşta uyandırmaları (takma ad: -W) [cputime] kullanılan toplam CPU süresi (takma ad: -C) [composite] enerji numarası, bkz. --show-process-energy (takma ad: -O)
-f format, --format format Verileri belirtilen biçimde görüntüler [varsayılan: text]
[text] insan tarafından okunabilir metin çıktısı [plist] makine tarafından okunabilir özellik listesi (property list), NUL ile ayrılmış
-a N, --poweravg N Her N örnekte bir poweravg görüntüler (0=devre dışı) [varsayılan: 10]
--hide-cpu-duty-cycle CPU görev döngüsü (duty cycle) verilerini gizler
--show-initial-usage Tüm çalışma süresi (uptime) için ilk örneği yazdırır
--show-usage-summary Çıkış yaparken nihai kullanım özetini yazdırır
--show-pstates P-state dağılımını gösterir. Yalnızca belirli donanımlarda mevcuttur.
--show-plimits plimit'leri, zorunlu boşta kalmayı (forced idle) ve RMBS'yi gösterir. Yalnızca belirli donanımlarda mevcuttur.
--show-cpu-qos CPU başına QOS dökümlerini gösterir.
--show-process-coalition Süreçleri koalisyonlara (coalitions) göre gruplandırır ve koalisyon başına bilgileri gösterir. Örnekleme sırasında sonlanmış olan süreçlerin süreleri de koalisyona faturalandırılmaya devam eder, bu da DEAD_TASK süresindeki belirsizliği gidermek için yararlıdır.
--show-responsible-pid xpc servisleri için sorumlu pid ve üst (parent) pid değerlerini gösterir
--show-process-wait-times Süreç başına sfi bekleme süresi bilgisini gösterir
--show-process-qos-tiers Süreç başına qos gecikme (latency) ve çıktı (throughput) katmanını gösterir
--show-process-io Süreç başına io bilgisini gösterir
--show-process-gpu Süreç başına gpu süresini gösterir. Bu seçenek yalnızca belirli donanımlarda mevcuttur.
--show-process-netstats Süreç başına ağ bilgisini gösterir
--show-process-qos Süreç bazında toplanmış QOS sürelerini gösterir. İş parçacığı (thread) başına bilgi mevcut değildir.
--show-process-energy Süreç başına enerji etkisi (energy impact) numarasını gösterir. Bu numara; CPU, GPU, disk io ve ağ iletişimi dahil olmak üzere sürecin kullandığı toplam enerji için kaba bir tahmindir. Her birinin ağırlığı platforma özgüdür. Bunun etkinleştirilmesi, yukarıdaki tüm süreç başına istatistiklerin örneklenmesini dolaylı olarak etkinleştirir.
--show-process-samp-norm Sürecin başlangıç zamanı yerine, örnekleme penceresine göre normalize edilmiş CPU süresini gösterir. Örneğin 5 saniyelik bir örnekleme penceresinin bitiminden 1 saniye önce başlatılan ve pencerenin sonuna kadar sürekli çalışan bir süreç, burada 200 ms/sn ve normal sütunda 1000 ms/sn olarak görünecektir.
--show-process-ipc ARM makinelerinde süreç başına Talimatları (Instructions) ve döngüleri (cycles) gösterir. Küme (cluster) istatistiklerini göstermek için --show-process-amp ile birlikte kullanın.
--show-all Tüm örnekleyicileri etkinleştirir ve her örnekleyici için mevcut tüm bilgileri görüntüler.
Bu araç ayrıca, verilerin otomatik olarak toplanmasına yardımcı olmak amacıyla belirli sinyallerin alınması üzerine özel davranışlar uygular:
SIGINFO hemen bir örnek alır SIGIO arabelleğe alınmış tüm çıktıları boşaltır (flush) SIGINT/SIGTERM/SIGHUP örneklemeyi durdurur ve çıkar
Çıktı (Output)
Enerji azaltma yönergeleri
CPU süresi, teslim tarihleri (deadlines) ve kesme uyandırmaları: Düşük olması daha iyidir
Kesme sayıları: Düşük olması daha iyidir
C-state kalıcılığı (residency): Yüksek olması daha iyidir
Çalışan Görevler (Running Tasks)
İlgili sürece atanan iş parçacıkları (threads) tarafından tüketilen, kullanıcı alanı (user space) ve çekirdek (kernel) modunda geçirilen süreye bölünmüş CPU süresi.
İlgili süreçteki iş parçacıklarını uyandıran "kısa" zamanlayıcıların (zamanlayıcının oluşturulduğu noktada teslim tarihine gelekte < 5 milisaniye kalan durumlar) sayıları. Genellikle kısa teslim tarihlerine sahip olan yüksek frekanslı zamanlayıcılar, önemli ölçüde enerji tüketimine neden olabilir.
Söz konusu süreçten bir iş parçacığının dağıtılmasıyla (dispatch) sonuçlanan toplam kesme düzeyi uyandırmalarının sayısı. Örneğin, bir iş parçacığı usleep() sistem çağrısında bloke olmuşsa, bir zamanlayıcı kesmesi o iş parçacığının dağıtılmasına neden olur ve bu sayacı artırır. Önemli bir boşta kalma bileşene sahip iş yükleri için, bu metriğin aşağıda bildirilen paket boşta durumundan çıkış metriğiyle birlikte incelenmesi yararlıdır.
Söz konusu süreçteki iş parçacıklarını uyandıran zamanlayıcılar/aygıt kesmeleri tarafından tetiklenen "paket boşta durumundan çıkışların" (package idle exits) sayısı. Bu, kesme uyandırma sayısının bir alt kümesidir. "Paket boşta durumundan çıkışları" tetikleyen zamanlayıcılar ve diğer kesmelerin, diğer kesmelere kıyasla enerji tüketimi üzerinde daha büyük bir etkisi vardır. Bazı Mac Pro sistemleri hariç, Mac ve iOS sistemleri tipik olarak tek paketli sistemlerdir; burada tüm CPU'lar, paylaşılan mantığa sahip tek bir işlemci kompleksinin (tipik olarak tek bir IC yongası) parçasıdır (sistem özelliklerine bağlı olarak paylaşılan son seviye önbellekler, entegre bellek denetleyicisi vb. içerebilir). Paketteki tüm CPU'lar boşta olduğunda, donanım her bir işlemcinin kendi mantığına ek olarak paylaşılan mantığın önemli bölümlerini de güç kapısı (power-gate) ile kapatabilir, ayrıca DRAM'i kendi kendine yenilemeye (self-refresh veya auto-refresh) almak, ara bağlantıları daha düşük güç durumlarına geçirmek vb. önlemler alabilir. Dolayısıyla, bu paket boşta durumundan çıkışı tetikleyen bir zamanlayıcı veya kesme, söz konusu CPU zaten çalışırken meydana gelen bir zamanlayıcıya göre güçte daha büyük bir artışa neden olur. Bir paket boşta uyandırmasını başlatan süreç aynı zamanda "ana tetikleyici" (prime mover) olabilir, yani kendi içindeki veya diğer süreçlerdeki daha ileri etkinliklerin tetikleyicisi olabilir. Bu metrik; web'de gezinme ve film oynatma gibi tipik hafif iş yüklerinde olduğu gibi, sistem nispeten boşta olduğunda en yararlıdır; daha ağır iş yüklerinde, CPU etkinliği paket boşta durumuna girişin nispeten nadir olacağı kadar yüksek olabilir, böylece söz konusu süreç/iş parçacığı nedeniyle oluşan paket boşta çıkışlarını maskeleyebilir.
Örnekleme aralığında herhangi bir süreç başlayıp kaybolduysa veya daha önce örneklenen bir süreç kaybolduysa, bunların istatistikleri "DEAD_TASKS" etiketli satıra yansıtılır. Bu durum, çok sık başlatılan geçici süreçleri içeren sorunları tanımlayabilir. Söz konusu geçici süreçleri tanımlamak için dtrace ("execsnoop") veya diğer araçlar kullanılabilir. powermetrics'i koalisyon modunda çalıştırmak (aşağıya bakın), sürecin ait olduğu koalisyonu faturalandırarak geçici süreç sorunlarının izlenmesine de yardımcı olacaktır.
Kesme Dağılımı (Interrupt Distribution)
Kesme örnekleyicisi; kesme vektörü ve ilişkili aygıta göre sınıflandırılmış kesme frekanslarını CPU bazında raporlar. Mac OS şu anda tüm cihaz kesmelerini CPU0'a atar, ancak zamanlayıcılar ve işlemciler arası kesmeler diğer CPU'larda meydana gelebilir. Kesme frekansları, yanlış yapılandırılmış aygıtları veya kesme yükündeki iyileştirme alanlarını belirlemede yararlı olabilir ve örnekleme aralığı boyunca aygıt etkinliğini tanımlamak için bir temsilci görevi görebilir. Örneğin, yoğun ağ kullanan bir iş yükü sırasında, Airport kablosuz ("ARPT") veya kablolu ethernet ("ETH0", "ETH1" vb.) ile ilişkili kesmelerde bir artış beklenmedik bir durum değildir. Ancak aygıt aktif olmadığında belirli bir aygıt için kesme frekansı sıfırdan farklıysa (örneğin High Definition Audio için "HDAU" kesmeleri hiç ses çalınmadığında bile meydana geliyorsa), bu bir sürücü hatası olabilir. int_sources örnekleyicisi, kesmeleri sorumlu InterruptEventSource kaynaklarına atfeder; bu da vektörün birden fazla kaynağa hizmet etmesi durumunda kesmenin nedenini netleştirmeye yardımcı olur.
Pil İstatistikleri (Battery Statistics)
Pil örnekleyicisi; pil yönetim birimi tarafından bir fark (delta) rapor edilmişse, söz konusu aralık boyunca pil deşarj oranlarını, mevcut ve maksimum şarj seviyelerini, döngü sayılarını ve tasarım kapasitesine göre aşınma durumunu rapor eder. Pil denetleyici verilerinin powermetrics örneklerine göre faz dışı gelebileceğini ve bunun da kısa örnekleme aralıklarında örtüşme (aliasing) sorunlarına neden olabileceğini unutmayın. Uyku/uyanma gibi kesintili durumlar boyunca deşarj oranları da bazı sistemlerde hatalı olabilir; ancak daha uzun aralıklar boyunca toplam şarj seviyesinin değişim oranı, toplam sistem yükünün yararlı bir göstergesidir. Powermetrics; A/C takma/çıkarma olayları, sistem uyku durumu kalıcılığı vb. durumlar için deşarj oranlarını filtrelemez. Pil deşarj oranları tipik olarak makine modelleri arasında karşılaştırılabilir değildir.
İşlemci Enerji Kullanımı (Processor Energy Usage)
cpu_power örnekleyicisi, Intel enerji modellerinden türetilen verileri rapor eder; Sandy Bridge intel mikro mimarisinden itibaren Intel güç kontrol birimi, detayları özel olan ancak muhtemelen tekil yürütme birimleri için görev döngülerine, mevcut voltaj/frekansa vb. dayanan bir enerji tüketim modelini dahili olarak sürdürür. Bu sayılar kesin olarak doğru değildir ancak gerçek enerji tüketimi ile koreledir. Bu bölüm şunları listeler: CPU çekirdeklerini, entegre GPU'yu ve sistem aracısını (entegre bellek denetleyicisi, son seviye önbellek) içeren işlemci paketi tarafından yayılan güç ve ayrı olarak CPU çekirdek gücü ile GT (entegre GPU) gücü (son ikisi gelecek bir sürümde). Enerji modeli verileri genellikle makine modelleri arasında karşılaştırılabilir değildir.
cpu_power örnekleyicisi daha sonra, Nehalem ve daha yeni mikro mimarilere sahip işlemcilerde, Intel terminolojisinde sırasıyla "P-states" ve "C-states" olarak adlandırılan donanımdan türetilen işlemci frekansı ve boşta kalma süresi bilgilerini rapor eder.
C-state'ler ayrıca "package c-states" (paket c-state'leri) ve çekirdek başına C-state'ler olarak sınıflandırılır. İşlemci, zamanlayıcının boşta döngüsünde bir "c-state" durumuna girer; bu durum CPU çekirdeğinin ve potansiyel olarak paket mantığının saatini kapatması (clock-gating) veya gücünü kesmesi (power-gating) ile sonuçlanarak güç yayılımını önemli ölçüde azaltır. CPU kompleksi, varsa entegre bellek denetleyicisi ve DRAM'in enerji tüketimi bir paket c-state durumundayken önemli ölçüde azaldığından, yüksek paket c-state kalıcılığı hedeflenmesi gereken bir amaçtır. Paket c-state'leri, paketteki tüm CPU çekirdekleri boşta olduğunda ve sistemdeki varsa yonga üzerindeki entegre GPU da (SandyBridge mobil ve sonrası) boşta olduğunda meydana gelir. Powermetrics, paket c-state kalıcılığını örneklenen sürenin bir oranı olarak rapor eder. Bu seçenek Nehalem mikro mimarisi ve daha yeni işlemcilerde mevcuttur. Mac Pro'lar gibi bazı sistemlerin "paket" c-state'lerini etkinleştirmediğini unutmayın.
Powermetrics ayrıca, söz konusu çekirdeğin (birden fazla SMT veya "hyperthread" içerebilir) ne zaman boşta olduğunu belirten çekirdek başına c-state kalıcılıklarını ve çekirdek içindeki her bir mantıksal işlemci için aktif/aktif olmayan görev döngüsü histogramlarını rapor eder. Bu seçenek Nehalem mikro mimarisi ve daha yeni işlemcilerde mevcuttur.
Bu bölüm ayrıca, örneklenen aralıkta boşta değilken ilgili mantıksal işlemcinin çalıştığı ortalama saat frekansını hem MHz cinsinden mutlak bir frekans hem de nominal nominal frekansın yüzdesi olarak listeler. Bu ortalama frekanslar, işletim sisteminin talebe dayalı dinamik voltaj ve frekans ölçeklendirmesi nedeniyle değişebilir. Bazı sistemler, nominal veya "P1" frekansından daha yüksek frekanslarda çalışabilir; bu durum Intel sistemlerinde "turbo modu" olarak adlandırılır. Böyle bir çalışma, nominal frekansın > %100'ü olarak kendini gösterecektir. Turbo modunda uzun süreli çalışma, genellikle enerji açısından verimsizdir; çünkü bu frekanslar yüksek voltaj gereksinimlerine sahiptir ve bu da yürütme süresindeki azalmayı telafi etmeye yetmeyecek şekilde güçte karesel bir artışa neden olur. Mevcut sistemler tipik olarak paket başına tek bir voltaj/frekans alanına sahiptir, ancak işlemciler faz dışı çalışabildiğinden farklı ortalama yürütme frekansları görüntüleyebilirler.
Disk Kullanımı ve Ağ Etkinliği (Disk Usage and Network Activity)
Ağ ve disk örnekleyicileri, örnekleme sırasında meydana gelen disk ve ağ etkinliğindeki farkları (deltaları) rapor eder. Ayrıca --show-process-netstats and --show-process-io seçeneklerinin belirtilmesi, görevler (tasks) örnekleyicisinde süreç bazında bu bilgiyi size sağlayacaktır.
Arka Işık Seviyesi (Backlight level)
Pil örnekleyicisi ayrıca arka ışık parlaklık seviyesinin anlık değerini rapor eder. Bu değer muhtemelen sistemler ve makine modelleri arasında karşılaştırılabilir değildir, ancak belirli bir sistemdeki senaryoları karşılaştırırken yararlı olabilir.
Aygıtlar (Devices)
Aygıtlar örnekleyicisi, her bir aygıt için örnekleme süresi boyunca aygıtın durumlarının her birinde geçirilen süreyi rapor eder. Farklı durumların anlamı her aygıta özgüdür. Powermetrics düşük güç durumlarını "L" ile, aygıtın kullanılabilir durumlarını "U" ile ve güç açık durumlarını "O" ile belirtir.
SMC
smc örnekleyicisi, Sistem Yönetim Denetleyicisi (System Management Controller) tarafından sağlanan bilgileri görüntüler. Desteklenen platformlarda bu, fan hızını ve çeşitli sıcaklık sensörlerinden gelen bilgileri içerir. Bunlar örnekleme penceresinin sonunda alınan anlık değerlerdir ve penceredeki diğer zamanlardaki değerleri mutlaka yansıtmaz.
Termal (Thermal)
termal örnekleyicisi sistemin altında olduğu mevcut termal basıncı görüntüler. Bu, örnekleme penceresinin sonunda alınan anlık bir değerdir ve penceredeki diğer zamanlardaki değeri mutlaka yansıtmaz.
SFI
sfi örnekleyicisi, sistem genelindeki seçici zorunlu boşta kalma (selective forced idle) istatistiklerini gösterir. Seçici zorunlu boşta kalma, işletim sisteminin sistemdeki belirli iş parçacıklarını sınırlayarak (throttling) kullanıcı etkisini en aza indirirken sistem gücünü sınırlamak için kullandığı bir mekanizmadır. Her iş parçacığı bir SFI sınıfına aittir ve bu örnekleyici, her bir SFI sınıfının şu anda ne kadar sınırlandığını gösterir veya hiçbiri sınırlandırılmamışsa boştur. Bunlar örnekleme penceresinin sonunda alınan anlık değerlerdir ve penceredeki diğer zamanlardaki değerleri mutlaka yansıtmaz. Süreç bazında SFI bekleme süresi istatistiklerini almak için --show-process-wait-times seçeneğini kullanın.
Bilinen Sorunlar
Sistem saatindeki değişiklikler ve uyku/uyanma durumları, rapor edilen cpu süresinde küçük hatalara neden olabilir.
Darwin 5/1/12 Darwin