Changeset View
Changeset View
Standalone View
Standalone View
head/sys/vm/vm_pageout.c
Show First 20 Lines • Show All 2,098 Lines • ▼ Show 20 Lines | while (TRUE) { | ||||
* a shortfall. | * a shortfall. | ||||
*/ | */ | ||||
shortage = vm_pageout_active_target(vmd) + addl_shortage; | shortage = vm_pageout_active_target(vmd) + addl_shortage; | ||||
vm_pageout_scan_active(vmd, shortage); | vm_pageout_scan_active(vmd, shortage); | ||||
} | } | ||||
} | } | ||||
/* | /* | ||||
* vm_pageout_init initialises basic pageout daemon settings. | * Initialize basic pageout daemon settings. See the comment above the | ||||
* definition of vm_domain for some explanation of how these thresholds are | |||||
* used. | |||||
*/ | */ | ||||
static void | static void | ||||
vm_pageout_init_domain(int domain) | vm_pageout_init_domain(int domain) | ||||
{ | { | ||||
struct vm_domain *vmd; | struct vm_domain *vmd; | ||||
struct sysctl_oid *oid; | struct sysctl_oid *oid; | ||||
vmd = VM_DOMAIN(domain); | vmd = VM_DOMAIN(domain); | ||||
vmd->vmd_interrupt_free_min = 2; | vmd->vmd_interrupt_free_min = 2; | ||||
/* | /* | ||||
* v_free_reserved needs to include enough for the largest | * v_free_reserved needs to include enough for the largest | ||||
* swap pager structures plus enough for any pv_entry structs | * swap pager structures plus enough for any pv_entry structs | ||||
* when paging. | * when paging. | ||||
*/ | */ | ||||
if (vmd->vmd_page_count > 1024) | |||||
vmd->vmd_free_min = 4 + (vmd->vmd_page_count - 1024) / 200; | |||||
else | |||||
vmd->vmd_free_min = 4; | |||||
vmd->vmd_pageout_free_min = 2 * MAXBSIZE / PAGE_SIZE + | vmd->vmd_pageout_free_min = 2 * MAXBSIZE / PAGE_SIZE + | ||||
vmd->vmd_interrupt_free_min; | vmd->vmd_interrupt_free_min; | ||||
vmd->vmd_free_reserved = vm_pageout_page_count + | vmd->vmd_free_reserved = vm_pageout_page_count + | ||||
vmd->vmd_pageout_free_min + (vmd->vmd_page_count / 768); | vmd->vmd_pageout_free_min + vmd->vmd_page_count / 768; | ||||
vmd->vmd_free_min = vmd->vmd_page_count / 200; | |||||
vmd->vmd_free_severe = vmd->vmd_free_min / 2; | vmd->vmd_free_severe = vmd->vmd_free_min / 2; | ||||
vmd->vmd_free_target = 4 * vmd->vmd_free_min + vmd->vmd_free_reserved; | vmd->vmd_free_target = 4 * vmd->vmd_free_min + vmd->vmd_free_reserved; | ||||
vmd->vmd_free_min += vmd->vmd_free_reserved; | vmd->vmd_free_min += vmd->vmd_free_reserved; | ||||
vmd->vmd_free_severe += vmd->vmd_free_reserved; | vmd->vmd_free_severe += vmd->vmd_free_reserved; | ||||
vmd->vmd_inactive_target = (3 * vmd->vmd_free_target) / 2; | vmd->vmd_inactive_target = (3 * vmd->vmd_free_target) / 2; | ||||
if (vmd->vmd_inactive_target > vmd->vmd_free_count / 3) | if (vmd->vmd_inactive_target > vmd->vmd_free_count / 3) | ||||
vmd->vmd_inactive_target = vmd->vmd_free_count / 3; | vmd->vmd_inactive_target = vmd->vmd_free_count / 3; | ||||
▲ Show 20 Lines • Show All 127 Lines • Show Last 20 Lines |