CPU 리소스를 사용하는 응용 프로그램이 지연되는 경우에도 CPU가 최대 성능으로 작동하지 않는 이유는 무엇입니까?


30

CPU의 40 %를 소비하지만 (CPU의 30-40 %가 여전히 유휴 상태로 유지되는) 내 응용 프로그램이 게으른 상태인데도 왜 CPU가 최대로 초과되지 않습니까?

그것은 의미합니까?

  1. CPU를 100 %로 강제 실행하는 방법이 있습니다
  2. CPU는 그런 식으로 제조되며 내가 할 수있는 유일한 일은 새 하드웨어를 구입하는 것입니다.
  3. 한계는 응용 프로그램에 달려 있으며 더 나은 CPU로도 지연이 개선되지 않습니다. (응용 프로그램이 완벽하다고 가정하면 소프트웨어가 그런 식으로 실행되는지 여부를 묻습니다.)
  4. 다른 것.

4
OP가 무엇을 받고 있는지 이해합니다. 바이러스 백신 또는 Windows 업데이트가 언제 실행될 때 시스템을 완전히 멈춰 단일 코어를 최대한 활용하고 나머지는 남겨두고 무엇을해야합니까? 일을 다시 시작할 수있을 때까지 12 분 동안 앉아있게됩니다.

10
모든 maxes 밖으로 컴퓨터 (CPU, 스토리지, 메모리, 또는 네트워크)에있는 여러 공유 자원도 하나가 사용되지 않는 용량이 남아있는 공유 자원에도 불구하고, 느린 전체 시스템을 만들 수있는 응용 프로그램입니다.
나는 말한다 Reinstate Monica

78
나는 25 년 동안 프로그래밍을 해왔다. 그리고 나는 당신을 확신 할 수 있습니다-이것은 음모가 아닙니다. CPU에 병목 현상이 발생하는 응용 프로그램을 찾는 경우는 거의 없으며 대부분의 경우 응용 프로그램이 하드 드라이브, RAM 또는 네트워크와 같은 다른 항목을 기다리고 있습니다.
Contango

10
당신이 계산 작업을하고 있다고 가정 해 봅시다. 세금을냅니다. 세금 양식이 우편으로 도착하기를 기다리는 동안 일을 전혀하지 않으면 오랫동안 일을하지 않을 것입니다. 게으른 앱은 종종 잘못 작성됩니다. CPU와 관련이없는 디스크 또는 네트워크 IO와 같이 대기 시간이 긴 작업에서 UI 스레드를 차단하므로 CPU가 유휴 상태이고 앱이 응답하지 않습니다. 더 빠른 CPU를 얻는 것은 도움이되지 않습니다. 대기 시간이 긴 작업을 차단할 수 있습니다. 더 빨리 수 있습니다.
Eric Lippert

3
@TwistyImpersonator : 이는 고집 중 멀티 스레드 프로그램과 유사합니다. CPU가 느린 CPU보다 더 많은 스레드를 차단 된 상태로 빠르게 가져 오기 때문에 멀티 스레드 프로그램이 더 빠른 CPU에서 더 느리게 실행 되는 경우 가 있습니다. 뉴욕시의 모든 운전자에게 내일 10 배 빠른 자동차가 제공된다면 출퇴근 시간은 개선되지 않을 것 입니다. 그들은 더 나빠질 것입니다.
Eric Lippert

답변:


94

단일 CPU 코어 만 사용할 수있는 단일 스레드 응용 프로그램을 실행 중일 수 있습니다. 한 코어의 100 %가 멀티 코어 CPU 용량의 100 %보다 작으므로 전체 CPU 사용률이 100 %에 도달하지 않습니다.

작업 관리자에서 개별 코어 사용률을 확인하여이를 확인할 수 있습니다. 최대 활용률에 근접한 단일 코어를 찾으십시오.


24
전환으로 인해 하나의 코어를 사용하는 데 필요한 분산 사용량 만 볼 수 있습니다. 기본적으로 앱은 정확히 하나의 코어를 사용하지만 코어간에 호핑되므로 평균적으로 1 / n입니다.
Aganju

62
또한 CPU가 실제로 병목 현상이 아닐 수도 있습니다.

16
나는 드워프 포트리스가 하나의 코어를 100 %로 병목 현상을 일으킨 것으로 막연히 회상했다. 그래서 그는 다른 비트를 두 번째 스레드로 분기하기 시작하여 "메인"스레드가 100 %로 고정되고 "배경"스레드가 약 20-60 %를 가리켰다. 쿼드 코어에서는 30-40 %입니다.
Mooing Duck

3
CPU의 터보 모드를 잊지 마십시오. 작업 관리자는 부하 비율을 계산할 때이를 고려하지 않습니다. 내 i5-4570S에서 종종 약 30 %의 부하를 봅니다. 일반 2,9 GHz의 코어 1 개 (25 %)는 3,4 GHz로 터보됩니다. 25 * 3,4 / 2,9는 거의 30 %입니다. 정상 주파수와 터보 주파수 사이의 확산이 높을수록 더 높아질 수 있습니다.
Sunzi

7
@AytAyt-한 걸음 더 나아가서 가능하지 않다고 말하면 거의 확실 합니다. OP의 응용 프로그램이 순수한 숫자 크 런칭을 수행하지 않는 한 (또는 모든 곳에서 스핀 잠금을 사용하지 않는 한) 멀티 스레드 프로그램에서도 CPU를 완전히로드하는 것은 실제로 어렵습니다. 모든 디스크 또는 네트워크 I / O는 유휴주기를 유지하며 OP의 "래깅"앱에 대한 언급을 고려할 때 네트워크 통신이 일부있을 가능성이 높습니다.
aroth

49

OS를 지정하지 않았습니다. 따라서 대답은 일반적입니다.

여러 가지 이유로 응용 프로그램이 제한 될 수 있습니다. 병목 현상은 다음과 같습니다.

  • CPU
    • 느린 속도
    • 단일 / 낮은 스레드 응용 프로그램 (모든 코어 / 스레드를 사용할 수있는 것은 아님)
  • I / O
    • 디스크 처리량
    • 디스크 대기 시간
    • 네트워크 처리량
    • 네트워크 지연
  • 기억
    • 생산 능력
    • throuthput
    • 숨어 있음
    • 불충분 한 캐시
    • 지역 (NUMA)
    • 교환

그리고 일반적이지 않은 더 많은 이유가 있습니다.

따라서 시스템 리소스를 살펴보고 총 CPU로드가 아닌 다른 병에 대해 시스템을 분석하십시오.


9
또한 : 비디오 카드에는 별도의 GPU, I / O 및 메모리가 있으며이 중 하나라도 문제가 될 수 있습니다.
Mooing Duck

2
@MooingDuck True, 그러나 문제의 애플리케이션이 실제로 GPU를 사용하는 경우에만 문제가됩니다 (예 : 3D 게임 또는 CUDA / OpenCL 앱 또는 이와 유사한 것).
reirab

13

일반적으로 사람들이 컴퓨터 속도가 느리다는 이야기를 할 때는 먼지를 언급합니다. 15 년의 전문적인 경험을 가진 전 컴퓨터 기술로서, 먼지를 불어내는 것만으로 성능이 크게 향상 될 수 있다는 것을 알게되었습니다.

나는 얇고 거의 눈에 띄지 않는 먼지가 아니라 정상적인 공기 흐름을 방해하는 덩어리 나 심지어 매트에 대해 이야기하고 있습니다. 나는 실제 필터가 아니라 먼지 인 필터를 기본적으로 가진 방열판을 보았습니다. 이것은 CPU를 냉각시키는 데있어 상당한 양의 공기를 차단합니다. 이와 같은 먼지를 제거하면 팬이 즉시 조용해지며 구성 요소의 수명이 더 길어집니다. 열은 내가 고쳐 달라는 많은 컴퓨터를 죽였다.

열 문제 아이디어와 함께 더 나은 열 페이스트를 사용해 볼 수도 있습니다. 대부분의 프로세서와 함께 제공되는 흰색 cr @ p는 열 페이스트의 유고와 같습니다. 나는 Arctic Silver를 사용하지만 그보다 더 좋은 것이 있습니다. 북극은 (Arctic Silver)은 포르쉐 (자동차 등급 척도 사용)에 관한 것이지만 페라리와 슈퍼카 품종이 있습니다.

프로세서가 과열되면 속도가 느려집니다. 이것은 많은 CPU에 프로그램 된 "자체 보존"뿐만 아니라 물리적 인 것입니다. 작업 관리자에 여전히 100 %가 표시되는지 또는 40 %가 표시되는지 (모르는 것처럼) 알지 못하지만 CPU가 방열판 및 팬을 " 따라 잡아라. "

CPU 속도를 늦출 수있는 또 다른 사항은 GPU입니다. 그래픽 중심 게임이나 유틸리티 (예 : CAD)를 실행하는 경우 GPU가 CPU를 보류하고있을 수 있습니다. 더 나은 비디오 카드를 얻는 것이 살펴볼 수도 있습니다. 또한 올바른 카드를 잘못 사용하면 답을 얻지 못할 수 있습니다. 게임 카드는 워크 스테이션 카드뿐만 아니라 CAD와 함께 작동하도록 설계되지 않았으며 (보통) 워크 스테이션 카드도 잘 작동하지 않습니다. 일부는 그렇지만 대부분은 그렇지 않습니다.

@Jaroslav Kucera가 언급했듯이 디스크 관련이있을 수 있습니다. HD를 많이 치면 속도가 느려질 수 있습니다. 나는 보통 여러 드라이브를 실행합니다. 하나는 OS 전용이고 다른 하나는 소프트웨어, Windows 페이지 파일, 개인 파일 등을위한 것입니다. OS 장애 발생시 개인 데이터 백업에 대해 걱정할 필요가 없을뿐만 아니라 여러 개의 HD를 사용하면 작업 부하가 상당히 분산됩니다. 같은 디스크를 동시에 읽고 쓰면 HD 속도가 크게 느려질 수 있습니다. SHD를 사용하면이를 완화 할 수는 있지만 전부는 아닙니다. Photoshop 및 비디오 편집 소프트웨어는 HD를 강하게 치는 것으로 알려져 있습니다. 하나의 HD에서 읽은 다음 두 번째 HD로 출력하는 것이 좋습니다. 이것은 또한 HD의 삶에 도움이됩니다. 또한 HD를 적극적으로 냉각시킵니다. +15 년 전에 팬과 방열판을 장착 한 이후로 하드 드라이브를 죽이지 않았습니다. 구글, 그들은 싼 보험입니다.

믿거 나 말거나, PSU도 속도를 늦출 수 있습니다. 전원이 충분하지 않은 경우 (또는 PSU가 오래되었거나 값이 싼 중국 POS 인 경우) 성능 문제가있을 수 있습니다. 나는 비정상적인 PSU가 할 수있는 이상한 OS 문제를 직접 보았습니다. 전압뿐만 아니라 앰프도 찾고 있으므로이 경로를 사용하는 경우 PSU의 사양과 모두 일치하는지 확인하고 전력 요구 사항을 충족하거나 초과하는지 확인하십시오. 구성 요소의 총 전력이 500 와트이고 심지어 475를 제공하는 경우에는 나쁩니다. PSU가 더 오래되고 전력이 떨어지고 다른 구성 요소가 더 오래되고 (전동력이 필요함) 새로운 PSU를 너무 빨리 구매하지 않아도됩니다.

