2012-03-07 6 views
1

Linux (우리 시스템이 CentOS5 임)에서 CPU 리소스를 프로세스에 할당 할 수 있습니까? 예를 들어, 하나의 Tomcat 응용 프로그램이 있고, 실행중인 다른 응용 프로그램의 수에 관계없이 Tomcat에 의해 호출 된 모든 프로세스와 스레드에 총 CPU주기의 p %가 있습니다. 그리고 p %를 동적으로 조정하고 싶습니다 (예 :이 시간대에는 Tomcat이 40 %의 CPU주기를 갖고 다음 시간대에는 70 %의 CPU주기가 있음).Linux의 프로세스에 CPU 리소스를 어떻게 동적으로 할당 할 수 있습니까?

위와 같은 것이 가능하면 보수적으로 할 수 있습니까? 즉, tomcat은 40 %의 CPU 사이클을 가지고 있지만 현재 작업 부하가 10 % 만 소모하는 경우 나머지 응용 프로그램은 나머지 30 % CPU 사이클을 사용할 수 있습니다.

감사합니다.

+0

이 제어 그룹을 통해 수행된다. – ninjalj

답변

2

당신은 도구에 대해 잘 알고 있고 친절한 수준입니까?

정확한 백분율을 지정하는 대신 정교함 수준과 CentOS에서 설정하는 방법을 확인하는 것이 좋습니다. 우선 순위가 높은 프로세스가 더 많은 리소스를 요청할 수있는 상태에서 응용 프로그램이 예상대로 실행되며, 우선 순위가 높은 프로세스가 유휴 상태 일 때도 리소스가 부족하지 않습니다.

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 나는 좋은 것에 익숙하지 않다. 나는 잠시 동안 수색했다, 나는 당신이 renice 명령 (내 상황에서)을 의미한다고 생각한다. 그러나 niceness 레벨의 영향은 스케줄러에 크게 의존합니다. CentOS에서 niceness 레벨이 스케줄링에 어떤 영향을 미치는지 알고 있습니까? 한 프로세스의 niceness 레벨을 n으로 설정하면이 프로세스에서 어떤 CPU 사이클 비율을 얻을 수 있습니까? 감사! – Geni

+0

CPU주기의 수는 항상 nice로 보장되지는 않습니다. 우선 순위가 무엇인지를 스케줄러에게 알려주는 것입니다. -20이 가장 높은 우선 순위이고 0이 "보통"우선 순위이고 20이 최하위 우선 순위입니다. AFAIK, 더 높거나 낮은 값을 설정하면 기본값은 20/-20이됩니다. 반드시 -20으로 즉시 바꾸고 싶지는 않지만 -5 또는 -10이 예상대로 수행되는지 확인하십시오. 자신의 니즈 레벨과 상위 프로세스 및 기타 프로세스를 확인하여 사용자의 필요에 맞게 조정할 수 있습니다. – tamarintech

1

당신은 정말이 일을 원했다 (좋은 레벨을 사용하여 우선 순위의 esnyder의 제안은 거의 확실하게 당신이 정말로 달성하기 위해 노력하고 무엇이든 더 나은 솔루션입니다) 당신이 그것을 할 행복 경우 1/CPU 수 (예 : 8 코어 시스템에서 사용률을 전체 CPU 리소스의 12.5 %의 배수로 지정)를 지정하면 sched_setaffinity을 사용하여 제어하려는 프로세스의 CPU 선호도 마스크를 설정할 수 있습니다 다른 프로세스에서이 작업을 수행 할 수 있습니다). (사실, 당신은 모든 프로세스의 스레드를 식별하고 각각의 스레드를 호출해야한다고 생각합니다.)

다른 방법으로는 cpusets 일 수도 있지만 유용하게 사용할 수있는 방법이나 역동적 인 방법을 모릅니다.

+0

안녕하세요 @ timday, 답장을 보내 주셔서 감사합니다. 우리는 실제로 단일 CPU 경우를 고려하고 있습니다. 따라서 1/CPU 수 세분성은 너무 거칠 수 있습니다. 하지만 고맙다. – Geni

관련 문제