Ubuntu dan deteksi kecepatan prosesor

12

Saya memiliki laptop lama yang saya gunakan sebagai media center di TV saya dan saya biasanya menginstal / menginstal ulang / menghapus OS dan Aplikasi yang berbeda untuk menjalankannya semulus mungkin.

Satu hal yang saya perhatikan sangat aneh. Laptop saya adalah HP Pavilion G62 yang memiliki prosesor AMD tiga inti yang beroperasi pada 1800mhz. Ketika saya meluncurkan XBMC dari Windows 7 dan melihat kecepatan prosesor, jelas tertulis 1800mhz. Namun, ketika saya meluncurkannya dari Ubuntu baik dari peluncur atau sebagai sesi, dikatakan prosesor hanya 800mhz.

Saya ingin menyelidiki lebih lanjut sehingga saya memuat DXDIAG di Windows untuk melihat kecepatannya. Benar saja, ini menunjukkan bahwa itu 1800mhz. Namun, ketika meluncurkan HardInfo di Ubuntu, ia memberi tahu saya bahwa kecepatan masing-masing inti adalah sebagai berikut: 1500mhz, 1500mhz, dan 800mhz.

Apakah ini berarti bahwa kecepatan prosesor yang diiklankan dan kecepatan yang terdeteksi oleh Windows berbohong atau dibulatkan? Atau apakah ada masalah dengan Ubuntu mendeteksi kecepatan prosesor saya dan sistem saya tidak berjalan seoptimal yang seharusnya? Saya akan cenderung mengatakan yang terakhir ... terutama karena tampaknya Windows berjalan jauh lebih lancar daripada Ubuntu.

Scotty_80
sumber
4
Silakan kirim output dari cpufreq-info. Anda mungkin harus menginstalnya sudo apt-get install cpufrequtilsterlebih dahulu.
terdon
2
"Ketika saya meluncurkannya dari Ubuntu baik dari peluncur atau sebagai sesi, dikatakan prosesor hanya 800mhz." Bisakah Anda mengambil screenshot?
Braiam

Jawaban:

11

Secara default Ubuntu menggunakan gubernur frekuensi ondemand . Untuk memeriksa / mengganti gubernur, instal cpufrequtilspaket seperti ini:

sudo apt-get install cpufrequtils

Untuk memeriksa kecepatan / gubernur saat ini dari setiap core run:

cpufreq-info

Anda dapat mengatur semua core ke kinerja seperti ini:

sudo cpufreq-set -r -g performance

Anda dapat mengonfirmasi bahwa semua core sekarang berjalan pada frekuensi maksimalnya seperti ini:

grep MHz /proc/cpuinfo

Catatan : perubahan ini bersifat sementara. Setelah Anda reboot, itu akan kembali ke permintaan .

Sylvain Pineau
sumber
1
Terimakasih atas infonya! Saya menjalankan perintah yang Anda daftarkan, dan menabrak core cpu pertama hingga 1800mhz, tetapi sisanya berada pada 800mhz. Ini, menurut jawaban Sergey yang sangat terperinci di bawah ini, kemungkinan besar normal untuk sistem saya.
Scotty_80
Mengedit jawaban untuk menyertakan parameter -c, yang memberitahukan frekuensi nomor cpu mana yang harus ditetapkan. Saya tidak dapat menemukan cara untuk menentukan semua nomor cpu sekaligus. Saya juga mencoba menulis skrip untuk mengaktifkan mode kinerja saat menggunakan daya AC dan mode ondemand saat menggunakan baterai. Jika ada yang sudah memiliki solusi untuk ini, silakan tambahkan di sini. Terima kasih.
Sri
1
Untuk mengatur kinerja semua CPU dalam sekali jalan, pertama-tama ubah ke mode pengguna super dengan sudo su dan kemudian gunakan ini: untuk ((i = 0; i <$ (nproc); i ++)); lakukan cpufreq-set -c $ i -r -g kinerja; selesai
Sri
10

Latar Belakang Teoritis: Dalam komputer biasa, CPU hampir tidak pernah digunakan. Untuk menghemat daya, CPU modern menerapkan penskalaan frekuensi - yaitu sistem operasi dapat memberitahu CPU untuk beralih ke frekuensi yang lebih rendah ketika beban rendah. Teknologi ini disebut SpeedStep di prosesor Intel dan Cool'n'Quiet di prosesor AMD.

Dalam Linux, penskalaan frekuensi kernel diimplementasikan oleh cpufreqinfrastruktur, yang menggunakan konsep "gubernur" untuk mengontrol frekuensi.

Gubernur default adalah "ondemand", yang meningkatkan frekuensi setelah penggunaan prosesor naik di atas 95%. Hal ini memungkinkan CPU untuk menghemat daya saat idle belum beralih ke kinerja penuh ketika ada hal yang harus dilakukan. Ada beberapa latensi transisi, diukur dalam milidetik, jadi ketika CPU yang menganggur tiba-tiba mendapat beban besar, ia terus menenggak pada frekuensi rendah selama beberapa milidetik sebelum beralih ke daya penuh, sehingga dalam situasi tertentu ini dapat menghasilkan kinerja yang sedikit lebih rendah daripada saat selalu berlari dengan kecepatan penuh.

Ada gubernur lain , termasuk gubernur "kinerja" yang selalu menjalankan CPU pada frekuensi penuhnya. Ini menghilangkan latensi switching, tetapi dapat meningkatkan konsumsi daya.

Anda dapat bereksperimen dengan gubernur yang berbeda seperti yang disarankan dalam jawaban lain, tetapi saya ragu itu akan menghasilkan hasil yang dramatis. Mereka tidak akan menjadikannya default kecuali masuk akal dalam 99% kasus :)

Namun, kembali ke pertanyaan Anda: kemungkinan besar, Windows menunjukkan frekuensi CPU maksimum yang mungkin (yang mereka iklankan di kotak CPU), sementara Ubuntu menunjukkan frekuensi aktual masing-masing inti CPU berjalan pada saat tertentu. Itu tidak berarti bahwa CPU berjalan lebih lambat di Ubuntu. Jika tampaknya Ubuntu berjalan lambat di laptop Anda, kemungkinan besar disebabkan oleh sesuatu yang lain - misalnya, RAM rendah, hard drive lambat dll. Ubuntu modern tentu saja membutuhkan lebih banyak sumber daya daripada, katakanlah, Windows XP yang kemungkinan besar Anda temukan di laptop yang lebih tua.

Bacaan lebih teknis:

Sergey
sumber
Ini jelas menjelaskannya! Namun, jika saya mengatur kinerja gubernur, bukankah seharusnya semua core cpu saya berjalan pada 1800mhz? Saat ini ketika saya mengubah pengaturan, itu hanya mengatur CPU1 ke 1800mhz. 2 lainnya hanya di 800mhz. Saya kira ini hanya bisa dikategorikan sebagai batasan CPU ...
Scotty_80