Complete.Org: Mailing Lists: Archives: discussion: June 2004:
[aclug-L] Re: Determining memory usage by a user
Home

[aclug-L] Re: Determining memory usage by a user

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: discussion@xxxxxxxxx
Subject: [aclug-L] Re: Determining memory usage by a user
From: "Jonathan Hall" <flimzy@xxxxxxxxxx>
Date: Tue, 8 Jun 2004 13:26:55 -0500
Reply-to: discussion@xxxxxxxxx

Once I tally (size)-(share) for all processes owned by User-X, then how do I
re-add the shared values only once per instance?

In other words, I want to count the shared memory once only, whether 1 or 25
processes use the shared area of memory.

Incidentally, /proc is where (at least certian implimentations of) proc/top
get their information, according to the reading I've done.

-- Jonathan



----- Original Message -----
From: "John Goerzen" <jgoerzen@xxxxxxxxxxxx>
To: <discussion@xxxxxxxxx>
Sent: Tuesday, June 08, 2004 1:00 PM
Subject: [aclug-L] Re: Determining memory usage by a user


> On Tue, Jun 08, 2004 at 10:42:35AM -0500, Jonathan Hall wrote:
> > If it is at all possible (I'm beginning to think it's not), I need to
find a
> > way to determine how much memory a specific user is using.
>
> It is, but the trick is to first define what you mean by how much memory
> a specific user is using.
>
> The place to start is /proc.  (See proc(5)).  The statm file will be
> most useful.  From the manpage:
>
>        /proc/[number]/statm
>               Provides information about memory status in pages.  The
columns
>               are:
>                size       total program size
>                resident   resident set size
>                share      shared pages
>                trs        text (code)
>                drs        data/stack
>                lrs        library
>                dt         dirty pages
>
> I'm not sure exactly how those numbers tally with ps/top fields.
> You can probably use a formula such as (size - share) to obtain what you
> are after.  Note that units may differ; you'll have to check on that.  A
> page is 4K on i386 systems.  The /proc/[number]/stat file also has
> fields that will probably interest you.
>
> If you are interested in this for enforcement purposes, the ulimit /
> setrlimit() features are probably what you want.  They let the kernel do
> the calculating for you.
>
> -- John
>
> >
> > My first thought was to add the values of the VSZ or RSS fields from
ps's
> > output.  This, however, is worthless:
> >
> > VSZ tells the entire 'virtual memory' usage by each process, which
includes
> > shared memory.  This means that a memory segment used by multiple
processes
> > is counted multiple times.  As an example of how worthless this is, if I
add
> > the VSZ values for every process on my router machine, the result is
712mb
> > of used memory.  That machine has only 32mb of physical RAM and 32mb of
> > swap, so it is physically impossible for the used memory to ever exceed
> > 64mb.
> >
> > The RSS value is also nearly-worthless, as it only reports 'resident'
memory
> > (i.e. memory not in swap space).  I have been unable to determine how
the
> > RSS value treats shared memory, but if I add all values in the RSS field
on
> > all processes, it always seems to roughly equal the amount of used
memory
> > reported by 'free', so I think this value is close to accurate.
> >
> > If I can find some way to determine how much swap space is used by a
process
> > (or all processes owned by a user), then I could possibly use the sum of
> > that value and the values of RSS from ps to come up with a reasonable
> > estimate for the total memory used by the user.
> >
> > Can anyone think of a way to accomplish this?
> >
> > -- Jonathan
> >
> > -- This is the discussion@xxxxxxxxx list.  To unsubscribe,
> > visit http://www.complete.org/cgi-bin/listargate-aclug.cgi
> >
> -- This is the discussion@xxxxxxxxx list.  To unsubscribe,
> visit http://www.complete.org/cgi-bin/listargate-aclug.cgi
>
>

-- This is the discussion@xxxxxxxxx list.  To unsubscribe,
visit http://www.complete.org/cgi-bin/listargate-aclug.cgi


[Prev in Thread] Current Thread [Next in Thread]