2017-11-29 30 views
1

멀티 코어 머신에서 cpu가로드되었는지 아닌지를 이해하는 가장 좋은 방법은 무엇입니까?멀티 코어 머신 - cpu로드 메트릭

아파치 CGI 서버에 게시물 요청을 보내는 웹 응용 프로그램이 있습니다. CGI 서버는 사후 데이터를 반복하고 루프의 각 항목에 대해 perl 프로세스를 시작합니다. 클라이언트의 요청이 단일 종단점을 끝내기 때문에 내 서버가 처리 할 수없는 많은 프로세스를 생성하게되면 걱정이됩니다. 따라서 루프에서 새 프로세스를 시작하기 전에 어떤 시스템 메트릭을 검사해야하는지 이해하고 싶었습니다.

enter image description here

참고 : 나는 20 코어 시스템을 가지고있다.

답변

2

대답을 쉽게 찾을 수없는 이유는 프로세스의 특성과 제한 요소 인 시스템 제약 조건에 따라 다릅니다.

CPU 집약적 인 작업의 경우로드 메트릭은로드 평균입니다.로드 평균은 실행 가능 상태의 프로세스를 측정합니다. 매우 대략적으로 LA가 코어 수와 같으면 CPU를 실행합니다. 최대.

그러나 CPU가 제한적인 요소가 아닌 경우가 점점 늘어나고 있습니다. 한정된 양의 메모리가있을 수 있으며 메모리가 부족한 프로세스가 메모리를 소비합니다. '스페어'메모리가 캐싱에 사용되므로 전체 캐쉬를 채우는 것이 실제 캐쉬가 작기 때문에 실제로 느려지 기 시작합니다. 사용 가능한 공간을 엎 지르면 스와핑이나 OOMkiller가 발생합니다.

하지만 아파치와 웹에 대해 언급했듯이 네트워크 파이프가 제한 요소 인 가능성이 매우 큽니다. 로컬 호스트의 대역폭을 제어하는 ​​것은 실제로 놀랍도록 어렵습니다.

그리고 디스크 입출력이 있습니다. 이것은 또한 요인 일 수 있습니다. 웹 서버에서는 일반적으로 아웃 바운드 네트워크가 더 엄격한 한계가 될 것이기 때문에 가능성은 희박합니다.

모두가 유휴 상태의 경량 '헬퍼'이거나 눈에 띄는 부하가 많은 중량급 '분쇄기'인 경우 프로세스에 따라 다릅니다.

그래서 가장 좋은 대답은 매우 모호합니다. 프로세스가 CPU를 많이 사용하는 경우 코어 당 2 개로 제한하십시오. 프로세스가 메모리 인 경우 시스템 RAM의 약 50 %를 소비하도록하십시오. IO 집중적 인 프로세스라면 IO (네트워크 또는 디스크)의 약 50 %를 소비하도록하십시오.