if [[ -d /sys/fs/cgroup ]]; then
  scene_memcg="/sys/fs/cgroup/memory"
elif [[ -d /dev/memcg ]]; then
  scene_memcg="/dev/memcg"
fi

init_group() {
  local g=$scene_memcg/$1
  if [[ ! -d $g ]]; then
    mkdir -p $g
  fi
  echo $2 > $g/memory.swappiness
  echo 1 > $g/memory.oom_control
  echo 1 > $g/memory.use_hierarchy
}

if [[ "$scene_memcg" != "" ]]; then
  init_group scene_perf 10
  init_group scene_fg 0
  init_group scene_lock 100
  init_group scene_bg 100
  init_group scene_cache 100

  MemTotalStr=`cat /proc/meminfo | grep MemTotal`
  MemTotalKB=${MemTotalStr:16:8}
  #echo $((MemTotalKB/1024/30))M

  echo $((MemTotalKB/1024/4))M > $scene_memcg/scene_lock/memory.soft_limit_in_bytes
  echo $((MemTotalKB/1024/10))M > $scene_memcg/scene_bg/memory.soft_limit_in_bytes
  echo $((MemTotalKB/1024/30))M > $scene_memcg/scene_cache/memory.soft_limit_in_bytes

  # echo 8192M > $scene_memcg/scene_bg/memory.memsw.limit_in_bytes
  # echo 512M > $scene_memcg/scene_bg/memory.limit_in_bytes
  # echo 512M > $scene_memcg/scene_bg/memory.kmem.limit_in_bytes

  if [[ -f $scene_memcg/sys_critical/memory.swappiness ]]; then
    echo 0 > $scene_memcg/sys_critical/memory.swappiness
  fi
  if [[ -f $scene_memcg/system/memory.swappiness ]]; then
    echo 0 > $scene_memcg/system/memory.swappiness
  fi
  find $scene_memcg -name memory.move_charge_at_immigrate | while read row; do
    echo 1 > $row
  done

fi
