Apakah ada cara untuk melihat frekuensi CPU saat ini di macOS dari terminal (bukan gadget daya Intel)

14

Saya menyadari jawaban ini:

/programming/9948987/detect-current-cpu-clock-speed-programmatically-on-os-x

Lihat jam saat ini Kecepatan CPU di OS X?

Yang merujuk Intel Power Gadgetsebagai cara untuk mendapatkan frekuensi CPU saat ini, apakah ada program / metode untuk mendapatkan informasi ini dari terminal?

sysctl hw.cpufrequencyhanya menunjukkan frekuensi nominal CPU, yaitu yang dinyatakan pabrikan. Tidak mempertimbangkan Turbo Boost atau frekuensi yang lebih rendah saat CPU menganggur. (Misalnya jika CPU adalah i5, 1.4GHz, itu akan selalu menyatakan 1.4GHz)

The Csolusi yang diberikan itu SO menggunakan sysctl.hmemiliki efek yang sama.

amanusk
sumber
Jawaban di balik tautan StackOverflow berisi jawaban berbasis Terminal. Bisakah Anda jelaskan bagaimana ini tidak berhasil untuk Anda?
nohillside
Semua solusi pada SO hanya menunjukkan frekuensi CPU nominal, tidak berubah sesuai dengan frekuensi aktual, dan tidak berkorelasi dengan Power Gadget
amanusk
Dari apa yang saya mengerti, "frekuensi" dihitung berdasarkan sejumlah faktor. Tidak ada "probe" yang terhubung ke CPU untuk mengukur secara real-time berapa frekuensi sebenarnya.
Allan
1
Jika bekerja di Linux, apakah itu menjadi pilihan untuk melihat kode sumber di sana?
nohillside

Jawaban:

4

Karena komentar Anda menyebutkan bahwa Anda benar-benar fokus untuk mengaktifkan Terminal (atau lebih tepatnya bukan desktop) ...

Saya pikir Intel Power Gadget akan membantu Anda mendapatkan info dari Terminal. Dari Intel :

Intel® Power Gadget juga menyediakan C / C ++ Application Programming Interface (API) untuk mengakses data daya dan frekuensi ini di program Anda; API didukung pada Windows dan Mac OS X. Untuk informasi lebih lanjut tentang API, lihat:

Dan di halaman yang sama, juga tautan ke Menggunakan Intel Power Gadget API di Mac OS X

Maaf ini bukan tautan ke solusi di luar kotak; Saya menghabiskan beberapa menit dengan google untuk melihat apakah saya dapat menemukan seseorang yang sudah melakukan ini tanpa keberuntungan.

webmarc
sumber
1
Ini adalah jawaban terbaik sejauh ini. Saya berharap ada cara untuk mendapatkan informasi frekuensi tanpa menginstal perangkat lunak eksternal (dengan sesuatu seperti sysctl), atau dengan menggunakan perangkat lunak open source.
amanuskus
2

Mencoba top -F -n0 -s3 | grep "CPU usage"

toptampilkan dan perbarui informasi yang diurutkan tentang proses
-Ftidak menghitung statistik pada perpustakaan bersama (kerangka kerja)
-n0menampilkan nol proses (karena kami tidak tertarik pada mereka)
-s3memperbarui setiap 3 detik (standarnya adalah 1)
grepmenunjukkan kepada kami hanya baris yang berisi frasa penggunaan CPU

Contoh Output:

$ top -F -n0 -s3 | grep "CPU usage"
CPU usage: 9.36% user, 20.0% sys, 70.63% idle 
CPU usage: 8.35% user, 8.19% sys, 83.45% idle 
CPU usage: 8.18% user, 7.77% sys, 84.4% idle 
CPU usage: 5.89% user, 8.1% sys, 86.8% idle

Anda bahkan dapat mem-parsing output untuk ditampilkan di tempat lain.

Sadarilah bahwa topini sangat intensif sumber daya saat sedang berjalan.

Sunting: Ah, Anda ingin frekuensi. Saya tahu iStat Menusharus menginstal helper untuk mendapatkan info itu secara realtime.

Matt Sephton
sumber
2
Memang frekuensi adalah masalah, sayangnya top dan htop tidak menyediakannya.
amanuskus
2

Saya harus berpikir ini sedikit pertanyaan XY dalam "Apa yang akan Anda lakukan setelah Anda mendapatkan nomor ini?" dan ingin menjawabnya secara langsung, tetapi mari selami apa yang ingin Anda ukur. Interupsi CPU pada macOS dibentuk dalam interval 150 ms dan banyak detail ini bersifat publik dari WWDC 2013 dan kemudian pada manajemen daya, App Nap ( Sesi 209 khususnya baik dan mudah didekati ) dan optimalisasi masa pakai baterai pada macOS.

penghitung waktu - penghematan energi dalam skala waktu 150 ms pada macOS dari sesi WWDC 2013 209

Karena kode dan setiap inti CPU dapat dan akan berubah ratusan kali per detik berdasarkan faktor beban sesaat, optimisasi daya yang mempertimbangkan apa yang terlihat di layar, data jaringan apa yang muncul, gagasan bahwa CPU modern bahkan memiliki satu "kesamaan" "Kecepatan clock pada satu titik waktu tampaknya sangat menyederhanakan kenyataan . Dengan 8 core pada banyak MacBook Pro dan puluhan core pada iMac Pro - Anda mendidihkan satu ton kompleksitas ke satu nomor.

Peningkatan ketika satu inti dapat berjalan lebih dari clocked cenderung lebih mudah diukur, tetapi Anda dapat mengukur pelambatan termal sangat sederhana dengan pencatatan termal pmset.

pmset -g therm

Anda tentu saja dapat mencatat perubahan spontan ke pelambatan termal CPU dengan pmset -g thermlogdan kemudian memetakannya ke spesifikasi CPU jika Anda dapat mengumpulkannya di tempat lain.

bmike
sumber
Opsi untuk mendapatkan frekuensi per-inti juga diterima :). Frekuensi dapat berubah beberapa kali dalam satu detik, tetapi sampel dari detik itu kemungkinan besar sudah cukup, misalnya, jika Anda ingin mengetahui frekuensi pada saat idle atau dalam Turbo penuh (seperti dalam tes stres). Menentukan daya dan suhu sebenarnya mungkin (walaupun tidak lurus ke depan) dengan membaca kunci SMC, saya berharap ada kunci SMC untuk frekuensi juga. Faktanya adalah, ada perangkat lunak yang memperoleh informasi ini (gadget daya Intel), pertanyaannya adalah bagaimana seseorang dapat melakukan ini tanpa perangkat lunak tambahan.
amanusk