캐시 메모리 누수(또는 누수처럼 보이는 경우)로 인해 프로그램 속도 저하

캐시 메모리 누수(또는 누수처럼 보이는 경우)로 인해 프로그램 속도 저하

이상한 문제가 있는 것 같습니다.메모리 캐시 누수(메모리 누수가 아님) 프로그램 속도가 느려집니다.

먼저 무대를 마련하겠습니다. 재현 가능하게(신경절을 사용하여 모니터링) 클러스터에서 캐시 메모리가 상대적으로 느리게 증가하는 것을 확인했습니다. 메모리가 전체 메모리(인텔 골드, 32코어, 192Gb)의 약 2/3로 커지면 프로그램 실행 속도가 약 1.5배 느려집니다. 캐시를 지우고 sync ; echo 3 > /proc/sys/vm/drop_caches" "를 사용하여 디스크를 동기화하면(어떤 경우인지 테스트하지 않음) 프로그램 속도가 빨라집니다(약 1.5배 빨라짐).

문제는 I/O와 관련되어 있습니다. I/O를 수행하는 CPU에서만 캐시 누수가 표시됩니다. 프로그램은 상당한 양의 I/O를 수행하지만 많지는 않습니다(10-40Mb). ifort 및 -assume buffered_io를 사용하여 컴파일합니다. I/O가 마지막에 캐시 파일을 남기는 것처럼 보이는데, 이는 실제로 "캐시 메모리 누수"입니다.

이 질문은 이 "누출"이 발생하는 이유, 이를 방지하는 방법(예: 3시간마다 캐시를 ​​무차별 대입 크론 청소) 및 비연속적인 작업에 대해 프로그램 속도가 너무 느려지는 방법/이유(벡터 작업이 비효율적임)를 포함하여 여러 부분으로 구성됩니다. 기억은 추측일 뿐입니다. 믿을 수 있을지 모르겠습니다.)

치료법에 대한 모든 제안과 이를 더 잘 이해할 수 있는 방법이 도움이 될 것입니다.

이것은 큰 프로그램이므로 작은 코드로 복제하는 것은 관련이 없을 수 있습니다.

관련 정보