Documentation/admin-guide/cgroup-v1/memcg_test.rst

Source file repositories/reference/linux-study-clean/Documentation/admin-guide/cgroup-v1/memcg_test.rst

File Facts

System
Linux kernel
Corpus path
Documentation/admin-guide/cgroup-v1/memcg_test.rst
Extension
.rst
Size
8607 bytes
Lines
343
Domain
Support Tooling And Documentation
Bucket
Documentation
Inferred role
Support Tooling And Documentation: documentation
Status
atlas-only

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

=====================================================
Memory Resource Controller(Memcg) Implementation Memo
=====================================================

Last Updated: 2010/2

Base Kernel Version: based on 2.6.33-rc7-mm(candidate for 34).

Because VM is getting complex (one of reasons is memcg...), memcg's behavior
is complex. This is a document for memcg's internal behavior.
Please note that implementation details can be changed.

(*) Topics on API should be in Documentation/admin-guide/cgroup-v1/memory.rst)

0. How to record usage ?
========================

   2 objects are used.

   page_cgroup ....an object per page.

	Allocated at boot or memory hotplug. Freed at memory hot removal.

   swap_cgroup ... an entry per swp_entry.

	Allocated at swapon(). Freed at swapoff().

   The page_cgroup has USED bit and double count against a page_cgroup never
   occurs. swap_cgroup is used only when a charged page is swapped-out.

1. Charge
=========

   a page/swp_entry may be charged (usage += PAGE_SIZE) at

	mem_cgroup_try_charge()

2. Uncharge
===========

  a page/swp_entry may be uncharged (usage -= PAGE_SIZE) by

	mem_cgroup_uncharge()
	  Called when a page's refcount goes down to 0.

	mem_cgroup_uncharge_swap()
	  Called when swp_entry's refcnt goes down to 0. A charge against swap
	  disappears.

3. charge-commit
=======================

	Memcg pages are charged in two steps:

		- mem_cgroup_try_charge()
		- commit_charge()

	At try_charge(), there are no flags to say "this page is charged".
	at this point, usage += PAGE_SIZE.

	At commit(), the page is associated with the memcg.

Under below explanation, we assume CONFIG_SWAP=y.

4. Anonymous
============

	Anonymous page is newly allocated at
		  - page fault into MAP_ANONYMOUS mapping.
		  - Copy-On-Write.

Annotation

Implementation Notes