| Function report | 
| Source Code: mm\vmscan.c | Create Date:2022-07-28 14:18:11 | 
| Last Modify:2022-05-23 13:41:30 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:pgdat->lru_lock is heavily contended. Some of the functions that* shrink the lists perform better by taking out a batch of pages* and working on them outside the LRU lock.* For pagecache intensive workloads, this function is the hottest
Proto:static unsigned long isolate_lru_pages(unsigned long nr_to_scan, struct lruvec *lruvec, struct list_head *dst, unsigned long *nr_scanned, struct scan_control *sc, enum lru_list lru)
Type:unsigned long
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| unsigned long | nr_to_scan | |
| struct lruvec * | lruvec | |
| struct list_head * | dst | |
| unsigned long * | nr_scanned | |
| struct scan_control * | sc | |
| enum lru_list | lru | 
| 1654 | nr_taken = 0 | 
| 1655 | unsigned long nr_zone_taken[MAX_NR_ZONES] = {0} | 
| 1656 | unsigned long nr_skipped[MAX_NR_ZONES] = {0, } | 
| 1657 | skipped = 0 | 
| 1659 | LIST_HEAD(pages_skipped) | 
| 1660 | mode = If Can mapped pages be reclaimed? Then 0 Else Isolate unmapped pages | 
| 1662 | total_scan = 0 | 
| 1663 | scan = 0 | 
| 1664 | When scan < nr_to_scan && Not list_empty - tests whether a list is empty*@head: the list to test. cycle | 
| 1667 | page = lru_to_page(src) | 
| 1668 | prefetchw_prev_lru_page(page, src, flags) | 
| 1670 | VM_BUG_ON_PAGE(!PageLRU(page), page) | 
| 1673 | total_scan += nr_pages | 
| 1675 | If page_zonenum(page) > The highest zone to isolate pages for reclaim from Then | 
| 1677 | nr_skipped[page_zonenum(page)] += nr_pages | 
| 1678 | Continue | 
| 1695 | nr_zone_taken[page_zonenum(page)] += nr_pages | 
| 1697 | Break | 
| 1702 | Continue | 
| 1704 | Default | 
| 1705 | BUG() | 
| 1716 | If Not list_empty - tests whether a list is empty*@head: the list to test. Then | 
| 1720 | When zid < MAX_NR_ZONES cycle | 
| 1721 | If Not nr_skipped[zid] Then Continue | 
| 1724 | __count_zid_vm_events(PGSCAN_SKIP, zid, nr_skipped[zid]) | 
| 1725 | skipped += nr_skipped[zid] | 
| 1728 | nr_scanned = total_scan | 
| 1729 | trace_mm_vmscan_lru_isolate( The highest zone to isolate pages for reclaim from , Allocation order , nr_to_scan, total_scan, skipped, nr_taken, mode, lru) | 
| 1732 | Return nr_taken | 
| Name | Describe | 
|---|---|
| shrink_inactive_list | shrink_inactive_list() is a helper for shrink_node(). It returns the number* of reclaimed pages | 
| shrink_active_list | 
| Source code conversion tool public plug-in interface | X | 
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |