또한 Linux에서 가설을 검증하는 방법을 알고 계십니까? IO 집중적 인 작업을 수행하는 동안 인터럽트 수.
는
, 나는 카페의 가설이 있음을 추측하고있어 인터럽트 수행합니다 초당
- 많은 인터럽트;
- 인터럽트는 모든/모든 CPU에서 처리됩니다. 따라서
- 은 인터럽트가 CPU 캐시를 플러시합니다.
테스트해야 할 통계는 CPU 당 초당 인터럽트 수입니다.
자세한 내용은 http://www.google.com/#q=cpu+affinity+interrupt을 참조하십시오. 인터럽트를 단일 CPU에 연결할 수 있는지 여부는 알 수 없습니다.
다음은 내가 이해할 수없는 것입니다. (이 질문을 처음 보았습니다.) 랩톱 컴퓨터의 perfmon (Windows Vista를 실행 중)이 거의 1 초마다 2000 인터럽트/초 (각 코어 당 1000 개) idle (perfmon을 표시하면서 아무것도하지 않음). 어느 장치가 초당 2000 회의 인터럽트를 생성하는지는 상상할 수 없습니다. CPU 캐시를 날려 버릴만큼 충분하다고 생각했습니다. (내 생각에 바쁜 스레드의 CPU 양은 50msec와 비슷합니다). 또한 평균 350 DPCs를 보여줍니다.
하이 엔드 하드웨어에 비슷한 문제가 있습니까?
한 가지 유형의 하드웨어 차이점은 디스크 하드웨어 및 디스크 장치 드라이버 일 수 있으며, 더 많거나 적은 인터럽트 및/또는 기타 경쟁을 생성 할 수 있습니다.
Windows의 모든 기능이 느려집니다. CPU가 BUS 작업과 CPU 작업을 동시에 관리 할 수 없기 때문에 그럴 것이라고 믿습니다. 그러나 여기있는 사람이 더 나은 응답을 보냈을 것입니다. –
Windows에서는 상황이 훨씬 나쁩니다. Windows는 IO 처리량을 줄여서 사용할 수 있도록 노력합니다. 이것이 많은 벤치 마크에서 그렇게 열악한 이유입니다. –
"대부분 CPU에 바인딩 된 프로세스조차도"- 이러한 프로세스는 "I/O 바인딩"될 수도 있습니다 : 즉 * RAM * I/O. 나는 온보드 캐시에서 주로 데이터를 실행하는 CPU 바운드 프로세스를 찾거나 (또는 만들 수 있다면) 스토리가 다를 것이라고 추측 할 수 있습니다. – ChrisW