여기에 다른 답변을 포함하여 컴퓨터가 느리게 실행되는 더 많은 이유가 있습니다. PSU 옵션을 제외하고는 내가 컴퓨터 기술을 할 때 매우 자주 이야기했습니다. 벤치 마크 및 기타 테스트를 수행하는 것이 상황을 파악할 수있는 유일한 방법입니다. 부품을 교환하면 속도가 느려지는 여러 부품이 결합 된 경우 문제가 해결되지 않을 수 있습니다.

AFAIK에는 컴퓨터가 프로세서의 100 %를 사용하도록 할 수있는 방법이 없습니다. CPU와 OS는해야 할 일을 알고 있으며 일반적으로 업무에 능숙합니다. :-) 나는 아무도 당신이 생각해야 할 때 CPU가 100 %로 CPU를 강제로 공급하는 방법을 아직 생각하지 않았다고 생각합니다. 백분율을 "좋아 보이게"하기 위해 추가 정크를 먹이지 않으면 안됩니다.

40 %는 아니고 100 % (25 %, 33 % 또는 50 %)의 정수 나누기를 보면 단일 스레딩 문제가 아니라고 생각합니다. 그럴 수도 있지만 그게 내 마음이가는 곳이 아닙니다. 그러나 @Twisty Impersonator에게 +1하지만 즉시 가져옵니다.

이것을 알아 내려고 행운을 빕니다! 나는 이런 종류의 것을 알아 내려고 며칠을 보냈으며, 대부분의 내장을 "마지막 수단"으로 대체하기 만했다.


1
응용 프로그램이 최대 GPU에서 중단 될 가능성을 지적하면 +1입니다.
나는

6
컴퓨터 근처에서 담배를 피우는 것은 최악의 일 중 하나입니다 . 그것은 불쾌하고 거칠고 역겨운 (충분히 강조 할 수는 없음) 주황색으로 끈적 끈적한 엉망으로 청소할 수 없습니다. 먼지가 쌓여 청소가 불가능합니다. 당신은 자동차 부품 오일 욕조 또는 음파 수조로 그것을 얻을 수 있지만, 나는 그 문제를 겪지 않았습니다. 케이스를 청소하는 것조차도 허술한 노력입니다.
computercarguy

2
개발자의 관점에서 볼 때 CPU는 당신이 말하는대로 무엇이든 할 것입니다. 100 %를 초과하지 않으면 프로그램이 다른 일 (디스크 IO, 네트워크, 사용자 입력, 시스템 메시지 등)을 기다리고 있기 때문입니다. CPU가 할 일이 있다면, 프로그램이 필요로하는 것을 수행하기 위해 자동으로 100 %를 사용합니다 (멀티 스레드 응용 프로그램을 가정).
JPhi1618

2
@ JPhi1618 : 열을 잊고 있습니다. 무엇을하든 CPU가 과열되면 100 % 미만으로 실행되도록 스로틀됩니다.
Mooing Duck

9
@ JPhi1618 CPU는 일반적으로 주파수를 스케일링 (언 클로킹)하여 조절하므로 3.0GHz 대신 실행하는 대신 2.0GHz에서 실행됩니다. 따라서 열 조절 스로틀 링 된 CPU는 여전히 모든 "작업 슬롯"이 사용되므로 사용 가능한 시간 단위로 "작업 슬롯"이 더 적기 때문에 여전히 100 %로드를보고 할 수 있습니다.
el.pescado

3

바이오스 또는 운영 체제에서 에너지 절약 설정 이 될 수 있습니다 . 많은 최신 CPU 및 마더 보드에는 CPU가 전기 사용량에있어보다 경제적 일 수 있도록 설정되어 있습니다 (특히 배터리를 오래 사용하려는 랩톱의 경우). 이러한 설정을 해제 할 수도 있지만 설정 옆에 수행중인 작업이 컴퓨터의 기능에 영향을 줄 수있는 다른 중요한 방법이 있는지 확인하십시오.


