다중 CPU 시스템의 dentry/inode 캐시/메모리 할당자 구성

다중 CPU 시스템의 dentry/inode 캐시/메모리 할당자 구성

CPLEX 성능 벤치마킹 중 이상한 문제가 발생했습니다. 자세한 내용은 블로그에 게시되어 있습니다.https://community.ibm.com/community/user/ai-datascience/blogs/xavier-nodet1/2021/07/08/performance-considerations-for-cplex-on-multiproce. 두 페이지 정도밖에 안 되지만 여기에 복사하고 싶지 않으므로 주요 내용은 다음과 같습니다.

다중 CPU 시스템에서는 NUMA 액세스 시간에 대해 걱정해야 합니다. 코드의 캐시 적중률이 낮고 프로세스를 실행하는 CPU의 메모리 뱅크에 메모리가 할당된 경우 메모리가 다른 메모리 뱅크에 할당된 경우보다 코드가 훨씬 빠르게 실행됩니다. 물론 할당자는 동일한 은행에 할당하는 것을 선호하지만 해당 은행이 완전히 사용되면 할당자는 다른 은행으로 이동합니다. 뱅크가 캐시된 콘텐츠에만 사용되는 경우에도 마찬가지입니다. 이제 어떤 이유로든 dentry/inode 캐시는 CPU0 뱅크에 위치합니다. 따라서 내 코드가 CPU0의 코어에 예약되면 캐시가 뱅크0의 작은 양을 차지하는지 아니면 많은 양을 차지하는지에 따라 성능이 매우 달라집니다. 벤치마킹에는 좋지 않습니다 ...

캐시를 강제로 삭제할 수도 있지만 여기에는 단점이 있습니다. 또한 때때로 대용량 파일을 읽어서 데이터 처리를 시작하기 전에 캐시가 뱅크0을 채울 수 있기 때문에 충분하지 않을 수도 있습니다.

그럼... 다른 메모리 뱅크에서 메모리를 할당하기 전에 캐시를 삭제하는 것을 선호하도록 할당자에게 지시하는 것이 가능한지 궁금합니다.

추신: 참조 블로그에서 vfs_cache_Pressure를 사용하여 이 문제를 완화할 수 있다고 언급했지만 최근에는 이것이 만병통치약이 아니라는 사실을 발견했습니다.

관련 정보