저는 수정된 Linux 커널을 다음 아키텍처의 시스템에서 소프트 실시간 운영 체제로 사용하고 있습니다.
CPU1과 CPU2에는 각각 8개의 코어가 있습니다. 최소한의 지터로 실행해야 하는 프로세스가 4개 있습니다.이러한 프로세스에 대한 하드웨어 중단의 영향을 최소화하려면 어떻게 해야 합니까(OS 수준 및 하드웨어 구성 수준에서)??
이것이 내가 지금 하고 있는 일입니다:
- 프로세스를 CPU2의 각각 1개 코어에 바인딩합니다.
- SAS2208 컨트롤러를 비활성화하고 부팅 디스크를 C602 PCH의 SATA 컨트롤러에만 연결합니다.
CPU1의 하드웨어 인터럽트를 줄이기 위해 C602 PCH의 대부분의 기능을 비활성화할 수 있는 것 같습니다. 프로세스를 CPU2에 격리하는 경우(즉, DIMM #1-1에서 #1 원격을 지원하지 않음) 이것이 필요하지 않다는 것이 맞습니까? 메모리 액세스) -4 및 CPU1과 CPU2 간의 프로세스 간 통신이 없음)?
답변1
모든 성능 조정과 마찬가지로 절대적인 규칙은 없습니다. 그 성격상 충분한 자격을 갖춘다면 몇 가지 규칙을 만들 수 있지만, 극히 일부에 불과합니다. 그러니 이 점을 명심하시기 바랍니다. 하드웨어 인터럽트를 제어하는 방법은 실제로 워크로드 동작에 따라 달라집니다.
귀하의 질문에 대해서는 인터럽트가 전송되는 위치도 제어해야 합니다. 항상 일종의 중단이 발생하지만 다음과 같은 작업을 수행할 수 있습니다.IRQ 선호도 구성이를 CPU1로 보내면 CPU2를 데이터 처리에 사용할 수 있습니다. 패킷 조정 옵션을 사용하여 동일한 작업을 수행할 수 있습니다.
앞서 언급했듯이 절대적인 규칙을 제시하기는 어렵지만 불필요한 하드웨어 인터럽트 수를 줄이는 것이 좋은 시작이지만IRQ 상관관계와 TX/RX 상관관계를 조정하면 이점을 얻을 수도 있습니다.. 특정 지표에 집중하지 않고 전반적인 애플리케이션 성능을 모니터링하는 것을 잊어버리는 것도 중요합니다.