Neden benim işlemim (işlemcinin kaynaklarını kullanan) gecikme olsa bile CPU'm maksimum potansiyelinde çalışmıyor?


30

İşlemcimin% 40'ını tüketen (ancak işlemcinin% 30 - 40'ı hala boşta kalıyor) gecikmeli olsa bile işlemcim neden hiç çıkmıyor?

Bu demek oluyor ki:

  1. İşlemciyi% 100'de çalışmaya zorlamanın bir yolu var
  2. İşlemciler bu şekilde üretiliyor ve yapabileceğim tek şey yeni donanım satın almak.
  3. Sınırlama uygulamada yatmaktadır ve gecikme daha iyi CPU ile bile iyileşmeyecektir. (Uygulamanın mükemmel olduğunu varsayarsak, istediğim şey yazılımın bu şekilde çalışıp çalışmadığıdır?)
  4. Başka bir şey.

4
OP'nin ne yaptığını anlıyorum, virüsten koruma veya Windows güncellemesi çalışırken sistemimi nasıl tamamen düşürdüğünü, tek bir çekirdeği maksimuma çıkardıklarını ... diğerlerini ne yapmak için bıraktıklarını anlıyorum İşe geri dönene kadar 12 dakika oturuyorum.

10
Bir bilgisayardaki paylaşılan kaynaklardan birini (CPU, depolama, bellek veya ağ) en fazla düzeye çıkaran herhangi bir uygulama, kullanılmayan kapasiteye sahip kalan ortak kaynaklara rağmen tüm sistemi yavaşlatabilir.
Bence Monica

78
25 yıldır programlama yapıyorum. Ve sizi temin ederim - bu bir komplo değil. CPU'nun tıkanıklık olduğu uygulamaları bulmak nadirdir, çoğu zaman uygulamalar sabit disk, RAM veya ağ gibi başka şeyleri beklemektedir.
Contango

10
Diyelim ki hesaplamalı bir iş yapıyorsunuz - vergilerinizi yapıyorsunuz. Vergi formlarınızın postaya ulaşmasını beklerken sıfır iş yaparsanız, uzun zamandır sıfır iş yapacaksınız. Gecikmeli uygulamalar genellikle kötü yazılır; CPU ile ilgisi olmayan disk veya ağ IO gibi yüksek gecikmeli işlemlerde UI iş parçacığını engellerler; böylece CPU boşta kalır ve uygulama yanıt vermez. Daha hızlı bir CPU almak yardımcı olmuyor; bu sadece sizi engelleyen yüksek gecikmeli işlemlere daha hızlı ulaşmanızı sağlar .
Eric Lippert

3
@TwistyImpersonator: Bu yüksek çekişmeli okuyuculu programlar için iyi bir benzetmedir. Bazen çok iş parçacıklı bir programın daha hızlı bir CPU'da daha yavaş çalışacağını görüyoruz çünkü CPU daha yavaş bir CPU'dan daha hızlı bir şekilde bloke olmuş bir duruma geliyor . New York'taki her sürücüye yarın 10 kat daha hızlı bir araba verilseydi, gidip gelme zamanları düzelmezdi . Daha da kötüye giderlerdi.
Eric Lippert

Yanıtlar:


94

Muhtemelen sadece tek bir CPU çekirdeğini artırabilen tek iş parçacıklı uygulamalar kullanıyorsunuzdur. Bir çekirdeğin% 100'ü çok çekirdekli işlemci kapasitesinin% 100'ünden az olduğu için, toplam CPU kullanımı% 100'e ulaşmıyor.

Görev Yöneticisi'nde bireysel çekirdek kullanımını görüntüleyerek bunu onaylayabilirsiniz. Maksimum kullanıma yaklaşan tek damarları arayın.


24
Geçiş nedeniyle, yalnızca bir çekirdeğin kullanımına karşılık gelen dağıtılmış kullanım göreceksiniz. Temelde, uygulama tam olarak bir çekirdek kullanıyor, ancak her biri ortalama 1 / n değerine sahip.
Aganju

