none
What is commit charge? (in task manager)

    Question

  • Hello!
    I have questions about memory and it's named in task manager.
    For expl - "total commit charge". What is it?
    I found some information here http://blogs.msdn.com/ntdebugging/archive/2007/10/10/the-memory-shell-game.aspx and here http://en.wikipedia.org/wiki/Commit_charge but didn't understand what exectly it meens!?
    My printscreen with task manager and process explorer
    http://img38.imageshack.us/img38/3619/commitcharge2.gif
    Friday, July 03, 2009 1:48 PM

Answers

  • Hi,

    In short, my understanding is Virtual Memory is combined with Physical Memory and page files on disk. Committed Memory, also called committed virtual memory, is used or allocated Virtual Memory.

    The amount of committed virtual memory for all the active processes is called the current commit charge. When a process commits a region of virtual memory, the operating system guarantees that it can maintain all the data the process stores in the memory either in physical memory or on disk.  That means that a process can run up against another limit: the commit limit.

    I suggest reading the following article, especially the "Committed Memory" section.
    Pushing the Limits of Windows: Virtual Memory
    http://blogs.technet.com/markrussinovich/archive/2008/11/17/3155406.aspx

    Thanks.

    This posting is provided "AS IS" with no warranties, and confers no rights.
    Wednesday, July 08, 2009 6:32 AM
    Moderator

