Linux에서는 특정 CPU 코어의 인터럽트를 비활성화하는 것이 좋지 않습니까? 아니면 다중 칩이있는 시스템의 모든 칩을 동시에 비활성화 할 수 있습니까? 대기 시간에 매우 민감한 C 프로그램을 작성할 때 당연히 고유 한 코어에서 스레드를 분리하고 다른 모든 작업을 코어 분리로 옮기는 것이고, 나는 그 절충점이 무엇인지 궁금합니다.cpu 커널 인터럽트를 차폐 및 비활성화
답변
메인 라인 Linux 커널은 CPU에서 모든 IRQ를 오랫동안 사용하지 않도록 설계되지 않았습니다. IRQ를 필요로하는 내부 커널 함수가 많이 있습니다. RCU 중 하나입니다. RCU 실속은 시스템의 나머지 부분을 중단시킬 수 있으며, 그러한 정지는 모든 CPU에 브로드 캐스팅되는 IPI (프로세서 간 인터럽트)를 포함 할 수 있습니다 (사용중인 RCU 구현에 따라 다름).
즉, 이러한 CPU 격리를 적절하게 구현하기위한 실험적인 패치가 있습니다. 예 : http://lwn.net/Articles/268711/ - 인터럽트 라우팅을 사용하지 않도록 설정하기 전에 CPU를 오프라인 상태로 만드는 데 필요한 모든 내부 작업을 수행합니다 (나머지 커널의 관점에서). 이것은 상당히 오래된 패치 시리즈입니다. 패치 시리즈의 개발자에게 연락하여 어딘가에서 새로운 버전이 있는지 확인하거나 현재 버전의 커널에 적용 할 수 있습니다. PREEMPT_RT 사람들도이 도구를 구현하려고합니다. https://rt.wiki.kernel.org/index.php/Main_Page에서 위키를 확인하십시오 (아직 구현되지 않았습니다). 행운을 빕니다!
참고에 감사드립니다! –
몇 가지 고려해야 할
- 모든 IRQ를 사용하면 대기 인터럽트를 가능성이 더 높습니다 의미에 실행 한 적은 프로세서를해야합니다. 분명히 이것은 프로세서의 수가 증가함에 따라 문제의 심각성이 줄어 듭니다.
- 인터럽트없이 프로세스가 강제로 실행을 포기하게하는 것이 훨씬 더 어려울 것입니다. 무한 루프를 입력하기로 결정하면 프로세서를 중단하여 프로세서를 중지 할 수 없습니다. 이 과정은 적절한 시간에 통제를 포기하고 인터럽트 대기에 대해 걱정하지 않습니다 완전한 신뢰가있는 경우
, 다음은 인터럽트를 비활성화 도움이 될 수 있습니다.
나는 프로세서가 프로세서를 제어하고 버그로 인해 그것을 포기하지 않을 가능성에 대해 생각하지 않았습니다. 이것을 지적 해 주신 많은 감사드립니다! –
이것이 사실이라면 활성 스레드가 잘못된 주소에 액세스하려고 시도하고 페이지 오류가 발생하면 어떻게됩니까? 어떻게 멈출 수 있겠습니까? – Syncopated
@Syncopated이를 보장 할 방법이 없습니다. while (1) {}'을 실행하면 어떻게 될까요? 이는 단일 명령으로 인코딩 될 수 있으며 데이터 액세스를하지 않으므로 시작되면 페이지 폴트가 발생하지 않습니다. – ughoavgfhw
- 1. 인터럽트를 비활성화하면 CPU 스케줄링이 자동으로 비활성화됩니까?
- 2. 1024 CPU 용 커널 스케줄링
- 3. 커널 모듈에서 CPU 확장 구현
- 4. 하드웨어 및 소프트웨어 인터럽트 비활성화
- 5. ToolStripMenuItem 비활성화 및 MenuStrip.Item 비활성화
- 6. 인터럽트를 비활성화하는 것은 무엇을 의미합니까?
- 7. CPU 및 쿠다 비주얼 프로파일의 GPU 타이머
- 8. CPU 사용자 모드에서 커널 모드로 전환 : 정확히 무엇을합니까? 어떻게 전환됩니까?
- 9. FFMPEG 및 CPU 사용률
- 10. 스레드 및 CPU 선호도
- 11. 작업과 인터럽트를 구별하려면
- 12. ATA/IDE 인터럽트를 알리는 올바른 방법은 무엇입니까?
- 13. 리눅스 커널 헤더
- 14. 활성화 및 비활성화
- 15. Linux 커널 dentry 및 inode
- 16. 리눅스 커널 라이센스 및 사용하기
- 17. 커널 스케줄러의 CFS 및 FIFO
- 18. 커널 스레드 및 POSIX 라이브러리
- 19. 가우시안 흐림 및 컨벌루션 커널
- 20. MySQL 높은 CPU 사용률 및 지속적인 링크
- 21. C++ 높은 기억 및 cpu
- 22. 별도의 CPU 및 IO 시간
- 23. DOM 메모리 및 CPU 관리
- 24. Cpu 및 Outofmemory 예외 사용
- 25. 애니메이션 및 CPU - 모범 사례?
- 26. 부스트 스레드 - 인터럽트를 확인하는 방법
- 27. 리눅스 커널 스레드 - 스케줄러
- 28. drupal에서 100 % cpu 사용
- 29. 커널 프로그래밍
- 30. 커널 API 또는 커널 API 사용
당신의 프로그램에서 당신은 주변에서 어떤 입력을 기대하지 않거나 예외가 발생했다고 가정합니까? – Pyjong