Inactive memory

Discussion in 'OS X Mountain Lion (10.8)' started by atteligibility, Jan 18, 2013.

  1. macrumors regular

    Joined:
    Sep 14, 2012
    #1
    - I have a Macbook Pro 2009, with ML 10.8.2, 8Gb of RAM. I frequently run into insufficient memories, slowdowns and beach ball. The slowdowns ALWAYS happen when FREE memory gets to 0 (typical inactive memory is 3Gb).
    - I used to believe that MacOS was behaving as it should and start releasing and using the inactive memory. However, every single time my free memory gets to 0, I get the beach ball, regardless of the amount of inactive memory.
    - So I have now started to believe that MacOS just wasn't usint ianctive memory as it should.
    - I since got an iMac, I installed 32Gb to make sure I don't run into these issues for some time. I am having a similar activity on my iMac as I have on my MacBook Pro. When I am using it actively, I use a similar amount of memory than on my Macbook Pro, i.e. 7-8Gb.
    - However I have noticed that every morning when I awake my iMac, the inactive memory is down to almost 0, while on my Macbook, it stays at high levels (2-3Gb).
    - SO now, I am wondering if there is a problem with my Macbook setup, that makes the inactive memory behave differently.

    My question is: How do we troubleshoot this, is there a way to see which processes are using the inactive memory?
     
  2. macrumors 6502

    b0fh666

    Joined:
    Oct 12, 2012
    Location:
    south
    #2
    probably an useless response, but what the hell...

    what I learned about OSX memory is that 'wired' memory is in use, and 'active' and 'inactive' are the same as 'free' from the usage standpoint...

    also, I did not lie it's swapping manners (actually I never found an OS whose paging I liked, except maybe linux with a tweaked scheduler/VMM but I digress)... anyway I disabled OSX swap, put 16 gigs and never looked back.

    cheers
     
  3. macrumors G4

    wrldwzrd89

    Joined:
    Jun 6, 2003
    Location:
    Solon, OH
    #3
    Inactive memory is defined in OS X as memory that WAS being used by a process in the past (and thus was Wired or Active), but now no longer is. That being the case, I think what you'd want is the memory usage history, not a current snapshot... but I do not know how you'd get either of these things.
     
  4. thread starter macrumors regular

    Joined:
    Sep 14, 2012
    #4
    Yeah, that's the official understanding, yet this would not explain why the system starts beachballing as soon as free gets to 0, with 3Gb of inactive left. Clearly, on my system at least, inactive doesn't behave as free.
     
  5. macrumors 6502

    b0fh666

    Joined:
    Oct 12, 2012
    Location:
    south
    #5
    when I do 'purge' both active and inactive become 'free', that's why I guess they were not being 'used' for real, maybe caching disk sectors or something :D
     
  6. macrumors member

    Joined:
    Jul 25, 2011
    #6
    There's purge command that releases inactive memory that is possible to execute from terminal. When that command executed, from my experience, OS is slowing down to the point of a temporary short freeze.

    So I guess every time MAC OS X tries to release some inactive memory that freezes the system as this presumably blocks running applications from allocating memory or even accessing it.

    I guess they should make this process less intrusive or get rid of "inactive" memory completely and just release it immediately. Seriously there's more complaint about, and I don't remember any appreciation.
     
  7. macrumors 6502

    ElectricSheep

    Joined:
    Feb 18, 2004
    Location:
    Wilmington, DE
    #7
    The purge command can only release inactive pages which have been memory mapped to a file; anonymous memory such as buffers allocated in an application's heap area and other regions of memory are not touched.

    There seems to be an impression that inactive memory is the same as unused memory, but this is not the case. Inactive memory hasn't been accessed in a while and is a good candidate for paging/releasing. However, inactive memory can still contain valid allocated objects. If the operating system were to release them, the next time an application tries to access them it will crash; they must be paged out to disk before they can be released.

    When free memory reaches a low water mark very close to zero, this triggers to kernel to traverse the inactive page list looking for candidate pages to page out and release. Memory-mapped pages can be 'stolen' to the free-page list only if that have not been modified in any way since the last time they were written back to disk. Otherwise, they must be saved to swap. The process of saving to swap is where you are going to encounter slowness and beach-balls as disk operations are many many times slower and must be completed before anything other allocations can continue.
     
  8. macrumors member

    Joined:
    Sep 3, 2011
    #8
    It seems to me that Mac OS X should be more aggressive about dropping buffers/cache when the system is low on memory. Both Windows and Linux seem to handle this better.
     
  9. macrumors 6502

    ElectricSheep

    Joined:
    Feb 18, 2004
    Location:
    Wilmington, DE
    #9
    sysctl provides a few variables that relate to how aggressive the pageout daemon is:

    kern.vm_page_free_target
    kern.vm_page_free_min

    The variables are for number of pages, which you can convert to a memory about by multiplying by a pagesize of 4096 bytes. page_free_min is the trigger level: if the number of free pages go below that level the pageout daemon is called. It will attempt to migrate enough pages from the inactive list to the free list via stealing or pageout until the count reaches the page_free_target.
     
  10. thread starter macrumors regular

    Joined:
    Sep 14, 2012
    #10
    ok, I see. So this would explain why my purge doesn't get my inactive memory lower than 2Gb in some cases.
    Since I don't see the same crazy consumption of inactive memory on my macbook and iMac, I would like to figure out what would be the difference between the two.
    Any idea on how I would get about troubleshooting this? any way to list what applications the objects in inactive memory belong to?
     
  11. macrumors 6502

    ElectricSheep

    Joined:
    Feb 18, 2004
    Location:
    Wilmington, DE
    #11
    Sadly, that would require either a custom kernel build or a kernel extension. The APIs exposed by the kernel only provide information about Active/Inactive/Wired memory at a host level, not at a task level.

    You can use vmmap in the Terminal to view how memory was allocated in a particular task, but I am not aware of any way to associate those mappings to a specific page list in the kernel.
     
  12. macrumors newbie

    Joined:
    Feb 7, 2013
    Location:
    Virginia
    #12
    Purge command to release inactive memory

    I use Autocad for Apple and it not so slowly moves memory to being inactive. And I have read a lot of posts on the web arguing that inactive memory moves seamlessly to active when needed, but I have NEVER found this to be true on my Mac. As the inactive memory grows, and the free memory shrinks, the Mac gets increasingly sluggish until eventually the "wheel" shows its face for a few seconds now and then, and then ultimately the computer crashes. My solution in the past has been to reboot. I finally tired of doing so, and gratefully read this previous post. It works GREAT! Just go to console and type "purge" ... and wait a minute - bingo, tons of free memory back. THANKS.
     

Share This Page