Mengapa CPU saya tidak akan beroperasi pada potensi maksimalnya bahkan ketika aplikasi saya (yang menggunakan sumber daya CPU) tertinggal?

30

Mengapa CPU saya tidak pernah maksimal meskipun aplikasi saya, yang memakan hingga 40% dari CPU (tetapi 30 - 40% dari CPU masih tetap menganggur), sedang lamban?

Apa itu berarti:

  1. Ada cara untuk memaksa CPU berjalan pada 100%
  2. CPU diproduksi dengan cara itu dan satu-satunya yang bisa saya lakukan adalah membeli perangkat keras baru.
  3. Keterbatasan terletak pada aplikasi dan kelambatan tidak akan membaik bahkan dengan CPU yang lebih baik. (Dengan asumsi aplikasi tersebut sempurna, yang saya tanyakan adalah apakah perangkat lunak berjalan seperti itu?)
  4. Sesuatu yang lain
Nhu Thai Sanh Nguyen
sumber
4
Saya mengerti apa yang OP lakukan, saya membenci bagaimana ketika antivirus atau windows update menjalankannya benar-benar menutup sistem saya, memaksimalkan satu inti .... meninggalkan sisanya untuk melakukan apa? Saya akhirnya duduk selama 12 menit sampai saya bisa kembali bekerja.
10
Setiap aplikasi yang Maxes keluar bahkan salah satu dari beberapa sumber daya bersama di komputer (CPU, penyimpanan, memori, atau jaringan) dapat membuat seluruh sistem lambat, meskipun sumber daya bersama sisanya memiliki kapasitas yang tidak terpakai.
Saya katakan Reinstate Monica
78
Saya sudah pemrograman selama 25 tahun. Dan saya dapat meyakinkan Anda - ini bukan konspirasi. Sangat jarang menemukan aplikasi di mana CPU adalah hambatan, sebagian besar aplikasi waktu menunggu hal-hal lain seperti hard drive, RAM, atau jaringan.
Contango
10
Misalkan Anda melakukan beberapa pekerjaan komputasi - melakukan pajak, katakanlah. Jika Anda melakukan nol kerja saat Anda sedang menunggu formulir pajak Anda tiba di pos maka Anda akan melakukan nol kerja untuk waktu yang sangat lama. Aplikasi Laggy sering ditulis dengan buruk; mereka memblokir utas UI pada operasi latensi tinggi seperti disk atau IO jaringan yang tidak ada hubungannya dengan CPU, sehingga CPU menganggur dan aplikasi tidak responsif. Mendapatkan CPU yang lebih cepat tidak membantu; yang hanya membuat Anda memblokir operasi latensi tinggi lebih cepat .
Eric Lippert
3
@TwistyImpersonator: Itu adalah analogi yang bagus untuk program multithreaded dengan contention tinggi. Kita kadang-kadang melihat bahwa program multithreaded akan berjalan lebih lambat pada CPU yang lebih cepat karena CPU mendapatkan lebih banyak utas ke keadaan diblokir lebih cepat daripada CPU yang lebih lambat. Jika setiap pengemudi di New York City diberi mobil 10x lebih cepat besok, waktu perjalanan tidak akan membaik . Mereka akan menjadi lebih buruk.
Eric Lippert

Jawaban:

94

Anda mungkin menjalankan aplikasi single-threaded yang hanya dapat memaksimalkan satu inti CPU. Karena 100% dari satu inti kurang dari 100% dari kapasitas CPU multi-inti, total utilisasi CPU tidak mencapai 100%.

Anda dapat mengkonfirmasi ini dengan melihat pemanfaatan inti individu di Task Manager. Cari core tunggal yang mendekati utilisasi maksimal.

