OS X에서 프로세서 선호도를 설정하는 방법은 무엇입니까?


17

MacBook Pro의 Snow Leopard에서 프로세서 선호도를 어떻게 설정합니까? Windows에서는 작업 관리자에서 전환 할 수 있다는 것을 알고 있습니다.


2
<snarky-comment> 가상 머신에서 OS X를 실행하고 가상 머신의 선호도를 설정하십시오. </ snarky-comment>
zildjohn01

왜 이렇게 하시겠습니까? 코드가 잘못 코딩 된 오래된 프로그램을 멀티 코어 시스템에서 중단 시키려고 시도하지 않는 한 일반적으로 나쁜 생각입니다.
jalf

2
@jalf : 프로세서 선호도는 경우에 따라 캐시 무효화 및 휴지통을 줄이므로 성능을 향상시킬 수 있습니다.

1
실망 스럽습니다. Mac은 실시간 소프트웨어 개발을위한 이상적인 플랫폼이 될 것 같습니다.
Evan Plaice

1
@jweyrich CPU 선호도를 설정 하면 메모리 선호도가 비활성화 되고 성능이 저하 되는 Mac Pro의 QPI (Intel 's NUMA)가있는 CPU 는 제외합니다. 그러나 모바일 프로세서에는 적용되지 않습니다.
Jano

답변:


14

OS X은 버전 10.5부터 스레드 선호도 API를 지원했습니다 . 여기에 링크 된 웹 페이지의 관련 자료가 있습니다.

선호도 세트

선호도 집합은 메모리 리소스를 공유하고 L2 캐시를 공유하려는 스레드 모음입니다. 고유 선호도 세트는 별도의 친화도를 나타냅니다. 즉, 다른 세트에 속하는 스레드는 별도의 L2 캐시를 사용해야하므로 다른 논리 프로세서에서 실행되어야합니다.

선호도 세트는 "태그"로 식별됩니다. 스레드는 해당 세트를 식별하는 태그를 지정하여 특정 선호도 세트에 지정됩니다. 스레드는 최대 하나의 선호도 집합에 속할 수 있습니다. 즉, 하나의 선호도 태그가 있습니다.

고유 선호도 태그 설정의 효과

예를 들어, 별도의 L2 캐시에서 2 개의 스레드를 실행하려는 응용 프로그램은 다른 선호도 태그로 스레드를 설정합니다. 이중 코어 시스템에서는이 선호도가 효과적으로 무시됩니다. 그러나 4 코어 MacPro에서 스케줄러는 별도의 패키지에서 스레드를 실행하려고합니다. 마찬가지로, 8 코어 MacPro에서 스케줄러는 이러한 스레드를 별도의 다이 (동일한 물리적 CPU 패키지에 있거나 없을 수 있음)에서 실행하려고합니다.

사용법 예

사용 가능한 모든 프로세서에 스레드를 배치하려는 응용 프로그램은 다음을 수행합니다.

  • sysctl (3)을 사용하여 시스템의 프로세서 수를 확보하십시오.
  • 해당 스레드 수를 작성하십시오.
  • 고유 한 선호도 태그를 사용하여 각 스레드를 설정하십시오.
  • 모든 스레드를 시작하십시오.

기본 선호도 정책이있는 스레드는 모든 프로세서에서 더 자유롭게 예약됩니다. 이 스레드는 우선적으로 유휴 프로세서에서 실행되도록 마이그레이션됩니다. 선호도 태그가있는 스레드는 그대로 유지됩니다.

코드 목록 및 상위 프로세스와 하위 프로세스간에 선호도 태그 공유, CPU 캐시 구성 획득 등에 대한 정보는 소스를 참조하십시오.


이 API 외에 명령 줄 유틸리티가 있습니까?
Victor Eijkhout 19 :

11

http://developer.apple.com/mac/library/releasenotes/Performance/RN-AffinityAPI/

Mac OS X은 프로세서를 식별하거나 스레드 배치를 제어하는 ​​인터페이스를 내 보내지 않습니다. 명시 적 스레드 대 프로세서 바인딩은 지원되지 않습니다 . 대신 커널은 모든 스레드 배치를 관리합니다. 응용 프로그램은 대부분의 상황에서 스케줄러가 캐시 선호도와 관련하여 적절한 프로세서 배치를 사용하여 스레드를 실행할 것으로 예상합니다.


2
OS X은 버전 10.5부터 스레드 선호도 API를 지원했습니다. 자세한 내용은 내 답변을 참조하십시오.
void 포인터

4

지금까지 XNU (1504.3.12) 스케줄러는 프로세스 나 스레드에 대한 프로세서 선호도를 구현하지 않습니다.

따라서 MacOSX는이를 수행 할 수단을 제공하지 않습니다.


2

에서 http://images.apple.com/macosx/docs/OSX_for_UNIX_Users_TB_July2011.pdf

효율적인 커널 스레드. 각 POSIX 스레드는 특정 CPU에 대기하여 프로세서 선호도와 확장 성을 향상시키면서 잠금 경합을 줄입니다. 스레드는 취소 및 공유 뮤텍스 지원을 포함하여 POSIX (1c)를 준수합니다.

나에게 광고처럼 보이지만 Lion을 실행하는 iMac은 대부분의 시간을 존중하지만 프로세스를 핵심에 '고정'하지는 않습니다.

어쨌든 darwin의 프로세스 선호도를 제어하는 ​​API를 찾을 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.