Skip to content

Instantly share code, notes, and snippets.

@zehome
Last active February 14, 2019 10:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zehome/6f36744ebcaf5e3c0408732b670dfa07 to your computer and use it in GitHub Desktop.
Save zehome/6f36744ebcaf5e3c0408732b670dfa07 to your computer and use it in GitHub Desktop.
rss limiter (bash / linux)
#!/bin/bash
CGROUP_ROOT="/sys/fs/cgroup"
CGROUP_NAME="rsslimiter"
# CGROUP_CPUSHARES="512"
# CGROUP_BLKIO_THROTTLE_READ_BPS="8:0 $((100*1024*1024)),8:16 $((100*1024*1024))"
CGROUP_MAXMEM="$((32 * 1024 * 1024))" # in bytes
cgroup_init()
{
[ -z "${CGROUP_NAME}" ] && return
CGROUP_BLK_PATH="$CGROUP_ROOT/blkio/$CGROUP_NAME"
CGROUP_CPU_PATH="$CGROUP_ROOT/cpu/$CGROUP_NAME"
CGROUP_MEM_PATH="$CGROUP_ROOT/memory/$CGROUP_NAME"
# We assume /cgroup is already mounted obviously ;)
# Create cgroup if not already created
[ -d "$CGROUP_BLK_PATH" ] || mkdir "$CGROUP_BLK_PATH"
[ -d "$CGROUP_CPU_PATH" ] || mkdir "$CGROUP_CPU_PATH"
[ -d "$CGROUP_MEM_PATH" ] || mkdir "$CGROUP_MEM_PATH"
[ ! -f "${CGROUP_BLK_PATH}/tasks" ] && (echo "No cgroup blkio support."; return 1)
[ ! -f "${CGROUP_CPU_PATH}/tasks" ] && (echo "No cgroup cpu support."; return 1)
[ ! -f "${CGROUP_MEM_PATH}/tasks" ] && (echo "No cgroup mem support."; return 1)
# Setup limits
if [ ! -z "$CGROUP_CPU_SHARES" ]; then
echo $CGROUP_CPU_SHARES > ${CGROUP_CPU_PATH}/cpu.shares
fi
if [ ! -z "$CGROUP_BLKIO_THROTTLE_READ_BPS" ]; then
OIFS="$IFS"; IFS=","; for i in $CGROUP_BLKIO_THROTTLE_READ_BPS; do
echo $i > ${CGROUP_BLKIO_PATH}/blkio.throttle.read_bps_device
done; IFS=$OIFS
fi
if [ ! -z "$CGROUP_MAXMEM" ]; then
echo $CGROUP_MAXMEM > ${CGROUP_MEM_PATH}/memory.limit_in_bytes
fi
echo $$ > $CGROUP_CPU_PATH/tasks
echo $$ > $CGROUP_BLK_PATH/tasks
echo $$ > $CGROUP_MEM_PATH/tasks
return 0
}
echo "Setting up CGROUP limits..." >&2
cgroup_init
python3 -c 'import time; x=bytearray(1024 * 1024 * 28); time.sleep(5)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment