귀하의 경험을 바탕으로 몇 가지 조언을 드리고 싶습니다. 나의 주요 관심사는 컴퓨터 서버가 충돌하는 것을 정말로 원하지 않는다는 것입니다.
문제는 제가 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
)을 설치하고 구성한 후 출력을 이해하십시오.