Saya katakan Reinstate Monica
sumber
24
Karena beralih, Anda hanya akan melihat penggunaan terdistribusi yang meringkaskan penggunaan satu inti. Pada dasarnya, aplikasi menggunakan tepat satu inti, tetapi melompat-lompat di antara inti, sehingga masing-masing rata-rata 1 / n.
Aganju
62
Saya juga akan mengatakan itu mungkin bahwa cpu sebenarnya bukan hambatan.
16
Samar-samar saya ingat Dwarf Fortress yang terkenal menghambat satu inti pada 100%, jadi ia mulai memotong bit lain menjadi utas kedua, mengarah ke utas "utama" yang dikunci pada 100%, dan utas "latar belakang" melayang sekitar 20-60%. Pada quad core, itu ... 30-40%.
Mooing Duck
3
Jangan lupa mode Turbo pada CPU. Taskmanager tidak memperhitungkannya saat menghitung persentase beban. Pada i5-4570S saya sering melihat beban sekitar 30%. Itu satu inti (25%) dengan 2,9 GHz biasa turbo menjadi 3,4 GHz. 25 * 3,4 / 2,9 hampir 30%. Dengan sebaran yang lebih tinggi antara frekuensi normal dan Turbo, kita bisa menjadi lebih tinggi.
Sunzi
7
@AytAyt - Saya akan melangkah lebih jauh dan mengatakan itu tidak mungkin, hampir pasti . Kecuali aplikasi OP melakukan penguraian angka murni (atau menggunakan spin-lock di mana-mana), sebenarnya cukup sulit untuk memuat CPU secara penuh, bahkan dengan program multithreaded. Setiap disk atau jaringan I / O akan meninggalkan siklus idle, dan mengingat OP menyebutkan "lagging" app, sepertinya ada kemungkinan bahwa ada beberapa komunikasi jaringan yang sedang dimainkan.
Agustus
49

Anda belum menentukan OS Anda. Jadi jawabannya akan seperti umum.

Aplikasi dapat dibatasi oleh berbagai alasan. Hambatannya bisa di:

  • CPU
    • kecepatan rendah
    • aplikasi berurutan tunggal / rendah (tidak dapat menggunakan semua inti / utas)
  • I / O
    • throughput disk
    • latensi disk
    • throughput jaringan
    • latensi jaringan
  • ingatan
    • kapasitas
    • throuthput
    • latensi
    • cache tidak cukup
    • lokalitas (NUMA)
    • swapping

Dan ada lebih banyak alasan, yang tidak begitu umum.

Jadi, lihat sumber daya sistem Anda dan cobalah untuk menganalisis sistem Anda untuk kemacetan lain, dari sekadar total beban CPU.

Jaroslav Kucera
sumber
9
Juga: Kartu Video memiliki GPU yang terpisah, I / O, dan memori, semua itu mungkin juga menjadi masalah.
Mooing Duck
2
@ MoingDuck Benar, tapi itu biasanya hanya masalah jika aplikasi yang dimaksud benar-benar menggunakan GPU (yaitu game 3D atau aplikasi CUDA / OpenCL atau semacamnya.)
reirab
13

Secara umum, ketika orang berbicara tentang komputer mereka yang lambat, saya menyebutkan debu. Sebagai seorang mantan teknisi komputer dengan pengalaman profesional 15 tahun, saya menemukan bahwa sekadar mengeluarkan debu dapat secara signifikan meningkatkan kinerja.

Saya tidak berbicara tentang jumlah debu yang tipis dan hampir tak terlihat, tetapi gumpalan yang cukup besar atau bahkan tikar yang mencegah aliran udara normal. Saya telah melihat heat sink yang pada dasarnya memiliki filter di atasnya yang merupakan debu, bukan filter yang sebenarnya. Ini memblokir jumlah udara yang sangat signifikan dari pendinginan CPU. Menghilangkan debu seperti ini akan cenderung menenangkan kipas secara instan dan memungkinkan komponen Anda bertahan lebih lama. Panas telah membunuh banyak komputer yang diminta untuk saya perbaiki.

Mengikuti ide masalah panas, Anda mungkin juga mencoba pasta termal yang lebih baik. White cr @ p kebanyakan prosesor datang dengan seperti Yugo dari thermal paste. Saya menggunakan Arctic Silver, tetapi bahkan ada hal-hal yang lebih baik dari itu. Arktik Perak adalah tentang Porche (menggunakan skala peringkat mobil), tetapi ada varietas Ferrari dan supercar di luar sana.

Prosesor cenderung melambat saat terlalu panas. Ini adalah hal fisik serta "pelestarian diri" yang diprogram dalam banyak CPU. Saya tidak tahu apakah itu masih akan menunjukkan 100% pada Task Manager atau apakah itu akan menunjukkan 40% (seperti yang Anda lihat), tetapi itu bisa menjadi pelambatan yang signifikan saat CPU mencoba untuk membiarkan pendingin dan kipas " mengejar ketinggalan."

Hal lain yang bisa memperlambat CPU Anda adalah GPU. Jika Anda menjalankan game atau utilitas yang intensif grafis (seperti CAD), GPU Anda mungkin menahan CPU Anda. Mendapatkan kartu video yang lebih baik mungkin sesuatu yang bisa dilihat. Selain itu, menggunakan kartu yang salah mungkin menahan Anda. Kartu permainan tidak (biasanya) dirancang untuk bekerja dengan CAD dan juga kartu workstation, dan kartu workstation (biasanya) tidak akan bermain dengan sangat baik. Ada yang melakukannya, tetapi kebanyakan tidak.

Seperti @Jaroslav Kucera sebutkan, itu mungkin terkait disk. Memukul HD banyak dapat memperlambat jalan Anda. Saya biasanya menjalankan beberapa drive. Satu didedikasikan untuk OS dan lainnya untuk perangkat lunak, file halaman Windows, file pribadi, dll. Selain tidak perlu terlalu khawatir tentang membackup data pribadi jika terjadi kegagalan OS, memiliki beberapa HD menyebarkan beban kerja yang cukup besar. Membaca dan menulis ke disk yang sama pada saat yang sama dapat sangat memperlambat HD. Menggunakan SHD dapat mengurangi ini, tetapi tidak sepenuhnya. Photoshop dan perangkat lunak pengeditan video dikenal untuk memukul HD. Membaca dari satu HD kemudian meng-output ke HD ke-2 adalah cara yang harus dilakukan. Ini juga membantu kehidupan HD Anda. Saya juga menggunakan pendingin aktif pada HD saya. Saya belum membunuh hard drive sejak saya meletakkan kipas dan pendingin pada mereka +15 tahun yang lalu. Google mereka, mereka adalah asuransi murah.

Percaya atau tidak, PSU Anda mungkin memperlambat Anda juga. Jika Anda tidak memiliki kekuatan yang cukup (atau PSU Anda sudah tua atau murah, dinilai lebih tinggi, POS Cina), Anda dapat memiliki masalah kinerja. Saya telah melihat secara langsung apa yang aneh dengan masalah OS yang dapat dilakukan oleh PSU. Anda mencari voltase serta amp, jadi pastikan semuanya cocok dengan spesifikasi pada PSU, jika Anda memilih rute ini, dan juga memastikan mereka memenuhi atau melampaui kebutuhan daya Anda. Jika komponen Anda total 500 watt dan Anda memberi mereka bahkan 475, itu buruk. Saya sarankan untuk melampaui persyaratan Anda sekitar 20%, sehingga PSU Anda semakin tua (dan turun daya) dan komponen lainnya semakin tua (dan membutuhkan daya yang lebih besar), Anda tidak terjebak membeli PSU baru begitu cepat.

Termasuk jawaban lain di sini, masih ada lebih banyak alasan untuk komputer Anda berjalan lambat. Kecuali untuk opsi PSU, apa yang saya bicarakan sangat umum terlihat ketika saya adalah seorang teknisi komputer. Melakukan tolok ukur dan tes lain adalah satu-satunya cara Anda akan dapat memecahkan masalah. Bertukar bagian bahkan mungkin tidak menyelesaikan masalah jika itu adalah kombinasi dari beberapa bagian yang menyebabkan pelambatan.

Dan, AFAIK, tidak ada cara untuk memaksa komputer Anda menggunakan 100% prosesor. CPU dan OS tahu apa yang harus mereka lakukan dan benar-benar bagus dalam pekerjaan mereka, biasanya. :-) Saya tidak berpikir ada yang belum menemukan cara untuk memaksa memberi makan CPU untuk membuatnya berjalan pada 100% ketika Anda berpikir itu harus. Setidaknya tidak tanpa memberi makan sampah tambahan untuk membuat persentase "terlihat bagus."

Dengan Anda melihat 40% dan tidak dan pembagian angka 100% (seperti 25%, 33%, atau 50%), saya merasa itu bukan masalah threading tunggal. Bisa jadi, tapi itu bukan tempat pikiran saya pergi. +1 ke @Twisty Impersonator karena segera membawanya.

Semoga berhasil mencoba yang satu ini! Saya menghabiskan waktu berhari-hari untuk mencari tahu masalah seperti ini, hanya untuk akhirnya mengganti sebagian besar nyali sebagai "pilihan terakhir".

