08-29-2008
per-process swap usage?
I've been trying to write a monitor program that gets various values on the processes running and makes reports. One of the values that I wanted to monitor was swap usage, so that we can ensure that our swap space doesn't fill up, but I can't seem to get this number (on a per-process basis) from either 'top' or 'ps'.
I've tried everything I can think of. Can anyone tell me how to do this?
On my system, I run top and ps and sum up some of the numbers and I get these:
top vsize within 5% ps vsize: 1.0%
top rss within 5% ps rss: 98.3%
Resident set size: 6.422G
Top vsize: 11.980G
PS vsize: 144.780G
PS size: 88.384G
These are the totals I get from the 'top' header. This (roughly) agrees with the vmstat numbers.
Total Mem used, from top: 7.590G
Total Swap used, from top: 5.233G
Total Virtual Mem used: 12.823G
Now you see the closest thing to matching the total virtual memory above is the top vsize, and maybe I can get swap usage by subtracting top vsize from RSS, but the above was run on RH3. If I run the same script on RH5 (we have RH3 and RH5 machines), I get the following:
top vsize within 5% ps vsize: 99.7%
top rss within 5% ps rss: 97.1%
Resident set size: 5.059G
Top vsize: 84.335G
PS vsize: 84.485G
PS size: 6.357G
Total Mem used, from top: 7.751G
Total Swap used, from top: 0.000G
Total Virtual Mem used: 7.751G
As you can see, now the top vsize is way off.
I also tried subtracting out the shared memory (taken from top), but that only lowered the numbers by less than 5%.
There has to be a better way...
--Buck
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hi,
How do i get the swap space used and cpu usage for a particular application ?
thanks
una (2 Replies)
Discussion started by: una
2 Replies
2. UNIX for Dummies Questions & Answers
Trying to come up with a command that will show all processes sorted from highest cpu usage to lowest. Any ideas? (9 Replies)
Discussion started by: cwsmichigan
9 Replies
3. HP-UX
how can I find cpu usage memory usage swap usage and
I want to know CPU usage above X% and contiue Y times and memory usage above X % and contiue Y times
my final destination is monitor process
logical volume usage above X % and number of Logical voluage above
can I not to... (3 Replies)
Discussion started by: alert0919
3 Replies
4. Solaris
Is there any way to get list of processes which are taking maximum swap , my system is showing no swap space in /var/adm/messages and i 'm unable to pin down the process which is consuming max swap space. (11 Replies)
Discussion started by: fugitive
11 Replies
5. Solaris
hi guys
i am new to opensolaris and i have installed opensolaris 2009.6 preview
and i would like to know how much swap using each process currently..... (6 Replies)
Discussion started by: srinivas2828
6 Replies
6. Shell Programming and Scripting
Hi Folks,
I am looking for a way to write a script to calculate swap usage in Solaris so that the current usage will be shown in Percentage value. Thanks!!
Based on 'swap -s' command
# swap -s
total: 1378936k bytes allocated + 1236880k reserved = 2615816k used, 2725104k available (2 Replies)
Discussion started by: jaapar
2 Replies
7. Shell Programming and Scripting
Its rather confusing, the output of top command is below:
The "swap" field of top is described by the manpage as: "The swapped out portion of a task's total virtual memory image."
But the output of free command suggests something else and it does tally with the output of swapon... (3 Replies)
Discussion started by: proactiveaditya
3 Replies
8. Solaris
Hi
We have 2 identical T4-1's running Solaris 10 8/11 patched to 07/2012.
Both have 8G of swap allocated on the zfs root pool however a swap -s on one server shows 8G of swap available but on the other shows between 60 and 115G of swap available.
Both servers have the same amount of... (6 Replies)
Discussion started by: gregsih
6 Replies
9. Red Hat
Hi ,
There is one following alert .
Message : cdm:Average (2 samples) swap memory usage is now 91%, which is above the warning threshold (90%)
Here is my findings.
Output of TOP command in Linux server.
top - 14:21:44 up 6 days, 4:48, 1 user, load average: 2.55, 2.06,... (3 Replies)
Discussion started by: Maddy123
3 Replies
10. Red Hat
Hi
the version is RedHat 6.2 (Oracle DB server)
I don't know why swap memory usage keeps increasing...
I used to check swap memory usage Free -m and another way.
total used free shared buffers cached
Mem: 32183 31861 322 ... (3 Replies)
Discussion started by: tom8254
3 Replies
LEARN ABOUT MINIX
sysinfo
SYSINFO(2) Linux Programmer's Manual SYSINFO(2)
NAME
sysinfo - return system information
SYNOPSIS
#include <sys/sysinfo.h>
int sysinfo(struct sysinfo *info);
DESCRIPTION
sysinfo() returns certain statistics on memory and swap usage, as well as the load average.
Until Linux 2.3.16, sysinfo() returned information in the following structure:
struct sysinfo {
long uptime; /* Seconds since boot */
unsigned long loads[3]; /* 1, 5, and 15 minute load averages */
unsigned long totalram; /* Total usable main memory size */
unsigned long freeram; /* Available memory size */
unsigned long sharedram; /* Amount of shared memory */
unsigned long bufferram; /* Memory used by buffers */
unsigned long totalswap; /* Total swap space size */
unsigned long freeswap; /* Swap space still available */
unsigned short procs; /* Number of current processes */
char _f[22]; /* Pads structure to 64 bytes */
};
In the above structure, the sizes of the memory and swap fields are given in bytes.
Since Linux 2.3.23 (i386) and Linux 2.3.48 (all architectures) the structure is:
struct sysinfo {
long uptime; /* Seconds since boot */
unsigned long loads[3]; /* 1, 5, and 15 minute load averages */
unsigned long totalram; /* Total usable main memory size */
unsigned long freeram; /* Available memory size */
unsigned long sharedram; /* Amount of shared memory */
unsigned long bufferram; /* Memory used by buffers */
unsigned long totalswap; /* Total swap space size */
unsigned long freeswap; /* Swap space still available */
unsigned short procs; /* Number of current processes */
unsigned long totalhigh; /* Total high memory size */
unsigned long freehigh; /* Available high memory size */
unsigned int mem_unit; /* Memory unit size in bytes */
char _f[20-2*sizeof(long)-sizeof(int)];
/* Padding to 64 bytes */
};
In the above structure, sizes of the memory and swap fields are given as multiples of mem_unit bytes.
RETURN VALUE
On success, sysinfo() returns zero. On error, -1 is returned, and errno is set to indicate the cause of the error.
ERRORS
EFAULT info is not a valid address.
VERSIONS
sysinfo() first appeared in Linux 0.98.pl6.
CONFORMING TO
This function is Linux-specific, and should not be used in programs intended to be portable.
NOTES
All of the information provided by this system call is also available via /proc/meminfo and /proc/loadavg.
SEE ALSO
proc(5)
COLOPHON
This page is part of release 4.15 of the Linux man-pages project. A description of the project, information about reporting bugs, and the
latest version of this page, can be found at https://www.kernel.org/doc/man-pages/.
Linux 2017-09-15 SYSINFO(2)