상위 c - CPU 사용량이 200%를 초과하면 충돌이 발생합니까?

상위 c - CPU 사용량이 200%를 초과하면 충돌이 발생합니까?

귀하의 경험을 바탕으로 몇 가지 조언을 드리고 싶습니다. 나의 주요 관심사는 컴퓨터 서버가 충돌하는 것을 정말로 원하지 않는다는 것입니다.

문제는 제가 Linux 컴퓨터 서버(슈퍼컴퓨터? 아마도)에서 프로그램을 실행하고 있다는 것입니다. 내가 실행 중인 프로그램에는 사용할 수 있는 스레드를 지정하는 기능이 있습니다. 나는 15개의 스레드를 사용하고 싶다고 지정했습니다.

내가 사용하는 컴퓨터 서버에는 약 20개 이상의 프로세서(6코어 Intel Xeon CPU)가 있습니다. 상단 c에서 내가 사용하고 있는 프로그램이 실행되는 것을 볼 수 있습니다.

%CPU
190.7%

그래서 계속해서 상위 c(1)를 확인하고 아래는 출력입니다.

Cpu0  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  : 95.7%us,  0.3%sy,  0.0%ni,  0.0%id,  3.6%wa,  0.0%hi,  0.3%si,  0.0%st
Cpu2  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu4  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu5  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu6  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu7  :  0.3%us,  0.3%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu8  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu9  :  0.3%us,  0.0%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu10 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu11 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu12 : 96.0%us,  0.7%sy,  0.0%ni,  0.0%id,  3.3%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu13 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu14 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu15 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu16 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu17 :  0.0%us,  0.0%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.3%si,  0.0%st
Cpu18 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu19 :  0.3%us,  0.0%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu20 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

CPU 사용량 비율은 CPU마다 다릅니다. 예를 들어 때때로 CPU20이 90%에 도달하고 CPU1이 0%로 돌아가는 경우가 있습니다.

CPU를 190% 사용했기 때문에 컴퓨터 서버가 충돌할 가능성이 있습니까?

답변1

다양한 도구와 시스템은 CPU 비율을 다양한 방식으로 보고합니다. CPU 로드에 대해 생각하는 더 좋은 방법은 로드 측면에서 보는 것입니다. 다음과 같은 과부하된 작업자 시스템을 고려하십시오.

# w 
 02:22:31 up 221 days, 11:06,  1 user,  load average: 9.87, 9.50, 7.25
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
stephan  pts/0    173.13.169.18    02:22    0.00s  0.44s  0.00s w


~$ cat /proc/cpuinfo |grep processor
processor   : 0
processor   : 1

즉, 1분 로드는 9.87, 5분 로드는 9.50, 15분 로드는 7.25입니다. "로드" 숫자는 이 컴퓨터가 작업을 수행하기 위해 할당한 프로세서 수를 나타내며, cpuinfo 명령은 작업을 수행하는 데 필요한 실제 프로세서 수를 보여줍니다. CPU가 12개라면 이 로드 수준은 전혀 문제가 되지 않습니다.

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                
11579 app       20   0  263m  97m 4104 R   22  1.3   0:00.85 ruby                                                                                   
11586 app       20   0     0    0    0 Z   20  0.0   0:00.62 ruby <defunct>                                                                         
11589 app       20   0  262m  96m 3884 S   18  1.3   0:00.53 ruby                                                                                   
11592 app       20   0  260m  95m 3000 R   17  1.3   0:00.50 ruby                                                                                   
11600 app       20   0  260m  95m 2744 R   15  1.3   0:00.45 ruby                                                                                   
11595 app       20   0  260m  95m 2744 R   13  1.3   0:00.39 ruby                                                                                   
11598 app       20   0  262m  95m 3096 R   12  1.3   0:00.35 ruby                                                                                   
11604 app       20   0  258m  93m 2744 R   10  1.3   0:00.30 ruby                                                                                   
11607 app       20   0  257m  92m 2496 R    8  1.2   0:00.25 ruby                                                                                   
11610 app       20   0  256m  91m 2560 S    4  1.2   0:00.11 ruby

그러면 CPU가 프로세스들 사이에 나누어져 있는 것을 볼 수 있는데, 제가 우려하는 점은 CPU가 실제로 처리할 수 있는 것보다 더 많은 작업이 있다는 것입니다. 이로 인해 대기열에 있는 작업은 CPU를 사용하기 전에 CPU가 유휴 상태가 될 때까지 기다려야 합니다.

답변2

%CPU는 CPU 1개를 기준으로 측정되므로 200%는 CPU 2개가 풀타임으로 작동함을 의미합니다. 모든 것은 보유한 CPU(코어, 스레드) 수에 따라 다릅니다. 사용 가능한 리소스의 약 70% 이상을 사용하고 있다면 문제가 발생합니다. 그러나 CPU만이 유일한 지표는 아니며 I/O도 중요합니다. 우려되는 경우 sysstat( sar)을 설치하고 구성한 후 출력을 이해하십시오.

관련 정보