62
Ayrıca, cpu'nun aslında bir darboğaz olması mümkün olmadığını söyleyebilirim.

16
Belirgin bir şekilde% 100'de bir çekirdeği tıkayan Dwarf Fortress'i hatırlıyorum, bu yüzden diğer bitleri ikinci bir dişe dönüştürmeye başladı, bu da% 100'e kilitlenen "ana" dişe ve% 20-60 civarında gezinen "arkaplan" dişine yol açtı. Dört çekirdekli, bu ...% 30-40.
Mooing Duck

3
İşlemcilerdeki Turbo modunu unutma. Görev yüzdesi, yük yüzdesini hesaplarken bunu dikkate almaz. İ5-4570S'de sık sık yaklaşık% 30'luk bir yük görüyorum. Bu, düzenli 2,9 GHz’le 3,4 GHz’e bir çekirdek (% 25) verdi. 25 * 3,4 / 2,9 yaklaşık% 30'dur. Normal ve Turbo frekans arasında daha yüksek bir yayılma ile daha yüksek olabiliriz.
Sunzi

7
@AytAyt - Bir adım daha öteye gider ve sadece mümkün olmadığını söylerdim, neredeyse kesindir . OP'nin uygulaması tamamen sayısız çatırtı yapmıyorsa (veya her yerde döndürme kilitleri kullanıyorsa), çok iş parçacıklı bir programda bile bir CPU'yu tam olarak yüklemek oldukça zordur. Herhangi bir disk veya ağ G / Ç boşta döngü bırakacaktır ve OP'nin "gecikmeli" bir uygulamadan bahsetmesi durumunda, oyunda ağ iletişimi olması muhtemel görünüyor.
17'de

49

İşletim sisteminizi belirlemediniz. Yani cevap gibi ortak olacaktır.

Uygulamalar çeşitli nedenlerle sınırlandırılabilir. Darboğaz içinde olabilir:

  • İşlemci
    • düşük hız
    • tek / düşük dişli uygulamalar (tüm çekirdekleri / dişleri kullanamayabilir)
  • I / O
    • disk çıkışı
    • gecikme süresi
    • ağ çıkışı
    • ağ gecikmesi
  • bellek
    • kapasite
    • throuthput
    • gecikme
    • yetersiz önbellek
    • yerellik (NUMA)
    • takas

Ve bu kadar yaygın olmayan başka nedenler de var.

Bu nedenle, sistem kaynaklarına bir göz atın ve sisteminizi yalnızca toplam CPU yükünden ziyade diğer darboğazlar için analiz etmeye çalışın.


9
Ayrıca: Video Kartında ayrı GPU, G / Ç ve bellek var, bunlardan herhangi biri de sorun olabilir.
Mooing Duck

2
Söz konusu uygulama aslında GPU kullanarak eğer @MooingDuck Doğru, ama bu genellikle sadece bir sorun olacağını (yani 3 boyutlu bir oyun veya CUDA / OpenCL uygulama veya ona benzer bir şey.)
reirab

13

Genel olarak, insanlar bilgisayarlarının yavaş olduğu hakkında konuştuğunda, tozdan bahsederim. 15 yıllık mesleki tecrübeye sahip eski bir bilgisayar teknolojisi olarak, sadece tozun dışarı atılmasının performansı önemli ölçüde artırabileceğini buldum.

İnce, neredeyse farkedilemez miktarda tozdan değil, normal hava akışını önleyen büyük öbekler ve hatta paspaslardan bahsetmiyorum. Temelde üzerinde gerçek bir filtre yerine toz olan bir filtresi olan ısı alıcılarını gördüm. Bu işlemciyi hiç soğutmamaktan çok önemli miktarda havayı bloke eder. Bunun gibi tozların giderilmesi, fanları anında susturmaya ve bileşenlerin daha uzun süre dayanmasını sağlar. Isı düzeltmem istendiği bir çok bilgisayarı öldürdü.

Isı sorunu fikriyle birlikte giderken, daha iyi termal macun deneyebilirsiniz. İşlemcilerle gelen beyaz cr @ p termal macunun Yugo'su gibidir. Arctic Silver kullanıyorum ama ondan daha iyi şeyler var. Arctic Silver bir Porche hakkında (araba derecelendirme ölçeğini kullanarak) ilgili, ancak orada Ferrari ve supercar çeşitleri var.

İşlemciler aşırı ısındığında yavaşlama eğilimindedir. Bu, birçok CPU'ya programlanmış bir “kendini koruma” gibi fiziksel bir şeydir. Görev Yöneticisi'nde hala% 100 gösterip göstermediğini veya% 40 gösterip göstermediğini (görebildiğiniz gibi) bilmiyorum, ancak CPU ısının ve fanın çalışmasına izin verirken önemli bir yavaşlama olabilir " yakalamak."

CPU'nuzu yavaşlatan başka bir şey de GPU'dur. Yoğun grafikli oyunlar veya programlar kullanıyorsanız (CAD gibi), GPU’nuz CPU'nuzu kullanıyor olabilir. Daha iyi bir ekran kartı almak, bakılması gereken bir şey olabilir. Ayrıca yanlış sağ kartı kullanmak sizi engelliyor olabilir. Oyun kartları (genellikle) CAD ve iş istasyonu kartları ile çalışmak üzere tasarlanmamıştır ve iş istasyonu kartları (genellikle) da çok iyi oynamaz. Bazıları yapar, ama çoğu değil.

@ Jaroslav Kucera'nın dediği gibi, diskle ilgili olabilir. HD'lere çok fazla basmak sizi yavaşlatabilir. Normalde birden fazla sürücü çalıştırırım. Biri işletim sistemine ve diğerlerine / yazılımlarına, Windows sayfa dosyalarına, kişisel dosyalara, vb. Atanmıştır. Ayrıca, işletim sistemi arızası durumunda kişisel verileri yedekleme konusunda çok fazla endişelenmenize gerek kalmaması, birden fazla HD'ye sahip olmak iş yükünü büyük ölçüde yaymaktadır. Aynı diske aynı anda okumak ve yazmak HD'yi ciddi şekilde yavaşlatabilir. SHD'lerin kullanılması bunu azaltabilir, ancak tamamen değil. Photoshop ve video düzenleme yazılımının HD'leri sert bir şekilde vurduğu bilinmektedir. Bir HD'den okuma, sonra 2. HD'ye çıkış yapma yoludur. Bu, HD'lerin ömrüne de yardımcı olur. Ayrıca HD'lerimde aktif soğutma ile gidiyorum. +15 yıl önce üzerlerine bir fan ve ısı emici taktığım için bir sabit disk sürücüsü öldürmedim. Google onları, onlar ucuz sigortalıdır.

İster inanın ister inanmayın, PSU'nuz da sizi yavaşlatıyor olabilir. Yeterli gücünüz yoksa (veya PSU'nuz eski veya ucuz, üzerinde yüksek puanlı, Çin POS), performans sorunlarınız olabilir. İlk elden, garip bir işletim sisteminin lapa lapa bir PSU'nun yapabileceği sorunları gördüm. Amper kadar voltaj da arıyorsanız, bu rotaya giderseniz hepsinin PSU'daki özelliklere uyduğundan emin olun ve ayrıca güç gereksinimlerinizi karşıladıklarından veya aştıklarından emin olun. Bileşenlerin toplam 500 watt ve onları 475 bile veriyorsan, bu kötü. PSU'nuz yaşlandıkça (ve gücü düşürürken) ve diğer bileşenleriniz yaşlandıkça (ve çok fazla güç gerektiriyorsa) gereksinimlerinizi yaklaşık% 20 oranında aşmanızı öneririm, böylece çok hızlı bir şekilde yeni bir PSU satın almazsınız.

