이것은 한동안 나를 귀찮게 한 질문이며, 온라인에서 그것에 대해 이야기하는 것을 찾을 수없는 것 같습니다. VMware Hypervisor ESXi를 실행하는 서버가 있습니다. 가상 머신을 부팅 할 때 일반적으로 부팅하는 데 2-3 분이 걸립니다. 끔찍한 시간은 아니지만 순간적이지 않습니다. 그러나 서버의 성능 로그를 보면 프로세서, RAM 또는 디스크 사용량이 100 % 정도입니다. 일반적으로 평균 60-80 % 정도입니다. 서버가해야 할 일이 있다면 왜 100 %로하지 않습니까?
주어진 순간에 성능을 제한하는 구성 요소는 100 %로 실행되어야합니다. 예를 들어, 하드 드라이브 속도가 느리면 거의 항상 100 %로 실행됩니다. 따라서 서버가 완전 유휴 상태가 아닌 경우 하나 이상의 영역 (프로세서, RAM, 디스크 및 네트워크)은 항상 100 % 여야합니다.
왜 그렇지 않습니까?
답변
대기 시간이 한 가지 이유입니다. “디스크는 다른 작업을 수행하기 전에 필요한 데이터를 제공합니다”와 데이터가 복구되는 시간이 그 시간 동안 CPU를 유휴 상태로 두는 것 사이의 지연입니다.
리소스는 아마도 100 %로 실행되지만 매우 짧은 기간 동안 실행됩니다. 운영 체제 부팅은 “프로세스 또는 결정, 디스크에서 무언가 가져 오기, 메모리에서 무언가 수행, 장치로 무언가 수행”의 일반적인 패턴을 따라 초당 여러 번 반복됩니다. 따라서 2 초 동안 25 %의 디스크가 표시되면 0.5 % 동안 100 %로 실행되고 나머지 시간 동안 유휴 상태임을 의미합니다.
EEAA가 지적했듯이 멀티 코어 시스템은 이것을 좀 더 복잡하게 만듭니다. 4 개의 스레드를 실행할 수있는 CPU의 단일 스레드 소프트웨어는 최고 속도로 25 % 만 실행할 수 있습니다. 데이터가 하드 드라이브에서 RAM으로, 캐시로, CPU로 흐르기 때문에 멀티 스레드 소프트웨어조차도 100 %에 거의 도달하지 않습니다. 파이프 라인을 가득 채우는 것은 어렵고 비디오 인코딩과 같은 예측 가능한 워크로드에서 주로 발생하는 경향이 있습니다. 이 경우 운영 체제는 읽기 패턴을 관찰하고 필요한 데이터를 검색하여 RAM의 디스크 캐시와 같은 적절한 캐시에 넣습니다.
답변
당신은 매우 간단한 방법으로 이것에 대해 생각하고 있습니다. 이로 인해 잘못된 가정을하게 될 것입니다.
첫째, 멀티 코어 시스템에서 가장 간단하게 CPU 사용을 이해하려면 프로세스로드가 멀티 스레드인지 여부를 고려해야하고 여러 코어를 활용하도록 설계해야합니다. 그렇지 않은 경우 실행중인 프로세스 조합에 따라 100 % 사용률이 표시되지 않을 수 있습니다. 이제까지.
둘째, IO 장치 성능을 고려해야합니다. 예를 들어, 장치가 얼마나 많은 IOps를 사용할 수 있는지 시스템은 어떻게 알 수 있습니까? 그렇지 않습니다. 보다 의미있는 측정 방법은 iowait
부팅 중 값 (부팅 프로세스 중에는 얻기 어려울 수 있음) 또는 부팅 중 디스크 큐 / 대기 시간 (하이퍼 바이저에서 쉽게 얻을 수 있음)입니다. 대기열 또는 대기 시간이 급증하는 경우 IO 장치가 성능 문제의 원인 일 수 있습니다.
답변
나는 약 20 년 동안 서버와 함께 일해 왔으며 일반적으로 구성 요소가 항상 100 %로 실행될 때 좋지 않습니다.
예를 들어, 디스크로 바꾸지 않고 전체 메모리가 부족한 SQL 데이터베이스가 있다고 가정 해 봅시다.
데이터베이스가 24GB이고 OS에 8GB가 필요한 경우 시스템에 32GB의 RAM 만 할당하고 싶지 않은 경우 잘못된 “잘못된”코드, DDOS, 응용 프로그램 사용량이 많은 “사물”이 있습니다. 헤드 룸이없는 경우 서버에 문제가 있음을 어떻게 알 수 있습니까?
우리는 데이터 센터에 약 2000 대의 서버가 있으며, 모두 약 75 %의 CPU 및 RAM에서 실행되는 것을보고 싶습니다. 또한 CPU 또는 RAM이 85 %에 도달하면 경고하고 90 %에 도달하면 경고합니다.