#!/bin/bash

cgroupfs_mount() {
    # see also https://github.com/tianon/cgroupfs-mount/blob/master/cgroupfs-mount
    if grep -v '^#' /etc/fstab | grep -q cgroup \
        || [ ! -e /proc/cgroups ] \
        || [ ! -d /sys/fs/cgroup ]; then
        return
    fi
    if ! mountpoint -q /sys/fs/cgroup; then
        mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
    fi
    (
        cd /sys/fs/cgroup
        for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do
            mkdir -p $sys
            if ! mountpoint -q $sys; then
                if ! mount -n -t cgroup -o $sys cgroup $sys; then
                    rmdir $sys || true
                fi
            fi
        done
    )
}

function test
{
     cgroupfs_mount

     [ -e /sys/fs/cgroup/cpu/test1 ] || mkdir /sys/fs/cgroup/cpu/test1
     echo 10000 > /sys/fs/cgroup/cpu/test1/cpu.cfs_period_us
     echo 5000 > /sys/fs/cgroup/cpu/test1/cpu.cfs_quota_us

     ./multithreads &
     echo "start attach"
     for tid in `ps -eT|grep multithreads | grep -v grep|awk '{print $2}'`
     do
          echo $tid > /sys/fs/cgroup/cpu/test1/tasks
     done
     echo "attach done"
     sleep 3
     killall -9 multithreads
}


while true
do
     test
     sleep 1
done
