2009-03-09 3 views
9

나는 한 번에 여러 프로세스 (항상 동일한 실행이지만 여러 인스턴스)를 돌리고 CPU 시간이 100 % 걸리는 타사 응용 프로그램과 함께 쿼드 코어 시스템을 사용합니다. 나 또한 같은 상자 (IIS 및 타사)에서 실행되는 몇 가지 웹 서비스가 있습니다.Windows XP에서 실행 파일에 대한 프로세서 선호도를 설정하는 방법은 무엇입니까?

사용중인 모든 코어의 문제는이 타사 웹 서버가 시간 초과되도록 만드는 것입니다 (IIS는 정상적으로 작동하지만 정상적으로 작동 함). 제 3 자 웹 서버에 대한 통제권이 없습니다. 더 큰 제품의 일부이며 운영되어야합니다. 그래서 SysInternals Process Explorer를 통해 프로세서 친 화성으로 게임을 시도하고 그 성가신 프로세스를 3 코어 3 개로 제한하고 4 코어를 타사 웹 서버 전용으로 사용하려고 노력했습니다.

문제는 실행 가능한 프로세스가 아니라 실행 가능한 프로세스에만 친화력을 설정하기 때문에 프로세스가 완료되고 나중에 새 프로세스로 다시 생성되면 다시 똑같습니다. 즉, 모든 4 개의 코어를 차지합니다. 그래서, 나는이 ImageCfg.exe 유틸리티에 대해 Microsoft에서 검색해 보았습니다. 그러나 다운로드를 위해 Microsoft 웹 사이트에서 찾을 수 없었습니다. 그리고 일부 사람들은 그것을 시도했지만 실제로 작동하지 않는다고 불평합니다.

실행 파일에 선호도를 고칠 방법이 있습니까?

+1

첫 번째 전화는 해당 소프트웨어의 게시자에게해야합니다. 스레드 사용을 제한하는 방법을 그들에게 물어보십시오. – NotMe

+0

그러나 소프트웨어에 해당 기능이 없을 수 있기 때문에 문제는 여전히 흥미 롭습니다. 그리고 확실히 그 밖의 다른 소프트웨어가 있습니다 ... 매번 공급 업체에 전화해야하는 것은 귀찮을 것입니다. – ine

답변

5

Process Lasso의 기능 중 하나는 해당 프로세스가 시작될 때마다 프로세스의 선호도를 설정하는 것입니다.

3

SetProcessAffinityMask()을 사용하십시오. 그리고 Processor Affinity is inherited!

당신은, 특히 the "Debugger" option을 ImageFileExecutionOptions을 사용하고, 당신이 친 화성을 설정하려는 하나가 그 자체에 SetProcessAffinityMask()를 호출 한 다음 새 프로세스를 생성 자신의 작은 실행 파일을 작성해야합니다, 조심 . 그것을 디버거로 설정하면 완료됩니다.

+1

정말이 문서를 읽으십시오. 이걸로 쉽게 발을 쏠 수 있습니다. 많은 잡았다. –

5

/AFFINITY 매개 변수를 start으로보고 싶을 수 있습니다. 도움에서

:

Windows에서 프로세서 선호도로
AFFINITY The new application will have the specified processor 
      affinity mask, expressed as a hexadecimal number. 

는 비트 마스크는 당신이 어떤 실험을해야 할 수도 있습니다하지만 난 1는 처음 세 개의 코어가되고, 따라서 7을 첫 번째 핵심 인 및 F 모든 것을 가정 것입니다 네. 또는 네 번째에 대해서만 8.

예약 된 작업이나 바로 가기를 적절한 매개 변수를 사용하여 start에 대한 호출로 바꿀 수 있습니다.

+1

Windows XP에는'/ affinity' 옵션이 없습니다. –

3

단일 -proc affinity 응용 프로그램 shim을 사용하여 하나의 프로세서를 실행 가능 수준으로 강제로 전환하면 프로세스가 하나의 코어로 강제 이동됩니다.

이 문서의 http://msdn.microsoft.com/en-us/library/bb173458.aspx에는 심을 아래쪽으로 향하게하는 단락이 있습니다.

+0

문서가 http://msdn.microsoft.com/en-us/library/ee417693.aspx로 이동했습니다. –

0

프로세스의 우선 순위를 설정하여 CPU의 100 % 사용을 결정하더라도 더 높은 우선 순위가 필요할 때이를 대신 할 수 있습니다.

Doing this automatically (작업 관리자에서 재생할 필요없이) 내가 얼마 전에 물어 본 것입니다.

+0

질문은 프로세스 우선 순위가 아닌 프로세서 선호도에 대한 것입니다. –

3

ImageCfg.exe 유틸리티가 작동하지 않습니다. 방금 회사 문제를 해결하기 위해 사용했습니다.그것은 사용할 수 있습니다

예를 들어, CPU0 및 CPU1에 .EXE을 제한 xxx.exe이며 http://www.robpol86.com/pages/imagecfg.php

있는 Imagecfg -a은 0x3에서.

+0

이유를 모르겠지만 제 경우에는 작동하지 않습니다. – bychkov

6

http://waynes-world-it.blogspot.com/2009/06/processor-affinity-on-windows-server.html

PowerShell을

사용 PowerShell은 하나 또는 그 이상의 실행중인 프로세스에 대한 프로세서 선호도를 설정합니다. calc.exe의 프로세서 마스크를 처음 4 개의 프로세서로 설정하는 예제 스크립트가 있습니다. 스크립트가 간단하고 스케줄링이 쉬우 며 x86 및 x64에서 작동하고 동일한 이름의 여러 프로세스를 지원하며 적어도 PowerShell로 얼마나 쉽게 관리 할 수 ​​있는지를 강조하기 때문에이 방법이 마음에 듭니다.

calc.exe (n!)에 많은 수의 계승을 사용하면 100 % CPU가 생성되므로 테스트에 유용 할 수 있습니다. 마스크는 아래 1111 = 0xF입니다입니다 - 첫 번째 4 개 개의 프로세서의 마스크 수 있도록 사용 :

$calcSet = Get-Process -ProcessName "calc" 
foreach ($calc in $calcSet) {$calc.ProcessorAffinity=0xF} 
1

분명이 스레드 오래된하지만 메신저 (내가 그랬던 것처럼) 그냥 누군가가이 주제에 대한 구글의 경우는 어쨌든 코멘트를 추가

당신은 프로세스의 우선 순위를 설정을 시도 할 수 그것은 는 CPU의 100 %, 그렇게 할 필요가있을 때 대신 할 수 높은 우선 순위 무언가를 사용하기로 결정하더라도 있도록.

내가 (이전에 관리자의 작업을 수행하는 대신) 이것을 자동으로 수행하는 것은 내가 잠시 전에 물어 본 것입니다.

시작 명령을 사용하여 프로세스의 시작 우선 순위를 설정할 수 있습니다.

예 : start "my path\my process" /LOW은 낮은 우선 순위입니다.

허용 우선 순위 스위치 LOW, NORMAL, HIGH, REALTIME, ABOVENORMAL, BELOWNORMAL

는 예를 들어, 배치 파일에서 호출 될 수 있습니다.

+0

질문은 프로세스 우선 순위가 아닌 프로세서 선호도에 대한 것입니다. –