2

렌더링 및 수학 작업을 수행 할 때 정기적으로 100 % 활용률을 기록했습니다. 하이퍼 스레딩이 100 % 높은 수준으로 도달하고 명령 순서가 큰지 확인합니다. 인텔과 AMD는 가능한 많은 실행 코어를 채우기 위해 명령 순서 변경 전용 하드웨어를 많이 보유하고 있습니다. 최신 컴퓨터에서 30 %를 얻는다면

  • Check Temps-Intel & AMD는 뜨거워지면 다운 클럭을하며 끊김과 스파이크로 표시됩니다.
  • 그것으로 많은 일을하지 않습니다 .... 예는 다음과 같습니다
    1. 웹 브라우징
    2. 이메일
    3. 가장 간단한 게임
    4. 문제가 맨 위에서 시작하여 다음 중 하나 또는 모두라는 것을 거의 보증합니다.
  • SSD 구입
  • SSD 구입
  • SSD에 OS를 설치하고 일반 데이터를 전통적인 멀티 TB 드라이브로 옮깁니다. Windows는 로컬 파일에 더 많은 액세스가 필요합니다.
  • 보나 자이 버디?
  • 모든 드라이브를 최소한 10 % 이상의 용량으로 유지하십시오. NTFS는 저널링 파일 시스템이며 드라이브 성능이 향상 될수록 성능이 저하됩니다.
  • 가능한 빨리 OS 드라이브에 NVMe 드라이브 / SSD가 필요합니다 (예, 다시 말씀드립니다). 성능은 놀랍고,이 중 두 번째 부분을 차지하고 있습니다. 주요 소매 업체는 현재 삼성 961 NMVe 512GB 드라이브를 300 달러에 판매했으며 이는 일반적인 용도로 충분합니다.
  • Windows 10은 GPU가 무겁습니다. 저렴한 전용 비디오 카드는 메모리와 CPU 모두에서 부하를 줄일 수 있습니다. 비디오 카드와 함께 APU를 계속 사용할 수 있지만 일부 RAM을 절약 할 수 있으며 일반적으로 VRAM이 훨씬 빠릅니다.
  • 코어 수가 적은 CPU도 메모리에 바인딩됩니다. i7을 보면 4 개의 뱅크에서 모두 쿼드 채널 DDR을 실행하고 있습니다. AMD의 Epyc 칩은 64 코어 8 채널 DDR5입니다. 도움이되지 않습니다. 마지막으로, 나는 이것을 충분히 강조 할 수 없으며, 기계가 취할만큼의 RAM에 돈을 버립니다. 나는 32GB를 가지고 있고 올해 말 32 개를 더 구매하고있다. Windows는 사용되지 않는 RAM의 메모리를 압축하는 조금 더 최신 인 superfetch와 비슷한 기능을 수행하므로 필요할 때 프로그램과 데이터를 압축 해제 할 수 있습니다. 다른 예로, 개발을 위해 Linux VM을 실행하고 6/12 코어와 16GB 램을 할당했으며 SSD에서 첫 번째로드 후 ~ 3 초 후에 시작됩니다. CPU는 요즘과 같은 최적화로 매우 저렴한 것으로 간주됩니다 ...

이 모든 것들은 70k 파일 프로젝트를 컴파일하거나 거대한 카메라 원시 파일을 16 비트 색상에서 17 "x26"x600dpi로 업 스케일링하기 전까지는 과도한 것으로 보입니다. 100 % 활용률에서도 리소스가 너무 과도하여 성능이 저하되지 않습니다. 다른 날 밤에 두 개의 VM과 울프 2가 2 개의 IDE와 함께로드되어 있고 (저는 산만하고, 고소합니다) 느려진 것을 눈치 채지 못했습니다. 이것은 ~ $ 1500 머신 BTW이며 특별한 것은 아니며 수년 동안 가장 천천히 구입했습니다. 비디오 카드가 6 살이 기 때문에 그 중 절반은 Radeon RX64 중 하나입니다. 렌더 등의 큰 차이. 업그레이드하면 30 % 사용이 전부라고 가정하는 것보다 하드웨어를 더 많이 사용할 수 있습니다.

