Chapter 18. Managing Resource Usage
When Red Hat Gluster Storage is deployed on the same machine as other resource intensive software and services, it can be useful to limit the resources that glusterd attempts to use in order to avoid resource contention between processes.
Resource management works differently on Red Hat Enterprise Linux 6. See the Red Hat Enterprise Linux 6 Resource Management Guide for details: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/ch-Using_Control_Groups.html
Important
Red Hat Gluster Storage is not supported on Red Hat Enterprise Linux 6 (RHEL 6) from 3.5 Batch Update 1 onwards. See Version Details table in section Red Hat Gluster Storage Software Components and Versions of the Installation Guide
Procedure 18.1. Controlling CPU Usage for a Gluster Daemon
The
control-cpu-load
script provides a utility to control CPU utilization for any Gluster daemon by using the cgroup framework to configure CPU quota for a process.
- Navigate to the scripts folder by using the following command:
cd /usr/share/glusterfs/scripts
# cd /usr/share/glusterfs/scripts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Determine the PID of the required gluster daemon by using the following command:
ps -aef | grep daemon_name
# ps -aef | grep daemon_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow The output will be in the following format:root 1565...output omitted...grep --color=auto daemon_name
root 1565...output omitted...grep --color=auto daemon_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow In this output, 1565 represents the PID of the daemon service. PIDs are unlikely to be the same on different systems, or for different instances of the daemon, so ensure that you check for the relevant PID every time you perform this process. - Execute the
control-cpu-load
script by using the following command:sh control-cpu-load.sh
# sh control-cpu-load.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - When the system prompts you with the following input, type the PID of the daemon acquired from the previous step and press
Enter
:sh control-cpu-load.sh
[root@XX-XX scripts]# sh control-cpu-load.sh Enter gluster daemon pid for which you want to control CPU. 1565
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - When the system prompts you with the following input, type
y
and pressEnter
:If you want to continue the script to attach 1565 with new cgroup_gluster_1565 cgroup Press (y/n)?
If you want to continue the script to attach 1565 with new cgroup_gluster_1565 cgroup Press (y/n)?
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - When the system prompts the following notification, enter the required quota value to be assigned to the daemon and press
Enter
:Creating child cgroup directory 'cgroup_gluster_1565 cgroup' for daemon_name.service. Enter quota value in range [10,100]: 25
Creating child cgroup directory 'cgroup_gluster_1565 cgroup' for daemon_name.service. Enter quota value in range [10,100]: 25
Copy to Clipboard Copied! Toggle word wrap Toggle overflow In this example, quota value for the daemon service is set to25
.The system displays the following message once the quota value has been successfully set:Entered quota value is 25 Setting 25000 to cpu.cfs_quota_us for gluster_cgroup. Tasks are attached successfully specific to 1565 to cgroup_gluster_1565.
Entered quota value is 25 Setting 25000 to cpu.cfs_quota_us for gluster_cgroup. Tasks are attached successfully specific to 1565 to cgroup_gluster_1565.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Important
Perform this procedure every time the daemon is restarted and has a new daemon PID.
Procedure 18.2. Controlling memory usage for a Gluster daemon
The
control-mem
script provides a utility to control memory utilization for any Gluster daemon by using the cgroup framework to configure memory limit for a process.
- Navigate to the scripts folder by using the following command:
cd /usr/share/glusterfs/scripts
# cd /usr/share/glusterfs/scripts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Determine the PID of the required gluster daemon by using the following command:
ps -aef | grep daemon_name
# ps -aef | grep daemon_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow The output will be in the following format:root 1565 1 0 Feb05 ? 00:09:17 /usr/sbin/glusterfs -s localhost --volfile-id gluster/daemon_name -p /var/run/gluster/daemon_name/daemon_name.pid -l /var/log/glusterfs/daemon_name.log -S /var/run/gluster/ed49b959a0dc9b2185913084e3b2b339.socket --xlator-option *replicate*.node-uuid=13dbfa1e-ebbf-4cee-a1ac-ca6763903c55 root 16766 14420 0 19:00 pts/0 00:00:00 grep --color=auto daemon_name
root 1565 1 0 Feb05 ? 00:09:17 /usr/sbin/glusterfs -s localhost --volfile-id gluster/daemon_name -p /var/run/gluster/daemon_name/daemon_name.pid -l /var/log/glusterfs/daemon_name.log -S /var/run/gluster/ed49b959a0dc9b2185913084e3b2b339.socket --xlator-option *replicate*.node-uuid=13dbfa1e-ebbf-4cee-a1ac-ca6763903c55 root 16766 14420 0 19:00 pts/0 00:00:00 grep --color=auto daemon_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow In this output, 1565 represents the PID of the daemon service. - Execute the
control-mem
script by using the following command:sh control-mem.sh
# sh control-mem.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - When the system prompts for the following input, type the PID of the daemon acquired from the previous step and press
Enter
:sh control-mem.sh
[root@XX-XX scripts]# sh control-mem.sh Enter gluster daemon pid for which you want to control CPU. 1565
Copy to Clipboard Copied! Toggle word wrap Toggle overflow In this example, 1565 represents the PID of the daemon service. The PID of the daemon services can vary from system to system. - When the system prompts for the following input, type
y
and pressEnter
:If you want to continue the script to attach daeomon with new cgroup. Press (y/n)?
If you want to continue the script to attach daeomon with new cgroup. Press (y/n)?
Copy to Clipboard Copied! Toggle word wrap Toggle overflow The system prompts the following notification:Creating child cgroup directory 'cgroup_gluster_1565 cgroup' for daemon_name.service.
Creating child cgroup directory 'cgroup_gluster_1565 cgroup' for daemon_name.service.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - When the system prompts for the following input, enter the required memory value to be assigned to the daemon and press
Enter
:Enter Memory value in Mega bytes [100,8000000000000]:
Enter Memory value in Mega bytes [100,8000000000000]:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow In this example, the memory value is set to5000
. The system prompts the following message once the memory value has been successfully set:Entered memory limit value is 5000. Setting 5242880000 to memory.limit_in_bytes for /sys/fs/cgroup/memory/system.slice/daemon_name.service/cgroup_gluster_1565. Tasks are attached successfully specific to 1565 to cgroup_gluster_1565.
Entered memory limit value is 5000. Setting 5242880000 to memory.limit_in_bytes for /sys/fs/cgroup/memory/system.slice/daemon_name.service/cgroup_gluster_1565. Tasks are attached successfully specific to 1565 to cgroup_gluster_1565.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Important
Perform this procedure every time the daemon is restarted and has a new daemon PID.