내가 하고 싶은 일은 다음과 같습니다. tmpfs에 파일을 넣고 파일 전체(모든 페이지)가 동일한 NUMA 노드에 있는지 확인합니다. 첫째, 저는 이것이 사소한 일이라고 생각했습니다. mmap()
tmpfs 파일을 MAP_SHARED
사용하여 mbind()
원하는 노드에 연결한 다음 복사하기만 하면 됩니다. 그러나 mbind()의 매뉴얼 페이지에서는 이 접근 방식을 명시적으로 제외합니다.
NUMA policy is not supported on a memory-mapped file range
that was mapped with the MAP_SHARED flag.
블리미! 매뉴얼 mbind()
페이지에는 공유 매핑의 경우 프로세스 메모리 정책( 사용)에만 의존할 수 있다고 나와 있습니다 set_mempolicy()
. 그러나 이는 이상적인 것과는 거리가 멀습니다. 저는 다중 스레드 애플리케이션을 실행하고 있으며 어떤 스레드가 복사를 수행하는지 신경쓰지 않고 싶습니다. 차라리 메모리 정책이 tmpfs에 묶여 있었으면 좋겠습니다.파일대신 내 인생을 더 쉽게 만들어줍니다.
이 문제를 해결하는 방법에 대한 아이디어가 있는 사람이 있나요?