While testing DR, we found that syseventd was spending a lot of time
processing IPMP sysevent messages from in.mpathd because each ICMP probe
packet generates two sysevents.  While syseventd should be able to handle
the load, it seemed generally like a bad thing given that there's a single
queue for "classic" sysevents.  As such, I've revised the code to use
sysevent GPECs (PSARC/2002/321).  With GPECs:

        * We have a dedicated channel for IPMP events.  Thus, those who
          aren't interested in IPMP events get nothing.

        * syseventd is taken out of the picture entirely.  Instead, the
          event channel is handled by a kernel driver (via /dev/sysevent).

        * We can remove some grotty global variables in ipmpstat since we
          can now properly pass state to process_probe() using the GPEC
          interfaces.

Along the way, I also made some minor modifications to ipmpstat and
in.mpathd for consistency and elegance.  Could someone take a look?

  http://zhadum.east/ws/clearview/clearview-ipmpdev

BTW, we'll need to update the test suite to listen for GPECs instead of
classic sysevents; I'll work with Xiang on this.  I'll also make sure
this gets covered in the PSARC materials.

-- 
meem

Reply via email to