How Does Activity Monitor Work?

Discussion in 'Mac Programming' started by ArtOfWarfare, Jan 10, 2013.

  1. ArtOfWarfare macrumors G3


    Nov 26, 2007
    Does anyone know from whence Activity Monitor fetches all the data it shows?

    Namely, I'd like to find the breakdown of CPU and RAM usage of each process running on the computer in my app.

    An ideal solution would be MAS-permitted but I'd be happy with any solutions anyone has.

    I'm in a similar boat to this person:

    Looking at other sources, I found someone saying that the kernel keeps track of memory and CPU usage of each application.

    To be clear, the data I want is exactly what activity monitor shows... I've read other places that there are five different types of memory, and I don't care that much about such details... Whatever is good enough for Activity Monitor is good enough for me.
  2. robbieduncan Moderator emeritus


    Jul 24, 2002
  3. Ap0ks macrumors 6502

    Aug 12, 2008
    Cambridge, UK
    Yeah most likely using DTrace or simply a GUI to the top command.
  4. chown33 macrumors 604

    Aug 9, 2009
    Sailing beyond the sunset
    Start by looking at the man page for the 'top' command. See if it has the ability to print every specific datum you want.

    If it does, then go get the source for 'top' from Apple's Darwin website, and see how 'top' gets each specific datum. I suspect 'top' uses the sysctl() function (man section 3) for a lot of things, and the various KERN_PROC mibs or names. But the best approach is to look at top's source.

    If you need some datum that top doesn't display, and you can't figure out a sysctl() name to use, ask again.

    Notice when running Activity Monitor that pmTool, which Activity Monitor uses to gather data, runs as root, which means you may be restricted in deploying to the Mac App Store.

Share This Page