2010-06-26 2 views
2

이 쿼리는 멀티 코어 프로세서의 패킷 처리와 관련이 있습니다. 패킷 처리는 Linux 또는 순수 데이터 경로에서 수행 할 수 있습니다. 패킷 처리 응용 프로그램이 Linux에 있으면 높은 성능을 위해 패킷을 인터럽트 기반으로 처리해야하지만 패킷 처리가 순수한 데이터 경로 (Linux가없는)에 있으면 높은 성능을 얻기 위해 폴링을 사용해야합니까? 그렇다면 왜/어떻게?멀티 코어 프로세서의 패킷 처리를위한 폴링 및 인터럽트 기반 방법

+2

질문을 수정하십시오. 명확하지 않습니다. –

+0

... 사실 내 생각이 너무 명확하지 않아서 그것이 SO에 속한다고 확신 할 수 없다 (프로그래밍 질문인가?). – Lucero

답변

2
  • 폴링
    우리는 아직이 있습니까? 우리는 아직있다? 우리는 아직있다? 우리는 아직있다? 우리는 아직있다? ...

  • 인터럽트
    끝나면 핑 소리가납니다. 폴링 (당신이 수십 회 두 번째의 수천을 중단하기하는 경우 중요한) 인터럽트의 오버 헤드를 방지하면서

그래서, 인터럽트, CPU가 다른 작업을 수행 할 수 있습니다. 다양한 종류의 고성능.

하이브리드 프로세스가 있습니다. 즉, 인터럽트로 되돌아 가기 전에 몇 밀리 초 동안 인터럽트 이후 폴링입니다.

1

멀티 태스킹 운영 체제를 사용하는 경우 폴링은 지연 시간 패널티가있는 이됩니다 (다른 작업이 실행 중일 때 패킷이 수신되는 경우 이 실행 됨). 따라서 이러한 시스템에서 인터럽트 기반 접근 방식을 사용하면 더 나은 처리량을 얻을 수 있습니다. 이는 인터럽트 메커니즘이 다른 프로세스를 차단하지 않고 이상의 데이터 경로의 우선 순위를 높일 수 있기 때문입니다 (우선 순위가 높은 작업의 폴링이 모든 우선 순위가 낮은 작업을 차단할 수 있기 때문입니다).

당신이 OS없이 베어 메탈 임베디드 시스템에서 실행중인 경우 새로운 패킷에 대한 검사의 모든 시간을 보내고 또는 으로 처리 할 수있는 CPU 이후 폴링을 사용하여 최고의 처리량을 얻을 수 있어야합니다 수신 된 패킷의 결과. 이렇게하면 대기 시간이 최소화되고 패킷 처리에 최대주기 인 이 할당됩니다. 인터럽트 호출하면 처리기가 낭비되고이 경우 추가 복잡성이 발생합니다. 아무 것도 CPU에서 실행되고 있지 않으므로주기는 데이터 경로를 사용하지 않는주기 입니다. 이 하지 않는 것을

주 전체 응용 프로그램의 성능이 더 나은 또는 특정 구현이 빠른 폴링에 있다는 것을 의미한다. 가능한 최대 처리량이 폴링을 통해 에 도달한다는 것을 의미합니다. 예를 들어, 응용 프로그램에서 많은 수의 을 처리해야하는 경우 인터럽트가있는 DMA를 사용하면 성능이 향상 될 수 있습니다. 어떤 특정 경우에 폴링이 더 빠르다는 것을 알고 싶다면 에 그 응용 특성을 크게 의존합니다.

나는이 질문의 "멀티 코어"측면이 무엇인지 확실하지 않다

하지만 이것이 너무 것 있지만 임베디드 멀티 코어 시스템에서 mimimum 대기 시간을 얻기 위해 I/O 폴링에 CPU를 바치고 감각을 만들 수 있습니다 고도로 응용 프로그램 특정.

ninjalj 메모에서 하이브리드 방식을 사용하면 더 복잡한 시나리오에서 총 성능을 최적화 할 수 있습니다.위의 내용은 간단한 케이스 인 에 대해서만 적용됩니다.