Re: Gluster operations speed limit

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
  
   Yes, you can use cgroup to improve speed limit for gluster operation.
   To use the cgroup for any specific glusterd(selfheald etc) first  you have to change the glusterd unit file and start the service (glusterd and volumes).
   
   I would like to suggest before apply the step on large cluster please do run the same steps on test vm and 
   if it is working fine on test vm then apply same on your large cluster.

   1) Add directive "Delegate=yes" in Service section in glusterd unit file as below 

[Service]
Type=forking
PIDFile=/var/run/glusterd.pid
LimitNOFILE=65536
Delegate=yes
Environment="LOG_LEVEL=INFO"
EnvironmentFile=-${prefix}/etc/sysconfig/glusterd
ExecStart=/usr/sbin/glusterd -p /var/run/glusterd.pid  --log-level $LOG_LEVEL $GLUSTERD_OPTIONS
KillMode=process
SuccessExitStatus=15
    
   2) stop gluster services (kill volume also)
   3) do daemon reload systemctl daemon-reload
   4) start glusterd service
   5) Create cgroup in subsystems (cpu,cpuacct,memory etc) whatever you want to restrict for specific daemon
      here i am trying to control CPU for selfheald so i have created mycgroup directory in that subsystem   
      mkdir -p /sys/fs/cgroup/cpu,cpuacct/system.slice/glusterd.service/mycgroup
   6) Set quota for this cgroup as below
      echo 25000 > /sys/fs/cgroup/cpu,cpuacct/system.slice/glusterd.service/mycgroup/cpu.cfs_quota_us
      here the cpu.cfs_quota_us means total available run-time within a period (microsecond) and length
      of period is 100 ms , here 25000 represent 25 ms, it means kernel will allocate cpu for these tasks
      for 25ms in every 100 ms
   7) Attach the daemon tasks for that you want to control CPU
      here i am trying to control selfheal daemon , suppose pid of selfheald is 576, run below command to move
      all selfheald tasks to mycgroup
      for thid in `ps -T -p 576 | grep gluster | awk -F " " '{print $2}'`; do echo $thid > /sys/fs/cgroup/cpu,cpuacct/system.slice/glusterd.service/mycgroup/tasks ; done       
   
   8) After attached all selfheald tasks to mygcgroup to ensure task is successfully attached or not you can check
      tasks file in glusterd.service/tasks in the same hierarchy, all tasks will be move from glusterd tasks to mycgroup
      tasks.
   9) Check top output, cpu usage for selfheald will be lower.Let me know if u face any problem to run the steps.

   
Regards
Mohit Agrawal

On Tue, Aug 1, 2017 at 4:19 PM, Ravishankar N <ravishankar@xxxxxxxxxx> wrote:
Adding Mohit who is experimenting with cgroups  has found some way to restrict glustershd's CPU usage using cgroups. Mohit maybe you want to share the steps we need to follow to apply cgroups only to glustershd.

Thanks.

Ravi


On 08/01/2017 03:46 PM, Alexey Zakurin wrote:
Hi, community

I have a large distributed-replicated Glusterfs volume, that contains few hundreds VM's images. Between servers 20Gb/sec link.
When I start some operations like healing or removing, storage performance becomes too low for a few days and server load becomes like this:

13:06:32 up 13 days, 20:02,  3 users,  load average: 43.62, 31.75, 23.53.

Is it possible to set limit on this operations? Actually, VM's on my cluster becomes offline, when I start healing, rebalance or removing brick.

Please, help.



_______________________________________________
Gluster-users mailing list
Gluster-users@xxxxxxxxxxx
http://lists.gluster.org/mailman/listinfo/gluster-users

[Index of Archives]     [Gluster Development]     [Linux Filesytems Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux