The Global Atomic Broadcast (GAB) gablogd daemon (/opt/VRTSgab/gablogd) adversely affects system load even though the system is idle

book

Article ID: 100005662

calendar_today

Updated On:

Description

Error Message

We have a system which is completely idle as shown by sar:

# sar -u 1 100
...

12:53:59 AM       CPU     %user     %nice   %system   %iowait    %steal     %idle
12:54:00 AM       all      0.00      0.00      0.00      0.00      0.00    100.00
12:54:01 AM       all      0.00      0.00      0.00      0.00      0.00    100.00
12:54:02 AM       all      0.00      0.00      0.00      0.00      0.00    100.00

...

Despite this, /proc/loadavg shows system load to be 1:

# cat /proc/loadavg  
1.00 1.00 1.00 1/298 7884

Cause

The gablogd daemon is always in an 'uninterrptable sleep' (i.e. D) state as shows by BSD style ps output:

# ps auwx|awk '{ if ($8 ~ "D") { print $0 }}'
root     18532  0.0  0.0  10176   176 ?        D    22:42   0:00 /opt/VRTSgab/gablogd
# ps auwx|awk '{ if ($8 ~ "D") { print $0 }}'
root     18532  0.0  0.0  10176   176 ?        D    22:42   0:00 /opt/VRTSgab/gablogd
# ps auwx|awk '{ if ($8 ~ "D") { print $0 }}'
root     18532  0.0  0.0  10176   176 ?        D    22:42   0:00 /opt/VRTSgab/gablogd

Due to this the system increments reports of system load accordingly even though the daemon is effectively idle.

Resolution

It is expected that the gablogd daemon will spend the majority of its time in a state of uninterruptable sleep. This is due to the daemon sleeping in an ioctl context by design. The sleep is essentially of indefinite length as the daemon will only be woken up should a critical event such as an iofence or the death of the node mastering any GAB port occur. Unfortunately the linux kernel does not provide a mechanism to ignore selected threads which are sleeping for long periods.

If required the gablogd daemon can be disabled at boot by by adding the following line to /etc/sysconfig/gab and GAB restarted.

GAB_IBUF_COUNT=0 

 


Issue/Introduction

When the GAB gablogd daemon (/opt/VRTSgab/gablogd) is running, /proc/loadavg will report system load as 1 even when the system is idle