![특정 프로세서/코어에서 정확히 하나의 프로세스가 실행되고 있는지 어떻게 확인할 수 있나요?](https://rvso.com/image/1313333/%ED%8A%B9%EC%A0%95%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%84%9C%2F%EC%BD%94%EC%96%B4%EC%97%90%EC%84%9C%20%EC%A0%95%ED%99%95%ED%9E%88%20%ED%95%98%EB%82%98%EC%9D%98%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EA%B0%80%20%EC%8B%A4%ED%96%89%EB%90%98%EA%B3%A0%20%EC%9E%88%EB%8A%94%EC%A7%80%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%99%95%EC%9D%B8%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
나는 내 프로세스를 정확하게 테스트하고 제어할 수 있다는 환상을 가질 수 있도록 이 작업을 수행하고 싶습니다.
어쩌면 특별한 프로그램을 위해 하나의 프로세서를 예약하고 싶을 수도 있습니다. 어쩌면 나만의 프로세스 최적화 프로그램을 작성하고 싶을 수도 있습니다. 누가 알아. 내 마음 속에는 가능성이 무궁무진합니다.
모든 OS에서 이것이 가능합니까? 그렇지 않다면 왜 안 됩니까? 메모리를 구획화하는 것이 허용된다면 왜 프로세서에 대한 통제권을 가질 수 없습니까?
감사해요.
답변1
리눅스에서는,CPU세트이것을 위해 작동해야합니다.
답변2
이는 이론적으로 가능합니다. 이에 가까운 작업을 수행하는 가장 쉬운 방법은 특정 CPU/코어를 특정 VM에 할당할 수 있는 가상화 플랫폼을 사용하는 것입니다. 그러면 주어진 VM에서 원하는 프로세스만 실행할 수 있습니다(물론 최소한의 OS 오버헤드로).
답변3
이를 수행하는 가장 쉬운 방법은 특정 프로세스에 대한 프로세서 선호도를 설정하거나 해당 프로세스가 실행될 수 있는 논리적 CPU(코어)를 OS에 알려주는 것입니다. Windows 작업 관리자에서 프로세스를 마우스 오른쪽 버튼으로 클릭하고 을 선택하면 Set Affinity...
다음과 같은 창이 나타납니다.
Linux 기반 시스템에서는 다음을 수행할 수 있습니다.taskset
유틸리티 로 동일한 작업을 수행하십시오.또는 프로세스 /proc
항목에 적절한 CPU 마스크 플래그를 설정하면 됩니다.
안타깝게도 특정 프로세서에서 모든 프로세스를 제거하거나 프로세스가 시작될 때 프로세스에 특정 마스크를 자동으로 설정하는 쉬운 방법은 없습니다. 시스템에서 새 프로세스를 모니터링하고 적절한 선호도를 설정하려면 스크립트가 필요합니다. 당신이 원하는 것.