Function report |
Source Code:mm\vmscan.c |
Create Date:2022-07-28 14:19:56 |
Last Modify:2022-05-23 13:41:30 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:For kswapd, balance_pgdat() will reclaim pages across a node from zones* that are eligible for use by the caller until at least one zone is* balanced.* Returns the order kswapd finished reclaiming at.
Proto:static int balance_pgdat(pg_data_t *pgdat, int order, int classzone_idx)
Type:int
Parameter:
Type | Parameter | Name |
---|---|---|
pg_data_t * | pgdat | |
int | order | |
int | classzone_idx |
3577 | unsigned long zone_boosts[MAX_NR_ZONES] = {0, } |
3580 | struct scan_control sc = { This context's GFP mask = GFP_KERNEL, Allocation order = order, Can mapped pages be reclaimed? = 1, } |
3588 | __fs_reclaim_acquire() |
3590 | Disable counters |
3597 | nr_boost_reclaim = 0 |
3598 | When i <= classzone_idx cycle |
3599 | zone = node_zones + i |
3603 | nr_boost_reclaim += watermark_boost |
3604 | zone_boosts[i] = watermark_boost |
3606 | boosted = nr_boost_reclaim |
3608 | restart : |
3610 | Do |
3612 | bool raise_priority = true |
3628 | If buffer_heads_over_limit Then |
3630 | zone = node_zones + i |
3635 | Break |
3646 | balanced = Returns true if there is an eligible zone balanced for the request order* and classzone_idx |
3647 | If Not balanced && nr_boost_reclaim Then |
3648 | nr_boost_reclaim = 0 |
3649 | Go to restart |
3657 | If Not nr_boost_reclaim && balanced Then Go to out |
3679 | age_active_anon(pgdat, & sc) |
3690 | nr_soft_scanned = 0 |
3691 | nr_soft_reclaimed = mem_cgroup_soft_limit_reclaim(pgdat, Allocation order , This context's GFP mask , & nr_soft_scanned) |
3713 | __fs_reclaim_release() |
3714 | ret = try_to_freeze() |
3715 | __fs_reclaim_acquire() |
3724 | nr_boost_reclaim -= min - return minimum of two values of the same or compatible types*@x: first value*@y: second value(nr_boost_reclaim, nr_reclaimed) |
3731 | If nr_boost_reclaim && Not nr_reclaimed Then Break |
3734 | If raise_priority || Not nr_reclaimed Then Scan (total_size >> priority) pages at once -- |
3736 | When Scan (total_size >> priority) pages at once >= 1 cycle |
3738 | If Not Number of pages freed so far during a call to shrink_zones() Then Number of 'reclaimed == 0' runs ++ |
3741 | out : |
3743 | If boosted Then |
3746 | When i <= classzone_idx cycle |
3747 | If Not zone_boosts[i] Then Continue |
3751 | zone = node_zones + i |
3752 | spin_lock_irqsave( & Primarily protects free_area , flags) |
3764 | snapshot_refaults(NULL, pgdat) |
3765 | __fs_reclaim_release() |
3767 | set_task_reclaim_state(current process, NULL) |
3775 | Return Allocation order |
Name | Describe |
---|---|
kswapd | The background pageout daemon, started as a kernel thread* from the init process.* This basically trickles out pages so that we have _some_* free memory available even if there is no other activity* that frees anything up |
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 |