Function report |
Source Code:mm\vmscan.c |
Create Date:2022-07-28 14:18:51 |
Last Modify:2022-05-23 13:41:30 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:Determine how aggressively the anon and file LRU lists should be* scanned
Proto:static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc, unsigned long *nr)
Type:void
Parameter:
Type | Parameter | Name |
---|---|---|
struct lruvec * | lruvec | |
struct scan_control * | sc | |
unsigned long * | nr |
2247 | memcg = lruvec_memcg(lruvec) |
2248 | swappiness = mem_cgroup_swappiness(memcg) |
2249 | reclaim_stat = reclaim_stat |
2251 | denominator = 0 |
2252 | pgdat = lruvec_pgdat(lruvec) |
2260 | If Not Can pages be swapped as part of reclaim? || mem_cgroup_get_nr_swap_pages(memcg) <= 0 Then |
2261 | scan_balance = SCAN_FILE |
2262 | Go to out |
2272 | If cgroup_reclaim(sc) && Not swappiness Then |
2273 | scan_balance = SCAN_FILE |
2274 | Go to out |
2282 | If Not Scan (total_size >> priority) pages at once && swappiness Then |
2283 | scan_balance = SCAN_EQUAL |
2284 | Go to out |
2291 | scan_balance = SCAN_ANON |
2292 | Go to out |
2300 | scan_balance = SCAN_FILE |
2301 | Go to out |
2304 | scan_balance = SCAN_FRACT |
2310 | anon_prio = swappiness |
2331 | If Value for the false possibility is greater at compile time(recent_scanned[0] > anon / 4) Then |
2332 | recent_scanned[0] /= 2 |
2336 | If Value for the false possibility is greater at compile time(recent_scanned[1] > file / 4) Then |
2337 | recent_scanned[1] /= 2 |
2346 | ap = anon_prio * (recent_scanned[0] + 1) |
2349 | fp = file_prio * (recent_scanned[1] + 1) |
2355 | denominator = ap + fp + 1 |
2356 | out : |
2358 | file = is_file_lru(lru) |
2363 | lruvec_size = lruvec_lru_size - Returns the number of pages on the given LRU list.*@lruvec: lru vector*@lru: lru to use*@zone_idx: zones to consider (use MAX_NR_ZONES for the whole LRU list) |
2367 | If protection Then |
2397 | cgroup_size = mem_cgroup_size(memcg) |
2400 | cgroup_size = max - return maximum of two values of the same or compatible types*@x: first value*@y: second value(cgroup_size, protection) |
2402 | scan = lruvec_size - lruvec_size * protection / cgroup_size |
2411 | Else |
2412 | scan = lruvec_size |
2421 | If Not scan && Not mem_cgroup_online(memcg) Then scan = min - return minimum of two values of the same or compatible types*@x: first value*@y: second value(lruvec_size, SWAP_CLUSTER_MAX) |
2425 | Case scan_balance == SCAN_EQUAL |
2427 | Break |
2428 | Case scan_balance == SCAN_FRACT |
2440 | Break |
2441 | Case scan_balance == SCAN_FILE |
2442 | Case scan_balance == SCAN_ANON |
2449 | Default |
2451 | BUG() |
Name | Describe |
---|---|
shrink_lruvec |
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 |