Buradaki diğer cevapları da içeren, bilgisayarınızın yavaş çalışması için hala daha fazla neden var. PSU seçeneği hariç, konuştuğum konu bilgisayar mühendisliği yaparken çok sık görülüyordu. Bir kıyaslama ve diğer testler yapmak, olayları çözmenin tek yolu. Parçaların değiştirilmesi, yavaşlamaya neden olan birden fazla parçanın bir arada olması durumunda sorunu çözmeyebilir.

Ve AFAIK, bilgisayarınızı işlemcinin% 100'ünü kullanmaya zorlamanın yolu yoktur. İşlemci ve işletim sistemi ne yapmaları gerektiğini bilir ve genellikle işlerinde gerçekten iyidirler. :-) Bir kimsenin bir CPU beslemesini zorlamanız gerektiğini düşündüğünüzde% 100 çalışmasını sağlamak için bir yol bulamadığını düşünüyorum. En azından beslemeden ekstra önemsiz "yüzeyin iyi görünmesi" için.

% 40'ını ve% 100'ünü ve% 100'ünü (% 25,% 33 veya% 50 gibi) tam sayıdaki bir bölümü görerek, bunun tek bir iş parçacığı sorunu olmadığını hissediyorum. Olabilir ama aklımdan geçen yer burası değil. Yine de hemen getirmek için +1 ila @Twisty Impersonator.

Bunu anlamaya çalışırken iyi şanslar! Günleri bu tür şeyleri anlamaya çalışarak geçiriyorum, ancak bağırsakların çoğunu "son çare" olarak değiştirmeye başlıyorum.


1
Bir uygulamanın maksimuma çıkmış bir GPU'ya takılabilmesi ihtimalini belirtmek için +1.
Monica

6
Söylemeyi unuttum, bilgisayarınızın yakınında sigara içmek yapabileceğiniz En Kötü şeylerden biri . Pis, iğrenç ve iğrenç (yeterince vurgulayamazsınız) temizleyemeyen turuncu renkli yapışkan bir karmaşa bırakır. Toz birikmiş ve temizlenmesi imkansız hale geliyor. Otomatik parça yağ banyosu veya sonik su banyosu ile temizleyebilirsiniz. Kasayı temizlemek bile boşuna bir çaba.
computercarguy

2
Sadece bir geliştiricinin bakış açısından CPU ne söylerse onu yapacak. % 100'de maksimuma çıkarılmadıysa, programınızın gerçekleşmesi için başka şeyler (disk IO, ağ, kullanıcı girişi, sistem mesajları, vb.) Beklemesinden kaynaklanmaktadır. CPU'nun yapması gereken bir şey varsa, programınızın ihtiyaç duyduğu şeyi yapmak için otomatik olarak% 100 (çok iş parçacıklı bir uygulama varsayarsak) kullanır -% 100 kullanmanız veya kilidini açmanız veya kilidini açmanız gerekmez.
JPhi1618

2
@ JPhi1618: Isıyı unutuyorsunuz. Ne yapmanız gerektiğinden bağımsız olarak, eğer CPU aşırı ısınırsa,% 100'den daha az bir hızda çalışması için kendisini boğacaktır.
Mooing Duck

9
@ JPhi1618 CPU'lar genellikle frekanslarını ölçeklendirerek (underclocking) kısıtlanır, bu nedenle 3.0GHz yerine çalıştırmak yerine 2.0GHz'de çalışırlar. Bu nedenle, termal olarak boğulmuş CPU, her bir "iş yuvası" meşgul olduğu için hala% 100 yük rapor edebilir, sadece mevcut zaman biriminde daha az "iş yuvası" vardır.
el.pescado

3

Biyografilerde veya işletim sistemindeki enerji tasarrufu ayarları olabilir . Birçok modern CPU ve anakart CPU'nun elektrik kullanımıyla daha ekonomik olmasına olanak tanıyan ayarlara sahiptir (özellikle bataryanın bitmesini isteyen dizüstü bilgisayarlar için geçerlidir). Muhtemelen böyle bir ayarı kapatabilirsiniz, ancak ayarın yanında ne yaptığınızı bildiğinizden emin olun, genellikle bilgisayarın işlevselliğini diğer önemli şekillerde etkileyebilecek başka şeyler de vardır.


