Re: Tools to calculate memory usage per jail

Miroslav Lachman <[email protected]>
Newsgroups gmane.os.freebsd.isp
Message-ID <[email protected]>
Marc G. Fournier wrote:
> 
> Subject says it all ... does anyone know of / have such a tool?

I am using some modified shell script - jps. It is based on Oliver 
Fromme http://www.secnetix.de/~olli/scripts/jps

My version is attached. If jps is called with JID param, you get list of 
processes of given jail and summary like this:

==============================
  summary for JID 6 / tester1.example.com
  %MEM    RSS       VSZ   %CPU
    5    221064   1034648   0

It is far from perfect tool, but it is enough to my needs.

Or you can ask on [email protected] list, where are more skilled 
peoples around jails :)

[Stef Walter is working on bsnmp-jails, maybe he is able to extend it 
for memory usage too]

Miroslav Lachman

_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-isp
To unsubscribe, send any mail to "[email protected]"
jps (text/plain, 1.6 KB)
#!/bin/sh -
#
#   Copyright (C) 2007 Oliver Fromme <[email protected]> <[email protected]>
#   All rights reserverd.  Standard 2-clause BSD license and disclaimer apply.
#
#   List processes that are running inside a jail.
#   This is intended to complement the standard jls(8) command.
#
#   Usage:
#      jps            list all jailed processes
#      jps <JID>      list only processes in jail <JID>.
#
#   Run the jls(8) command to get a list of jails and JIDs.
#
#   Note:  This script works for FreeBSD >= 6 only!
#   For FreeBSD 4.x, please use jailstat instead:
#   http://www.secnetix.de/~olli/scripts/jailstat
#

ME="${0##*/}"

Usage()
{
	cat <<-tac

		$ME  --  List processes that are running inside a jail.
		This is intended to complement the standard jls(8) command.

		Usage:
		$ME            list all jailed processes
		$ME <JID>      list only processes in jail <JID>

		Run the jls(8) command to get a list of jails and JIDs.

	tac
	exit 1
}

if [ $# -gt 2 ]; then
	Usage
fi

if [ $# -eq 1 ]; then
	case "$1" in
		""|*[!0-9]*)	Usage ;;
	esac
	FILTER='$1=="'$1'"'
	sum_jid="$1"
	jname=`jls | awk "$FILTER"'{ print $3 }'`
else
	FILTER='$1!="0"'
	sum_jid="all"
	jname="-"
fi

ps -axww -o jid,pid,%mem,rss,user,command | awk '$1!~/[0-9]/||'"$FILTER" | sort -n

echo
echo "=============================="
echo " summary for JID $sum_jid / $jname"
echo " %MEM    RSS       VSZ   %CPU "

## NOTE: jail processes can be swapped (%mem & rss are zero, but vsz not)
ps -axww -o jid,%mem,rss,vsz,%cpu | awk '$1!~/[0-9]/||'"$FILTER" | awk '{ sm += $2; sp += $3; sv += $4; sc += $5 } END { printf(" %3d %9i %9i %3d \n", sm, sp, sv, sc) }'

#--
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.