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
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.
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