2

Render ve matematik görevlerini yaparken düzenli olarak% 100 kullanım oranını çarptım. Hyperthreading'in% 100 yüksek olacağını ve talimat sıralamasının çok önemli olduğunu doğrulayacağım. Hem Intel hem de AMD, mümkün olduğunca çok sayıda yürütme çekirdeğini doldurmak için talimatların yeniden düzenlenmesine adanmış büyük miktarda donanıma sahip. Modern bir makinede% 30 alıyorsanız,

  • Temps'ı Kontrol Edin - Intel ve AMD, ısındığında hem saatin tersi olur hem de topaklar ve sivri uçlar olarak görünür.
  • Çok fazla şey yapmamak .... örnekler:
    1. Web tarama
    2. E-posta
    3. En basit oyunlar
    4. Neredeyse probleminizin en baştan başlayarak aşağıdakilerden biri veya tümü olduğunu garanti ederim:
  • SSD al
  • SSD al
  • İşletim sisteminizi SSD'ye alın ve normal verileri geleneksel bir çoklu TB sürücüye taşıyın. Windows, yerel dosyalarına her şeyden daha fazla erişime ihtiyaç duyuyor.
  • Bonazai Buddy?
  • Tüm sürücüleri en az% 10 kapasitenin üzerinde tutun. NTFS, günlük kaydı dosya sistemidir ve performans, sürücünün aldığı dolgunluktan aşağıya iner.
  • ASAP işletim sistemi sürücünüz için bir NVMe sürücüye / SSD'ye ihtiyacınız var (evet tekrar söyledim). Performansı şaşırtıcı ve bunun iki bölümünü sürdürüyor ... Büyük bir perakendeci bugün normal kullanım için bol olan 300 dolar için Samsung 961 NMVe 512GB diskleri satıyordu.
  • Windows 10 GPU ağırdır. Ucuz bir özel video kartı hem belleği hem de CPU'yu yükleyebilir. APU'yu hala ekran kartıyla birlikte kullanabilirsiniz, ancak biraz RAM'den tasarruf edersiniz ve VRAM genellikle çok daha hızlıdır.
  • Daha düşük çekirdek sayımlı CPU'lar da belleğe bağlıdır. Eğer i7'lere bakarsanız hepsi 4 bankada dört kanallı DDR kullanıyorlar. AMD'nin Epyc yongaları 64 çekirdekli 8 kanal DDR5 olacak. Yardımcı olmuyor. Sonunda, bunu yeterince vurguluyorum ve parayı makinenizin alacağı kadar RAM'e döküyorum. 32 GB'im var ve bu yıl 32 tane daha alıyorum. Windows, RAM’de kullanılmayan belleği sıkıştıran superfetch’e benzer bir şey yapar, böylece programlar ve veriler gerektiğinde açılabilir. Başka bir örnek olarak, geliştirme için bir Linux VM kullanıyorum, 6/12 çekirdek ve 16 GB koç tahsis ettim ve SSD'nin ilk yüklenmesinden sonra ~ 3 saniye içinde başlıyor. CPU bugünlerde böyle optimizasyonlarla çok ucuz sayılıyor ...

Tüm bunlar, 70k'lık bir dosya projesini derlemeye ya da dev kamera ham dosyalarını 16 bit renkte 17 "x26" x600 dpi'ye yükseltmeye mahkum kalmamın üstesinden gelmek gibi görünüyor. % 100 kullanımda bile kaynaklar o kadar fazladır ki yavaşlamıyorsunuzdur. Geçen gece fark ettim ki iki VM'im ve 2 IDE ile birlikte bir Wolf 2 yüklü (dikkatim dağıldı, beni dava etti) ve yavaşlama fark etmiyordu. Bu, 1500 dolarlık bir makine BTW'sıdır, özel bir şey değildir ve yıllar içinde en yavaş şekilde satın alınmıştır. Bunun yarısı Radeon RX64'lerden biri çünkü ekran kartım 6 yaşındaydı. Render ve benzeri büyük fark. Yükseltme,% 30 kullanımınızın tüm alacağınız varsayımından ziyade donanımınızdan daha fazla faydalanmanıza neden olacaktır.

