파워PC에서 구동되는 다양한 코어들의 성능을 비교해 보려고 합니다. 이것은 내 테스트 중 하나입니다.
dd if=/dev/zero of=/dev/null bs=1024 count=1000000
커널 버전 중 하나에서 보았습니다.
8.595918 seconds, 113.6MB/s
다른 커널 버전에서는 다음이 필요합니다.
8.182470 seconds, 119.3MB/s
내 문제는 내 테스트가 기본적으로 RAM에서 읽고/dev/null에 쓰는 것입니다. 시스템 관점에서 무엇을 설명할 수 있나요? 병목현상이 무엇인지 설명할 수 있나요? 데이터가 충분하지 않은 경우 의미 있는 정보를 얻으려면 어떻게 해야 할까요?
답변1
5% 차이는 노이즈로 간주될 수 있습니다. 즉, 두 테스트 결과 간에 차이가 있다고 결론을 내릴 수 없습니다. dd
CPU를 가끔 실행하고 사용하는 것 외에 프로세스도 있고, 두 테스트를 위한 환경도 동일하지 않다는 점을 잊지 마세요 .
테스트 프로세스의 실시간 우선순위를 지정하고 테스트를 몇 번 반복하면 더 나은 데이터를 얻을 수 있습니다. 어쨌든 병목 현상은 CPU와 메모리 액세스입니다. I/O가 없습니다.
답변2
시스템 관점에서 무엇을 설명할 수 있나요?
약 115MB/s의 속도로 1024 바이트 블록 dd
에서 데이터를 복사하는 것으로 생각할 수 있습니다 . 그다지 많지 않습니다./dev/zero
/dev/null
각 블록 dd
복사에는 두 개의 시스템 호출(하나는 to read()
, 다른 하나는 to ) 이 필요합니다 write()
. 이러한 시스템 호출은 오버헤드를 발생시키며 호출당 1024바이트라는 상당한 영향을 미칠 수 있습니다. 블록 속도가 너무 작기 때문에 시스템이 제로 블록을 얼마나 빨리 전송하는지 측정할 수 없습니다. 그러나 원시 시스템 호출 오버헤드도 측정하지 않습니다.예각 호출에 대해 처리되는 1024바이트와 IO 호출에 필요한 장부가 필요합니다. 전화를 거는 것과 꼭 같지도 않습니다 getpid()
.