2016-09-17 4 views
0

동일한 컴퓨터에서 HTTP 서버 앞에서 Varnish를 실행할 8 코어 서버가 있습니다.Varnish가 사용하는 CPU 코어의 수를 제한하는 방법은 무엇입니까?

광택을 4 개 이하의 코어로 제한하려면 어떻게해야합니까?

나는 문서의 작업자 풀의 읽었지만이 말한다. 니스 스레딩 모델은 여러 스레드 풀을 사용 할 수 있지만

는 "우리는이 매개 변수를 수정하지 않는 당신을 추천을 바탕으로 우리의 경험과 테스트를 통해 2 개의 스레드 풀만 있으면 충분하다는 것을 알 수 있습니다. 즉, 2 개 이상의 풀을 추가 할 때 Varnish의 성능이 향상되지 않습니다.

참고 스레드가있는 것이 좋습니다 풀 당 CPU 코어 당, 이것은 오래 된 조언이다 안심하십시오. 우리는 최대 2 스레드 풀을하는 것이 좋습니다 있지만 풀당 스레드 수를 늘릴 수 있습니다. "

그래서 2 개의 스레드 풀로 충분합니다. 이 경우 두 개의 CPU 코어 만 사용된다는 의미입니까?

문서를 통해 지금까지 나는 명확한 대답을 찾지 못했습니다.

답변

0

내가 아는 한, 바니시에는 실행 코어 수를 제한하는 기본 방법이 없습니다. 프로세스가 운영 체제 수준에서 실행되는 방식을 조작해야합니다. Linux를 사용한다고 가정 할 때 가장 쉬운 방법은 시동 명령을 수정하여 taskset을 사용하여 지정된 코어 또는 코어 범위에 핀을 고정하는 것입니다. 예를 들어, 서비스 유닛에 재 :

# /etc/systemd/system/varnish.service.d/override.conf 
ExecStart= 
ExecStart=/usr/bin/taskset -c 4-7 /usr/sbin/varnishd \ 
    -j unix,user=vcache -F -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m 

이 다섯 번째, 여섯 번째, 일곱 번째로 varnishd 프로세스를 제한하고, 8 개 개의 코어 것이다. 하이퍼 스레딩을 사용하도록 설정하면 조금 더 까다로워집니다. 8 개의 물리적 코어가 16 개의 논리적 코어로 표시되며 "실제"코어는 "가상"과 결합됩니다. 이 경우 taskset -c 8,10,12,14 또는 taskset -c 9,11,13,15을 시도하거나 광택을 물리적 코어로 제한하는 데 신경 쓰지 않는 경우 taskset -c 8-15을 시도 할 수 있습니다.

다른 옵션으로는 cgroup 설정 또는 바니시 컨테이너 처리 (또는 시스템 가상화, 테이블에없는 것으로 가정)가 있습니다. taskset 옵션이 작동하지 않거나 Linux에서 실행되지 않는 경우 추가 정보로 질문을 업데이트하십시오.

관련 문제