Suppose that there are two nodes and each node has 16GiB memory size. When a process needs pages from the kernel, I understand that __alloc_pages_nodemask() will do allocation for the process. In the function, I noticed that if there is no available page on a zone (or a node) while it loops for_next_zone_zonelist_nodemask() (a macro in get_page_from_freelist()), the kernel would try to reclaim reclaimable page from the zone. This loops will continue until the kernel gets a free page. This means that the kernel would try to find a page from the remote node if there is no free page in the local node. My question is that when the kernel starts to allocate a page from the remote node due to no enough memory in the local node, does the kernel always check there is a reclaimable page from the local node? In other words, does the kernel always start to find a page from the very first entry (which would be the local node and the first zone) in the loop? In my perspective, if the kernel starts to allocate in the remote node, I think the scheduler should move the process to the remote node and it will allocate a page in the remote node at first in the loop (in the process view, the node would be the local now since it is moved). Would the scheduler do that? Regards, WK Choe _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies