다음과 같은 Linux Red-Hat VM 서버 세부 정보가 있습니다(각 서버에는 Docker 컨테이너에서 실행되는 애플리케이션이 포함되어 있음).
Linux redhat version - 7.6
number of CPU cores - 16
낮은 CPU 유휴율로 인해 코어가 충분하지 않은 것으로 의심됩니다.40%-50% 때로는 CPU 로드 평균이 정상 범위 내에 있음에도 불구하고 40% 미만인 경우도 있습니다.9-12
우리는 다음과 같은 테스트를 실시했습니다.
from sar -u 2 5
Linux 3.10.0-862.el7.x86_64 (bigdata-machine03.kondel.com) 08/21/2022 _x86_64_ (16 CPU)
02:14:07 PM CPU %user %nice %system %iowait %steal %idle
02:14:09 PM all 36.82 0.00 14.64 0.57 0.00 47.97
02:14:11 PM all 35.50 0.00 16.01 0.82 0.00 47.68
02:14:13 PM all 21.52 0.00 10.90 0.69 0.00 66.89
02:14:15 PM all 21.45 0.00 10.96 0.63 0.00 66.97
02:14:17 PM all 22.28 0.00 10.15 0.78 0.00 66.78
Average: all 27.51 0.00 12.53 0.70 0.00 59.27
vmstat 1 21
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
6 0 269568 26388424 0 29302496 0 0 0 419 0 0 19 9 72 0 0
5 0 269568 26257112 0 29424172 0 0 0 131098 9739 4328 24 8 67 1 0
5 0 269568 26124560 0 29548576 0 0 0 66573 8790 2414 24 8 67 0 0
5 0 269568 25992844 0 29671288 0 0 0 146499 8701 2124 23 9 67 1 0
5 0 269568 25861804 0 29795272 0 0 0 114700 9146 4341 23 8 67 1 0
5 0 269568 25726984 0 29924684 0 0 0 131127 10060 4263 24 8 67 1 0
5 0 269568 25592612 0 30049624 0 0 0 131098 9127 3958 24 8 67 1 0
5 0 269568 25462696 0 30172108 0 0 0 131369 10000 4500 24 8 67 1 0
5 0 269568 25325716 0 30297560 0 0 0 98332 8723 2942 24 8 67 1 0
6 0 269568 25181400 0 30436356 0 0 0 98324 8585 2740 24 7 68 1 0
6 0 269568 25044572 0 30560928 0 0 0 163876 9983 4029 24 8 67 1 0
4 1 269568 24903352 0 30693816 0 0 0 157720 8468 3220 25 8 67 1 0
6 0 269568 24770240 0 30819368 0 0 0 71702 9439 5035 24 7 67 1 0
5 0 269568 24633396 0 30946824 0 0 0 131115 8974 3863 25 7 67 1 0
5 0 269568 24508664 0 31064812 0 0 0 163873 9523 4525 23 8 67 1 0
4 1 269568 24366044 0 31196540 0 0 0 65547 8381 2131 24 8 67 0 0
5 0 269568 24243064 0 31314580 0 0 0 98326 8936 4413 24 7 68 1 0
5 0 269568 24115296 0 31436264 0 0 0 163872 9698 4941 23 7 68 2 0
5 0 269568 23974156 0 31569112 0 0 0 163876 9298 4221 24 7 68 2 0
4 1 269568 23835196 0 31700900 0 0 0 65546 8262 2000 25 7 67 0 0
15 0 269568 22972552 0 31833020 0 0 0 131101 32338 4679 55 25 20 1 0
# uptime
14:14:31 up 149 days, 23:06, 1 user, load average: 9.31, 9.32, 9.48
iostat
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 14.36 0.58 6648.36 7483539 86140749988
dm-0 0.27 0.12 2.10 1503954 27251899
dm-1 0.10 0.19 0.20 2427092 2539536
dm-2 14.18 0.27 6646.06 3449263 86110943670
추가 CPU 코어를 추가하려면 어떤 Redhat 시리즈를 고려해야 합니까?
답변1
내가 아는 한, vmstat에서 평균 6~7개의 프로세스가 실행되고 있습니다. 대기열 uptime
에는 9개의 실행 중인 프로세스가 있습니다 . 12개의 프로세스를 계속 진행하다 보면 향후 업그레이드에 대해 생각하게 될 수도 있습니다.
CPU 사용량은 더 적습니다. 처음에 75%에 도달하면 앞으로는 50%로 생각하는 것이 현명할 것입니다.
주의해야 할 것은 중단입니다. > 100K는 나에게 너무 많은 것입니다. 그러나 이는 실행 중인 프로그램에 따라 많이 달라집니다. 하지만 이 방향으로 파헤쳐 보세요.
답변2
/proc/interrupts
보고하기 위해 RES 라인을 개인적으로 모니터링합니다.재예약된 인터럽트 수. (CPU 고정 없이)
이러한 인터럽트는 CPU가 사용 중이고 동일한 스케줄러 큐에 설정된 다른 작업(irq 스레드의 irq 처리 포함)도 (동일한 CPU에서) 실행될 수 있을 때마다 발생합니다. 그리고 스케줄러는 마이그레이션 중인 작업을 실행하기 위해 사용 가능한 CPU를 찾으려고 합니다.
따라서 RES가 적을수록 CPU 작업 대기열에 실행 가능한 여러 작업이 있는 횟수가 줄어들거나 스케줄러가 마이그레이션을 위해 중간 CPU를 찾기 위해 관리하는 횟수가 줄어듭니다.
물론 후자는 CPU 수를 늘리는 것이 작업 부하에 도움이 된다는 것을 확실히 알려줄 것입니다.
결정을 내리려면 최소한의 워크로드(워크로드가 실행하는 최소 총 작업 수에 상대적)로 시작하여 시스템을 벤치마킹한 다음 점차적으로 로드를 늘리고 RES(총) 증가를 관찰하는 것이 좋습니다.
곡선 RES = f(초당 작업 수)가 크게 증가하지 않으면...