오디오를 디코딩하고 피크를 찾는 Linux(Ubuntu 12.14)의 C++로 작성된 애플리케이션이 있습니다. 이 계산은 백그라운드 스레드에서 실행됩니다. 기본 UI 스레드에서 백그라운드 스레드를 여러 번 호출합니다. 이 백그라운드 스레드가 실행되는 동안 CPU 사용률은 약 100%입니다. 즉, 첫 번째 코어만 100%로 사용되고 나머지 3개 코어는 유휴 상태입니다(쿼드 코어 프로세서).
그렇다면 애플리케이션이 CPU를 100% 활용하는 것이 좋은 습관일까요? 나는 다음과 같은 일부 게시물을 읽었습니다."일반적으로 프로세스가 CPU를 100% 사용하는 것은 좋은 일입니다. 이는 프로세스가 더 빨리 완료된다는 의미입니다."
내가 읽은 또 다른 진술은 다음과 같습니다."75%~100% CPU 사용량은 전체 로드 상태이거나 주요 응용 프로그램이 실행 중인 경우 크게 나쁘지 않습니다. 그러나 유휴 상태이거나 PC/노트북을 사용하지 않을 때의 수치라면 문제가 됩니다."
답변1
이는 귀하의 응용 프로그램이 계산 응용 프로그램(이와 같은)인지 아니면 대화형 응용 프로그램인지에 따라 다릅니다.
컴퓨팅 애플리케이션의 경우 CPU를 최대한 활용하는 것이 목표입니다. 이는 결과를 더 빠르게 준비할 수 있다는 의미이기 때문입니다. 활용률을 떨어뜨리는 모든 요인은 개선의 기회입니다(예: I/O 대기).
대화형 응용 프로그램의 경우 CPU를 사용하는 시간은 사용자 입력에 대한 응답을 준비하는 데 소요되는 시간이 아닙니다. 사용량이 적기를 원합니다.
멀티미디어 편집기와 같은 일부 응용 프로그램은 계산 기능과 대화형 기능을 모두 갖추고 있습니다. 높은 처리량을 달성하면서 상호 작용에 응답할 수 있도록 작업을 여러 스레드로 나누는 것이 좋습니다. 이것이 당신이하고있는 것 같습니다.
고려해야 할 한 가지는 작업 부하에 더 많은 스레드를 사용하여(분할 가능하다고 가정) 더 많은 코어를 컴퓨팅에 사용하는 것입니다. 그들 중 일부가 유휴 상태로 있으면 자원 낭비입니다!
답변2
물론. CPU만존재 이유애플리케이션에서 사용합니다. 전체 하드웨어 + 운영 체제 조합은 이 단일 목적을 위해 존재합니다. 시스템에 있는 만큼의 CPU를 소비하는 것이 왜 좋지 않습니까?
답변3
운영 체제의 목적은 Windows, Mac OS, Linux 등 이 문제를 처리하는 것입니다. 운영 체제의 두 가지 기본 목적은 예약 및 하드웨어 인터페이스입니다. 이 질문은 Linux 또는 Unix와 관련이 없습니다.