서버의 성능에 대해 이야기 할 때 몇 가지 다른 방법으로 서버를 볼 수 있습니다. 응답 시간 (네트워크 대기 시간과 유사) 및 처리량 (네트워크 대역폭과 유사)이 있습니다.
일부 Windows Server 버전에는 기본적으로 균형 전원 설정이 활성화되어 있습니다. Jeff가 지적한대로. Windows 2008 R2가 그 중 하나입니다. 요즘에는 단일 코어 인 CPU가 거의 없으므로이 설명은 단일 코어 VM을 제외하고는 거의 모든 Windows 서버에 적용됩니다. (나중에 더 자세히 설명).
균형 잡힌 전원 관리 옵션이 활성화되면 CPU는 사용중인 전원의 양을 조절하려고합니다. 이를 수행하는 방법은 "주차"라는 프로세스에서 CPU 코어의 절반을 비활성화하는 것입니다. 한 번에 CPU의 절반 만 사용 가능하므로 트래픽이 적은 시간에는 더 적은 전력을 사용합니다. 이것은 그 자체로는 문제가되지 않습니다.
문제는 CPU가 파킹되지 않을 때 시스템에서 사용 가능한 가용 CPU 사이클을 두 배로 늘리고 갑자기 시스템로드를 불균형 화하여 사용률을 70 %에서 35 %로 늘렸다는 것입니다. 시스템은이를보고 트래픽 버스트가 처리 된 후 "저는 전력을 절약하기 위해이 전화를 조금 돌려야합니다"라고 생각합니다. 그렇습니다.
여기 나쁜 부분이 있습니다. CPU 코어 내에서 불균일 한 열 및 전력 분배를 방지하기 위해 최근에 주차되지 않은 CPU를 파킹하는 경향이 있습니다. 그리고 제대로 작동하려면 CPU가 CPU 레지스터 (L1, L2 & L3 캐시)에서 다른 위치 (대부분의 주 메모리)까지 모든 것을 플러시해야합니다.
가상의 예로서 C1-C8이있는 8 코어 CPU가 있다고 가정 해 봅시다.
- 활성 : C1, C3, C5, C7
- 주차 : C2, C4, C6, C8
이러한 상황이 발생하면 모두 일정 기간 동안 활성화 된 다음 시스템이 다음과 같이 주차합니다.
- 활성 : C2, C4, C6, C8
- 주차 : C1, C3, C5, C7
그러나 그렇게하면 L1-L3 캐시에서 모든 데이터를 플러시하는 것과 관련하여 상당한 양의 오버 헤드가 발생하여 CPU 파이프 라인에서 플러시 된 프로그램에 이상한 오류가 발생하지 않습니다.
공식적인 이름 일 수도 있지만 CPU 스 래싱이라고 설명하고 싶습니다. 기본적으로 프로세서는 작업 요청을 처리하는 것보다 내부적으로 데이터를 이동하는 바쁜 작업에 더 많은 시간을 소비하고 있습니다.
요청에 대해 낮은 대기 시간이 필요한 모든 종류의 응용 프로그램이있는 경우 균형 전원 설정을 비활성화해야합니다. 이것이 문제인지 확실하지 않은 경우 다음을 수행하십시오.
- "작업 관리자"를여십시오
- "성능"탭을 클릭하십시오.
- "Open Resource Monitor"를 클릭하십시오
- "CPU"탭을 선택하십시오
- 다양한 CPU에서 창의 오른쪽을보십시오.
당신이 그들 중 하나를 주차 볼 수 있다면, 당신은 그들 중 절반은 주어진 시간에 주차, 그들이 모두 발사되고 다른 절반은 주차된다는 것을 알 수 있습니다. 앞뒤로 번갈아 가며 나타납니다. 따라서 시스템 CPU가 스 래싱됩니다.
가상 머신 : 하이퍼 바이저의 추가 오버 헤드가 있기 때문에 가상 머신을 실행할 때이 문제가 더욱 악화됩니다. 일반적으로 VM을 실행하려면 하드웨어에 각 타임 슬라이스의 각 코어에 대해 사용 가능한 슬롯이 있어야합니다.
16 코어 하드웨어를 사용하는 경우 총 16 개 이상의 코어를 사용하여 VM을 실행할 수 있지만 각 시간 단위마다 최대 16 개의 가상 CPU 만 해당 시간 조각에 적합하며 하이퍼 바이저는 VM의 모든 코어에 맞아야합니다. 그 타임 슬라이스에 여러 타임 슬라이스에 퍼질 수 없습니다. (타임 슬라이스는 기본적으로 X CPU주기의 집합입니다. 1000 일 수도 있고 100k주기 일 수도 있습니다)
예 : 8 개의 VM이있는 16 개의 핵심 하드웨어. 6은 4 개의 가상 CPU (4C)를, 2는 8 개의 가상 CPU (8C)를 갖습니다.
타임 슬라이스 1 : 4x4C 타임 슬라이스 2 : 2x8C 타임 슬라이스 3 : 2x4C + 1x8C 타임 슬라이스 4 : 1x8C + 2x4C
하이퍼 바이저가 할 수없는 것은 타임 슬라이스 할당량의 절반을 8 개의 vCPU VM의 첫 번째 4 개의 CPU로 분할 한 후 다음 타임 슬라이스에서 나머지를 해당 VM의 다른 4 개의 vCPU에 제공하는 것입니다. 그것은 타임 슬라이스 내에서 전부 또는 아무것도 아니다.
Microsoft의 Hyper-V를 사용하는 경우 호스트 OS에서 전원 제어 설정을 활성화 할 수 있으며 이는 클라이언트 시스템으로 전파되어 영향을 미칩니다.
이것이 어떻게 작동하는지 알게되면, 균형 잡힌 전원 제어 설정을 사용하여 성능 문제를 일으키고 서버를 느리게 만드는 방법을 쉽게 알 수 있습니다. 근본적인 문제 중 하나는 데이터베이스 쿼리, 웹 서버 요청 또는 기타 다른 항목이든 서버가 들어오는 요청에 응답하기 전에 들어오는 요청이 CPU 주차 / 해제 프로세스가 완료 될 때까지 기다려야한다는 것입니다. .
때때로 시스템은 요청 도중에 CPU를 파킹 또는 언 파킹합니다. 이 경우 요청이 CPU 파이프 라인에서 시작하여 덤프 된 다음 다른 CPU 코어가 프로세스를 선택합니다. 요청이 충분하면 요청이 진행되는 동안 여러 번 발생할 수 있으며 5 초 데이터베이스 쿼리는 15 초 데이터베이스 쿼리로 변경해야합니다.
Balanced Power를 사용하면 가장 큰 문제는 시스템이 거의 모든 요청에 응답하는 속도가 느리다는 것입니다.