특정 프로세서/코어에서 정확히 하나의 프로세스가 실행되고 있는지 어떻게 확인할 수 있나요?

특정 프로세서/코어에서 정확히 하나의 프로세스가 실행되고 있는지 어떻게 확인할 수 있나요?

나는 내 프로세스를 정확하게 테스트하고 제어할 수 있다는 환상을 가질 수 있도록 이 작업을 수행하고 싶습니다.

어쩌면 특별한 프로그램을 위해 하나의 프로세서를 예약하고 싶을 수도 있습니다. 어쩌면 나만의 프로세스 최적화 프로그램을 작성하고 싶을 수도 있습니다. 누가 알아. 내 마음 속에는 가능성이 무궁무진합니다.

모든 OS에서 이것이 가능합니까? 그렇지 않다면 왜 안 됩니까? 메모리를 구획화하는 것이 허용된다면 왜 프로세서에 대한 통제권을 가질 수 없습니까?

감사해요.

답변1

리눅스에서는,CPU세트이것을 위해 작동해야합니다.

답변2

이는 이론적으로 가능합니다. 이에 가까운 작업을 수행하는 가장 쉬운 방법은 특정 CPU/코어를 특정 VM에 할당할 수 있는 가상화 플랫폼을 사용하는 것입니다. 그러면 주어진 VM에서 원하는 프로세스만 실행할 수 있습니다(물론 최소한의 OS 오버헤드로).

답변3

이를 수행하는 가장 쉬운 방법은 특정 프로세스에 대한 프로세서 선호도를 설정하거나 해당 프로세스가 실행될 수 있는 논리적 CPU(코어)를 OS에 알려주는 것입니다. Windows 작업 관리자에서 프로세스를 마우스 오른쪽 버튼으로 클릭하고 을 선택하면 Set Affinity...다음과 같은 창이 나타납니다.

Windows에서 프로세서 선호도 설정

Linux 기반 시스템에서는 다음을 수행할 수 있습니다.taskset유틸리티 로 동일한 작업을 수행하십시오.또는 프로세스 /proc항목에 적절한 CPU 마스크 플래그를 설정하면 됩니다.

안타깝게도 특정 프로세서에서 모든 프로세스를 제거하거나 프로세스가 시작될 때 프로세스에 특정 마스크를 자동으로 설정하는 쉬운 방법은 없습니다. 시스템에서 새 프로세스를 모니터링하고 적절한 선호도를 설정하려면 스크립트가 필요합니다. 당신이 원하는 것.

관련 정보