biaya komputer
sumber
1
+1 untuk menunjukkan kemungkinan bahwa suatu aplikasi dapat terputus pada GPU yang sudah maksimal.
Saya katakan Reinstate Monica
6
Saya lupa menyebutkan, merokok di dekat komputer adalah salah satu hal terburuk yang dapat Anda lakukan. Itu meninggalkan kekacauan lengket berwarna oranye, menjijikkan, dan menjijikkan (tidak bisa cukup menekankan) yang tidak bisa dibersihkan. Debu menjadi berlapis dan tidak mungkin dibersihkan. Anda mungkin bisa menyelesaikannya dengan pemandian minyak onderdil mobil atau pemandian air sonic, tapi saya tidak pernah mengalami masalah itu. Bahkan membersihkan kasing merupakan upaya sia-sia.
computercarguy
2
Hanya dari sudut pandang pengembang, CPU akan melakukan apa pun yang Anda suruh. Jika tidak mencapai 100%, itu karena program Anda menunggu hal-hal lain terjadi (disk IO, jaringan, input pengguna, pesan sistem, dll). Jika Anda memiliki sesuatu untuk CPU lakukan, itu akan secara otomatis menggunakan 100% (dengan asumsi aplikasi multithreaded) untuk melakukan apa yang dibutuhkan program Anda - Anda tidak perlu "membuatnya" menggunakan 100% atau membuka kuncinya atau sesuatu.
JPhi1618
2
@ JPhi1618: Kamu lupa panas. Terlepas dari apa yang Anda katakan harus dilakukan, jika CPU kepanasan, itu akan melambatkan diri untuk berjalan di jauh kurang dari 100%.
Mooing Duck
9
@ JPhi1618 CPU biasanya diblokir dengan menskalakan frekuensi mereka (underclocking), jadi alih-alih berjalan pada, katakanlah bukannya 3.0GHz, mereka berjalan pada 2.0GHz. Jadi CPU yang dibatasi secara termal masih dapat melaporkan beban 100%, karena setiap "slot kerja" ditempati, hanya ada "slot kerja" yang lebih sedikit dalam satuan waktu yang tersedia.
el.pescado
3

Bisa jadi pengaturan hemat energi baik di bios atau sistem operasi. Banyak CPU dan motherboard modern memiliki pengaturan untuk memungkinkan CPU menjadi lebih ekonomis dengan penggunaan listrik, (terutama berlaku untuk laptop yang ingin baterai bertahan). Anda mungkin dapat mematikan pengaturan seperti itu, tetapi pastikan Anda tahu apa yang Anda lakukan karena di samping pengaturan biasanya ada hal-hal lain yang dapat mempengaruhi fungsi komputer dengan cara penting lainnya.

pembaca matematika
sumber
2

Saya secara teratur mencapai utilisasi 100% ketika melakukan tugas rendering dan matematika. Saya akan memverifikasi bahwa hyperthreading akan mencapai 100% tinggi, dan pemesanan instruksi adalah masalah besar. Intel dan AMD keduanya memiliki sejumlah besar perangkat keras yang didedikasikan untuk memesan kembali instruksi untuk mengisi inti eksekusi sebanyak mungkin. Jika Anda mendapatkan 30% pada mesin modern, Anda mungkin

  • Periksa Temps - Intel & AMD baik downclock ketika mereka menjadi panas dan itu menunjukkan sebagai gagap dan paku.
  • Tidak berbuat banyak dengan itu .... contohnya adalah:
    1. Menjelajah web
    2. E-mail
    3. Game paling sederhana
    4. Saya hampir menjamin masalah Anda adalah salah satu atau semua hal berikut, mulai dari atas:
  • Dapatkan SSD
  • Dapatkan SSD
  • Dapatkan OS Anda di SSD dan pindahkan data normal ke drive multi-TB tradisional. Windows membutuhkan lebih banyak akses ke file lokal daripada apa pun.
  • Sobat Bonazai?
  • Jaga agar semua drive setidaknya di atas 10% kapasitas. NTFS adalah sistem file penjurnalan dan kinerja turun semakin lengkap drive.
  • Anda memerlukan NVMe drive / SSD untuk drive OS Anda SECEPATNYA (ya saya katakan lagi). Kinerjanya luar biasa, dan menjalankan bagian kedua dari ini ... Pengecer utama menjual Samsung 961 NMVe 512GB drive seharga $ 300 hari ini yang banyak untuk penggunaan normal.
  • Windows 10 adalah GPU yang berat. Kartu video berdedikasi murah dapat menghilangkan beban baik memori dan CPU. Anda masih dapat menggunakan APU dalam kombinasi dengan kartu video tetapi Anda akan menghemat beberapa RAM, dan VRAM umumnya jauh lebih cepat.
  • Core-count CPU yang lebih rendah juga terikat memori. Jika Anda melihat i7s mereka semua menjalankan DDR quad channel di 4 bank. Chip Epyc AMD akan menjadi 8 channel DDR5 dengan 64 core. Tidak membantu Akhirnya, dan saya tidak bisa cukup menekankan yang satu ini, buang uang pada RAM sebanyak mesin Anda akan mengambil. Saya memiliki 32GB dan saya membeli 32 lagi tahun ini. Windows melakukan sesuatu yang mirip dengan superfetch yang sedikit lebih baru yang memampatkan memori dalam RAM yang tidak digunakan sehingga program dan data dapat di-unzip saat dibutuhkan. Sebagai contoh lain saya menjalankan Linux VM untuk pengembangan, mengalokasikan 6/12 core dan ram 16GB, dan setelah memuat pertama dari SSD itu dimulai dalam ~ 3 detik. CPU dianggap sangat murah hari ini oleh optimasi seperti itu ...

