증가하는 목록에만 사용되는 mmap/MAP_ANONYMOUS
과 함께 다수의 페이지를 할당했습니다.여러 개의 익명 페이지에 대한 사전 오류
커널을 Linux에서 액세스하기 전에 여러 페이지를 미리 지능적으로 사전 오류 처리 할 수있는 방법이 있습니까?
MAP_POPULATE
플래그는 MAP_ANONYMOUS
에 대해 운영되지 않는 것으로 보입니다.
내가 할 수있는 원인 스타일의 포인터를 통해 단지 루프의 : 새로운 상황 변화에 액세스 각각의 새로운 페이지에 대한 강제 때문에
for (i = 1; i < num_pages_to_prefault; i++)
*((char *)pointer_to_current_page + i * sysconf(_SC_PAGE_SIZE)) = 0;
그러나 이것은 어느 스레드 안전 않으며, 특히 효율적이다.
는 내가 원하는 만 하나 컨텍스트 스위치의 원인과 페이지의 번호를 prefault하거나 매핑 또는 내 상주 세트에 이미되지 않은 경우 그대로 그들을 떠나
prefault_memory(void * start_address, size_t length);
같은 것입니다.
'mlock'은 어떻게 사용합니까? –
필자는 한번도 사용하지 않았지만'madvise()'를'MADV_WILLNEED' 또는'MADV_SEQUENTIAL'과 함께 사용했을 가능성이 있습니까? – Macattack
@Macattack 고맙습니다. 'MADV_WILLNEED'는 내가 필요한 것입니다. Linux는 이러한 조언을 따르는 것 같습니다. 앞서 4Mb의 덩어리에서 오류가 발생하면 속도가 25 % 나 빨라집니다. 이 글을 대답으로 올린다면 나는 당신에게 신용을 줄 것이다. –