멀티 코어 시스템에서 파일 I/O 및 Unix 파이프의 성능 제한

멀티 코어 시스템에서 파일 I/O 및 Unix 파이프의 성능 제한

일부 파일 IO를 수행하는 프로그램이 있는 일부 벤치마크를 실행하고 있습니다. 새 디렉터리를 만들고 여기에 일부 파일을 쓰고 읽은 다음 삭제합니다. 이 프로그램을 여러 코어에서 실행하면 한 번에 더 많은 인스턴스가 발생하여 예상한 결과를 얻을 수 있습니다(속도가 약간 향상되고 시스템의 한계에 도달하면 속도가 평준화되기 시작합니다. 1코어에서 12코어로 이동하면 프로그램이 8.5배 더 빠릅니다.)

파일 IO를 사용하지 않는 이 프로그램의 두 번째 변형이 있습니다. 대신, 파이프를 열고 해당 파이프를 통해 데이터를 전달하여 명령을 함께 연결합니다. 한 번에 최대 3개의 파이프가 열립니다. 순차적으로 실행하더라도 이 프로그램은 자연스럽게 훨씬 더 빨라집니다(약 10배). 그러나 더 많은 코어를 추가하기 시작하면서 3개의 코어에서 속도가 정말 빨라지기 시작했고 2배의 속도 향상으로 완전히 평탄해지는 것처럼 보였습니다. 3코어에서 12코어로 성능 저하가 없습니다. 실행 속도는 거의 변하지 않습니다. 개선이나 저하가 없습니다.

일부 리소스가 부족하여 이해가 되지 않습니다. 제가 모르는 Unix 파이프와 관련된 상한선이 있는 것 같아요. 온라인에서 자세한 내용을 찾으려고 노력했지만 의심스러운 내용은 찾지 못했습니다. 파이프를 통해 한 번에 최대 100자를 보냅니다.한 번에 열 수 있는 Unix 파이프 수에 제한이 있나요? 더 많은 파이프를 열기 위해 더 많은 작업자를 추가할 수 있는데 성능이 증가하거나 감소하지 않는 방법이 이상하다는 것을 알았습니다.

관련 정보