Skip to content

Instantly share code, notes, and snippets.

@nemunaire
Created June 22, 2015 23:17
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nemunaire/f9fb88ea1033c58c29d6 to your computer and use it in GitHub Desktop.
Save nemunaire/f9fb88ea1033c58c29d6 to your computer and use it in GitHub Desktop.
Display memory used by a program, using Linux cgroup
#!/bin/sh
CGROUP_dir=/sys/fs/cgroup/memory
CGROUP_name=${0%.*}
CGROUP_limit=550502400
if [ "$EUID" != "0" ]
then
sudo $0 $@
exit $?
fi
displ() {
MEM_USAGE=$(cat ${CGROUP_dir}/${CGROUP_name}/memory.usage_in_bytes)
echo -e "\r~~~ $CPID ~~~ Current memory usage: ${MEM_USAGE}/${CGROUP_limit} ($((${MEM_USAGE} * 100 / ${CGROUP_limit}))%)"
}
mkdir -p ${CGROUP_dir}/${CGROUP_name}
echo $CGROUP_limit > ${CGROUP_dir}/${CGROUP_name}/memory.limit_in_bytes
trap quit TERM INT KILL
$@ &
CPID=$!
echo $CPID > ${CGROUP_dir}/${CGROUP_name}/tasks
zz=$$
(
while kill -0 $CPID 2> /dev/null
do
sleep 1
displ
done
kill $zz 2> /dev/null
) &
DPID=$!
quit() {
kill -9 $CPID $DPID 2> /dev/null
}
while kill -0 $CPID 2> /dev/null && read -s 2> /dev/null
do
displ
done
quit
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment