1

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_memory(void * start_address, size_t length);

これにより、コンテキストの切り替えが1 回だけ発生し、多数のページが事前にフォールトされるか、マップされていないか、既に常駐セットにある場合はそのままになります。

4

1 に答える 1