OS için bu makineye 5400 RPM sabit disk attıysam, tam bir saçmalık gibi çalışırdı.

TL; DR, şu anda CPU'ya bağlı gibi görünüyor. İşletim sistemi için en az 256GB SSD, 8GB ram ve daha düşük seviye bir oyun kartına birkaç yüz harcayın ve bilgisayar son yıllarda olacak. Sonunda bir işlemci yapmadan ve Mobo yenilemeden önce bu 6 yıl boyunca hayatta kaldı ve eski bir teçhizatla günde yaklaşık 25 kez tüm çapraz derleyici paketlerini derliyordum.

Bana fazla bilgi verin ama 8 Tesla kartı falan önermiyorum. :-) Yapabildiğiniz zaman küçük güncellemeler yapın ve sanırım bu sorunların çoğunu çözeceksiniz. Yıllar önce Q6600 sistemine bir SSD ekleyerek ve üçlü performansı izleyerek yaptım.


1

Programınızın özelliklerini bilmeden söylemek zor, ancak başka bir cevap uygulamanın tek parçalı olma ihtimaline baktığından, uygulamaya uygun çoklu kullanım kullanıyormuş gibi bakacağım.

Göz ardı edilen yaygın bir şey, "aşırı işlenmiş çekirdekler" e karşı fiziksel çekirdeklerdir. Hyperthreading, CPU dışındaki darboğazlarla birçok kısa görevde başarılıdır. Sıkı döngülü CPU darboğazları için, hala genel olarak hiper iş parçacıklı çekirdek sayınızın yarısı olan fiziksel çekirdek sayınızla sınırlısınız. Kesinlikle en kötü senaryoda, görev yöneticiniz sadece% 50 kullanım gösterebilir, çünkü gerçekte fiziksel çekirdeğiniz% 100 kullanımdayken, grafiklerinde hiper iş parçacıklı çekirdeği sayar. Genelde, işletim sisteminiz ilgisiz diğer görevler için hiper-yayını kullanabileceğinden, bundan daha fazlasını gösterirsiniz.


"Uygun çok iş parçacıklı" , her fiziksel çekirdekten ziyade her mantıksal çekirdek için yapılması gereken bir iş parçacığı olması anlamına gelmez mi? Her mantıksal çekirdeğin üzerinde sıkı bir döngü çalıştırıyorsanız, Görev Yöneticisi hiper iş parçacıklı% 100 rapor etmelidir. Görev Yöneticisi'ndeki "yüzde kullanım" olan AFAIK, söz konusu iş parçacığının çalıştırılabilir durumda olduğu ve bir ALU üzerinde bir şey yapması gerektiği zamanını değil, mantıklı bir çekirdeğe göre planlanan zaman miktarına dayanır. . İşletim sistemi muhtemelen bunu bilmeyecekti (yalnızca CPU mikro
kodunun yapabileceği bir şeydi

1
"Normal" makine kodu, modern CPU'larda yalnızca 6 veya daha fazla komut portundan 2 ila 3'ünü kullanır. Şube ve önbellek eksikliğinden kaynaklanan tüm boru hattı tezgahlarından söz etmeyin. Hyperthreading bu boşlukları doldurmanıza yardımcı olur. Neredeyse her zaman kullanmak için bir kazanç. Bazı kod türleri, video kodlama / kod çözme veya yoğun olarak optimize edilmiş matris matematiği gibi bununla iyi sonuç vermez. Ama bunlar sıra dışı.
Zan Lynx
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.