我正在做一些需要利用Linux交换功能的研究。我添加了一个仅供我使用的新区域,其他应用程序或内核本身无法从该区域分配页面。当区域到达交换水标记时,它会触发kswapd并尝试交换区域内的某些页面。但是,问题是该区域内的所有使用情况统计信息都是0(如NR_INACTIVE_ANON
,NR_INACTIVE_FILE
)。因此kswapd
将跳过该区域。我通过修改当前的vmalloc
例程来从该区域分配内存。我将页面标志设置为可回收。同样从/proc/pagetypes
输出,我可以看到来自我的区域的所有已分配页面都是可回收的。我不知道为什么我的区域里没有统计数据。
这是zoneinfor的输出:
nr_free_pages 752735
nr_inactive_anon 0
nr_active_anon 0
nr_inactive_file 0
nr_active_file 0
nr_unevictable 0
nr_mlock 0
nr_anon_pages 0
nr_mapped 0
nr_file_pages 0
nr_dirty 0
nr_writeback 0
nr_slab_reclaimable 0
nr_slab_unreclaimable 0
nr_page_table_pages 0
nr_kernel_stack 0
nr_unstable 0
nr_bounce 0
nr_vmscan_write 0
nr_writeback_temp 0
nr_isolated_anon 0
nr_isolated_file 0
nr_shmem 0