Github user paul-rogers commented on a diff in the pull request: https://github.com/apache/drill/pull/1200#discussion_r179028078 --- Diff: distribution/src/resources/drillbit.sh --- @@ -127,6 +127,44 @@ check_before_start() fi } +check_after_start(){ + #check if the process is running + if [ -f $pid ]; then + dbitProc=$(ps -ef | grep `cat $pid` | grep Drillbit) + if [ -n "$dbitProc" ]; then + # Check and enforce for CGroup + if [ -n "$DRILLBIT_CGROUP" ]; then + check_and_enforce_cgroup `cat $pid` + fi + fi + fi +} + +check_and_enforce_cgroup(){ + dbitPid=$1; + #if [ $(`ps -o cgroup` | grep -c $DRILLBIT_CGROUP ) -eq 1 ]; then + if [ -f /cgroup/cpu/${DRILLBIT_CGROUP}/cgroup.procs ]; then + echo $dbitPid > /cgroup/cpu/${DRILLBIT_CGROUP}/cgroup.procs + # Verify Enforcement + cgroupStatus=`grep -w $pid /cgroup/cpu/${DRILLBIT_CGROUP}/cgroup.procs` + if [ -z "$cgroupStatus" ]; then + #Ref: https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt + let cpu_quota=`cat /cgroup/cpu/${DRILLBIT_CGROUP}/cpu.cfs_quota_us` + let cpu_period=`cat /cgroup/cpu/${DRILLBIT_CGROUP}/cpu.cfs_period_us` + if [ $cpu_period -gt 0 ] && [ $cpu_quota -gt 0 ]; then + coresAllowed="(up to "`echo $(( 100 * $cpu_quota / $cpu_period )) | sed 's/..$/.&/'`" cores allowed)" + fi + echo "WARN: Drillbit's CPU resource usage will be managed under the CGroup : $DRILLBIT_CGROUP "$coresAllowed + else + echo "ERROR: Failed to add Drillbit to CGroup ( $DRILLBIT_CGROUP ) for resource usage management. Ensure that the cgroup manages CPU" + exit 1 + fi + else + echo "ERROR: cgroup $DRILLBIT_CGROUP does not found. Ensure that daemon is running and cgroup exists" --- End diff -- cgroup --> CGroup (or at least make the format consistent across messages) does not found --> not found We can check if the daemon is running using `kill -0 $pid`. If so, then we just tell the user something line "Check CGroup configuration." Also, errors should go to stdout: `echo "msg" >&2`
---