[0001]Power and thermal management are becoming more challenging than ever before in all segments of computer-based systems. While in the server domain, the cost of electricity drives the need for low power systems, in mobile systems battery life and thermal limitations make these issues relevant. Optimizing a system for maximum performance at minimum power consumption is usually done using the operating system (OS) to control hardware elements. Most modern OS's use the Advanced Configuration and Power Interface (ACPI) standard, e.g., Rev. 3.0b, published Oct. 10, 2006, for optimizing the system in these areas. An ACPI implementation allows a core to be in different power-saving states (also termed low power or idle states) generally referred to as so-called C1 to Cn states. Similar package C-states exist for package-level power savings.
[0002]When a core is active, it runs at a so-called C0 state, and when the core is idle, it may be placed in a core low power state, a so-called core non-zero C-state. The core C1 state represents the low power state that has the least power savings but can be switched on and off almost immediately, while an extended deep-low power state (e.g., C3) represents a power state where the static power consumption is negligible, but the time to enter into this state and respond to activity (i.e., back to C0) is quite long.
[0003]Package non-zero C-states enable power consumption at lower levels than the package active state (i.e., C0 state). Server workloads rarely drive all cores in same package busy, but even if only one core is active the whole package (including all idle cores) must stay in a high-power C0 state. Since package non-zero C-state entry/exit latency is relatively long (e.g., on the order of 100 to 200 microseconds (.mu.s)), the transient time for all cores being idle usually is not worth using that state, or a performance loss will occur. Thus the OS is unable to take advantage of a package's lower power state benefits, resulting in a package always running at a higher power state than needed.
[Windows Memory Object] Free memory is ready for use; Zeroed memory is pages of memory filled with zeros to prevent later processes from seeing data used by a previous process. Standby memory is memory removed from a process's working set (its physical memory) on route to disk, but is still available to be recalled. Committed memory[1][2] is physical memory in use for which space has been reserved in the paging file so that it can be written to disk. The commit limit is determined by the size of the paging file. If the paging file is enlarged, the commit limit increases.
Reserve a Region in an Address Space
一个进程可以要求系统将自己地址空间的某一部分reserve起来,比如要把0x8080000开头的50M空间预留,就可以使用VirtualAlloc函数(fdwAllocationType=MEM_RESERVE)进行预留。预留以后,系统就不会使用这段空间,但这段空间并没有实际的物理内存与之关联,也就是不能用来存储数据。要想用它来存储数据就要Commit physical storage to the region。Windows总是从系统的paging file中分配这部分physical storage。Committed memory 就是有多少memory被Commit了。
Heap is a region of reserved address space.
Process Working Set
The working set of a process is the set of pages in the virtual address space of the process that are currently resident in physical memory. Memory allocations that are nonpageable such as Address Windowing Extensions (AWE) or large page allocations are not included in the working set[3] .If free memory in the computer is above a threshold, pages are left in the working set of a process, even if they are not in use. When free memory falls below a threshold, pages are trimmed from working sets. If the pages are needed, they will be soft-faulted back into the working set before leaving main memory. It includes both shared and private data. The shared data includes pages that contain all instructions your application executes, including those in your DLLs and the system DLLs. As the working set size increases, memory demand increases.
Private Bytes
The Private Bytes counter indicates the total amount of memory that a process has allocated, not including memory shared with other processes.The Virtual Bytes counter indicates the current size of the virtual address space that the process is using. Some memory leaks appear in the data file as an increase in private bytes allocated. Other memory leaks show up as an increase in the virtual address space.
Some related columns in the Task Manager[4]
Memory - Working Set |
Amount of memory in the private working set plus the amount of memory the process is using that can be shared by other processes. |
Memory - Peak Working Set |
Maximum amount of working set memory used by the process. |
Memory - Working Set Delta |
Amount of change in working set memory used by the process. |
Memory - Private Working Set |
Subset of working set that specifically describes the amount of memory a process is using that cannot be shared by other processes. |
Memory - Commit Size |
Amount of virtual memory that is reserved and commited for use by a process. 注:private 给这个process的,不包含share部分? |
Memory - Paged Pool |
Amount of committed virtual memory for a process that can be written to another storage medium, such as the hard disk. |
Memory - Non-paged Pool |
Amount of committed virtual memory for a process that cannot be written to another storage medium. |
Page Faults |
Number of times data has to be retrieved from disk for a process because it was not found in memory. The page fault value accumulates from the time the process started. |
Page Fault Delta |
The change in the number of page faults since the last update. |