All replies

  • hi tolot37,

    The commit charge corresponds to virtual memory architecuture.There are tons of info on web regarding the virtual memory architecture, and unless you code the virtual memory / debug it you will not be able to understand many concepts of virtual memory such as ( pages, pagetable, Transaction look aside buffer , page fault etcc...)

    Also you have to understand the process architecture ( not processor ) along with thread architecuture ( major ones are understanding process control block and thread control block.)

    But i would like to simplify the concepts and try to give out my best.

    windows operating system uses 2 major memory models

    a) main memory model

    b) virtual memroy model

    many users have a knowledge about RAM / main memory , but to understand virtual memory a user / programer need to understand many terms memory architecutre.


    virtual memroy is nothing but using the disk space to provide applicatoins a feel of using contiguous memory address space. windows OS has 4GB reserved for user mode and 4GB for kernel mode.

    to simplify you need to understand major concepts like

    page : A page is a ocntiguous block of address space / virtual memory they are divided into 4kbytes. So internally applications are divided into pages in a broader picture.

    By said this there is a corresponding page table which is a datastructure which stores logical to physical address mappings ( virtual memory to physical memory )

    So now commit charge is nothing but total amount of virtual address space and in other words you can think of commit charge as maximum pagefile usage.


    when you open any application the commit charge increases and closed it decreases because its just the usage of the total pagefile.

     

    some of the important issue which one might look with respect to commit charge is

    a) commit charge keeps increasing but not decreasing even when applications are opened or closed.

    b) commit charge increases and decreases with only some applications installed

    at this point you need to check how the page file is configured.

    is there any issue with the process / application which might not close the handles etc...


    hope this info is useful.

     


    sainath !analyze
    Sunday, July 05, 2009 2:35 PM
    Moderator
  • Sainath IRP_MJ_CREATE

    Thx for answer.
    I know about virtual memory of course :) And about "pages, tables, page file" and so on too. I read , David Solomon\Mark Russinovich's book "Microsoft Windows Internals"...
    But there are nothing about commit memory. I have not casually given the reference to article http://blogs.msdn.com/ntdebugging/archive/2007/10/10/the-memory-shell-game.aspx because  there is a definition of the term "commit memory". But it's not clear too.

    "Committed Memory –  When an application touches a virtual memory page (reads/write/programmatically commits) the page becomes a committed page.  It is now backed by a physical memory page.  This will usually be a physical RAM page, but could eventually be a page in the page file on the hard disk, or it could be a page in a memory mapped file on the hard disk.  The memory manager handles the translations from the virtual memory page to the physical page.   A virtual page could be in located in physical RAM, while the page next to it could be on the hard drive in the page file."

    But is lower in comments David Solomon gives the corrections:

    Committed Memory – "When an application touches a virtual memory page the page becomes a committed page.  It is now backed by a physical memory page"

    Not quite: a page becomes a "committed page" when an application commits virtual memory.  At that time, the Memory Manager deducts from the system commit limit and charges it to the Commit Charge Total.  If and when it is actually touched, then the memory manager backs it with a physical page (that part you had correctly).

    Now I have completely got confused :) What is commit memory? Just virtual memory? These two terms are equivalent? And "total commit memory" == "total virtual memory" of all app and OS which now in use? But by screenshot from my server it not so. (http://img38.imageshack.us/img38/3619/commitcharge2.gif)

    You said "commit charge is nothing but total amount of virtual address space" - adress space of all app and OS? Or what? I think "no" anyway - If you sum all virtual memory of all applications and OS (like "paged kernel memory") it will not equivalent "commit charge". (look to my screenshot)
    (But certainly that we name virtual memory? In task manager and process explorer it's two different terms.)

    More logical definition gives in the WiKi:
    "commit charge is a term used in Microsoft Windows operating systems to describe the total amount of virtual address space for which the backing store is the pagefile"
    Ah! May be commit memory is just piece of virtual memory for which the backing store is the pagefile? (but it's strange def. too -> if app has real representation in real memory like hard drive -> it's now must be "real memory"... not "part of virtual").

    We can try to consider it from other point of view. There are another term in task manager (it really "cool" app) - "commit charge limit" -> It is the sum of total amount of real memory and size of a page file. I am right? This term suggests that "total commit memory" (or total commit charge) is the sum of used memory - as "real memory" and "virtual memory in a page file"? But it besides will not be coordinated to my screenshot :(

    What ideas? I will be glad to any explanations.
    Sunday, July 05, 2009 9:33 PM
  • Hi,

    In short, my understanding is Virtual Memory is combined with Physical Memory and page files on disk. Committed Memory, also called committed virtual memory, is used or allocated Virtual Memory.

    The amount of committed virtual memory for all the active processes is called the current commit charge. When a process commits a region of virtual memory, the operating system guarantees that it can maintain all the data the process stores in the memory either in physical memory or on disk.  That means that a process can run up against another limit: the commit limit.

    I suggest reading the following article, especially the "Committed Memory" section.
    Pushing the Limits of Windows: Virtual Memory
    http://blogs.technet.com/markrussinovich/archive/2008/11/17/3155406.aspx

    Thanks.

    This posting is provided "AS IS" with no warranties, and confers no rights.
    Wednesday, July 08, 2009 6:32 AM
    Moderator
  • I summed the total virtual memory that had been allocated and the physical RAM and it came really close to what showed in task manager in the Performence view. This on on Windows 7. I havent checked an XP or Server yet but would bet on the same results. XP shows PF Usage in the place where 7 or Vista show actual physical memory usage. The Commit Charge  is listed on all though in the Task Manager\Performence tab.

     Knowledge of pagefiles is worth looking into. There are a few things that can be done to optimize them and they can be cleared at shutdown for security reasons such as a password or personal info that was paged when you were maxing out your RAM. I clear mine every now and then and change the registry entry back to it's default of 0 You can leave it to clear at shutdown if you don't mind the extra time it takes. The first time you do it you will think that there's something wrong but there's not. It can take a while (especially if you have a system managed size that has grown). The way I see it is that it is virtual RAM and there shouldn't be anything in there that needs to be saved because RAM is volitile. I have used Ready Boost and feel the same about that. It can be re-formatted and reallocated for Ready Boost. I also don't think that you need to Defrag a pagefile either, its supposed to go away like RAM but it won't unless you tell it to!

    Friday, January 28, 2011 2:34 AM