Semua hal ini sepertinya berlebihan sampai saya terjebak mengkompilasi proyek file 70k atau meningkatkan file mentah kamera raksasa menjadi 17 "x26" x600 dpi pada 16 bit warna. Bahkan pada utilisasi 100% sumber daya terlalu banyak sehingga Anda tidak mendapatkan perlambatan. Suatu malam saya menyadari bahwa saya memiliki dua VM dan Wolf 2 dimuat bersama dengan 2 IDE (saya terganggu, menuntut saya) dan tidak melihat perlambatan. Ini adalah ~ $ 1500 mesin BTW, tidak ada yang istimewa, dan paling lambat dibeli selama bertahun-tahun. Setengah dari itu adalah salah satu Radeon RX64 karena kartu video saya berusia 6 tahun. Perbedaan besar dalam render dan semacamnya. Melakukan upgrade kemungkinan akan membuat Anda lebih banyak menggunakan perangkat keras daripada mengasumsikan bahwa hanya menggunakan 30% saja yang akan Anda dapatkan.

Jika saya melemparkan hard drive 5400RPM di mesin ini untuk OS itu akan berjalan seperti omong kosong total.

TL; DR sepertinya Anda terikat dengan CPU sekarang. Habiskan beberapa ratus pada setidaknya 256GB SSD untuk OS, 8GB ram, dan kartu gamer ujung bawah dan komputer akan bertahan bertahun-tahun. Yang ini bertahan selama 6 tahun sebelum saya akhirnya melakukan prosesor dan refresh Mobo dan saya mengkompilasi seluruh cross compiler suite sekitar 25 kali sehari dengan gigi lama.

Panggil saya berlebihan tapi saya tidak merekomendasikan 8 kartu Tesla atau apa pun. :-) Lakukan upgrade kecil ketika Anda bisa dan saya pikir Anda akan menyelesaikan banyak masalah ini. Saya lakukan bertahun-tahun yang lalu dengan menambahkan SSD ke sistem Q6600 dan menonton kinerja tiga kali lipat.

Jimmy Shinny
sumber
1

Tanpa mengetahui spesifikasi program Anda, sulit untuk mengatakannya, tetapi karena jawaban lain melihat kemungkinan aplikasi di-threaded tunggal, saya akan melihat aplikasi seolah-olah menggunakan multithreading yang tepat.

Suatu hal umum yang diabaikan adalah core fisik versus "core hyperthreaded." Hyperthreading unggul di banyak tugas pendek dengan kemacetan selain CPU. Untuk tugas-tugas bottlenecked CPU loop ketat, Anda masih dibatasi oleh jumlah inti fisik Anda, yang umumnya setengah dari jumlah inti hipertreaded Anda. Dalam skenario kasus yang benar-benar terburuk, manajer tugas Anda hanya dapat menunjukkan penggunaan 50% karena menghitung inti yang diacak dalam grafiknya, ketika pada kenyataannya, inti fisik Anda mungkin menggunakan 100% penggunaan. Secara umum, Anda akan menunjukkan lebih dari itu, karena sistem operasi Anda akan dapat menggunakan hyperthreading untuk tugas-tugas lain yang tidak terkait.


sumber
Tidakkah "multithreading yang tepat" berarti memiliki utas dengan pekerjaan yang harus dilakukan untuk setiap inti logis daripada setiap inti fisik ? Jika Anda menjalankan perulangan ketat pada setiap inti logis, Pengelola Tugas harus melaporkan 100% dengan hiperfreading. AFAIK, "persen penggunaan" di Task Manager didasarkan pada jumlah waktu utas tersebut dalam keadaan runnable dan dijadwalkan pada inti logis, belum tentu jumlah waktu sebenarnya, katakanlah, melakukan sesuatu pada ALU . OS mungkin bahkan tidak akan tahu itu (hanya mikrokode CPU akan.)
reirab
1
Kode mesin "Biasa" hanya menggunakan 2 hingga 3 dari 6 atau lebih port instruksi pada CPU modern. Belum lagi semua kios pipa yang disebabkan oleh cabang dan cache yang hilang. Hyperthreading membantu mengisi celah itu. Hampir selalu merupakan kemenangan untuk menggunakannya. Beberapa jenis kode tidak berfungsi dengan baik, seperti video encode / decode atau matematika matriks yang sangat dioptimalkan. Tapi itu tidak biasa.
Zan Lynx