이 시스템에서 5400RPM 하드 드라이브를 OS 용으로 사용하면 전체 쓰레기처럼 실행됩니다.

TL; DR 그것은 지금 당신이 CPU에 묶여있는 것처럼 들립니다. 작년에는 OS 용 256GB SSD, 8GB 램, 저가형 게이머 카드에 몇 백 대를 쓸 수 있습니다. 이것은 프로세서와 Mobo를 새로 고치기 전에 6 년 동안 살아남 았으며 오래된 기어로 하루에 약 25 번 전체 크로스 컴파일러 제품군을 컴파일했습니다.

overkill이라고 불러주세요.하지만 8 개의 Tesla 카드 나 다른 것을 추천하지 않습니다. :-) 가능한 경우 약간의 업그레이드를 수행하면 이러한 많은 문제를 해결할 수 있다고 생각합니다. 몇 년 전에 Q6600 시스템에 SSD를 추가하고 3 배의 성능을 보았습니다.


1

프로그램의 세부 사항을 알지 못하면 말하기가 어렵지만 다른 대답은 응용 프로그램이 단일 스레드 가능성을 검토하므로 응용 프로그램이 적절한 멀티 스레딩을 사용하는 것처럼 볼 것입니다.

간과되는 일반적인 점은 물리적 코어와 "하이퍼 스레드 코어"입니다. 하이퍼 스레딩은 CPU 이외의 병목 현상이있는 많은 짧은 작업에서 뛰어납니다. 꽉 루프 된 CPU 병목 현상 작업의 경우 여전히 물리적 코어 수 (일반적으로 하이퍼 스레드 코어 수의 절반)에 의해 제한됩니다. 최악의 시나리오에서 작업 관리자는 그래프에서 하이퍼 스레드 코어를 계산하기 때문에 사용량이 50 % 만 표시 할 수 있습니다. 실제로 실제 코어의 사용량은 100 % 일 수 있습니다. 그러나 운영 체제가 다른 관련없는 작업에 하이퍼 스레딩을 사용할 수 있으므로 일반적으로 그 이상을 보여줄 것입니다.


"적절한 멀티 스레딩" 이 모든 물리적 코어가 아닌 모든 논리적 코어에 대해 수행 할 작업이있는 스레드를 의미하지 않습니까? 모든 논리 코어에서 엄격한 루프를 실행중인 경우 작업 관리자는 하이퍼 스레딩으로 100 %를보고해야합니다. AFAIK, 작업 관리자의 "백분율 사용량"은 문제의 스레드가 실행 가능한 상태에 있고 논리적 코어에 예약 된 시간을 기반으로하며 실제로 ALU에서 작업을 수행 한 시간이 아니라 . OS는 아마 그것을조차 알지 못할 것입니다 (CPU 마이크로 코드 만 가능)
reirab

1
"일반"기계 코드는 최신 CPU에서 6 개 이상의 명령어 포트 중 2 개에서 3 개만 사용합니다. 분기 및 캐시 누락으로 인한 모든 파이프 라인 중단은 말할 것도 없습니다. 하이퍼 스레딩은 이러한 차이를 메워줍니다. 그것을 사용하는 것은 거의 항상 승리입니다. 비디오 인코딩 / 디코딩 또는 매우 최적화 된 매트릭스 수학과 같은 일부 유형의 코드는 코드와 잘 맞지 않습니다. 그러나 이것들은 드문 일입니다.
Zan Lynx
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.