Since upgrading to s11b83a I noticed that gam_server processes eat significant amount of CPU cycles. So I decided to make some investigations.
# uname -a
SunOS xeon 5.11 snv_83 i86pc i386 i86pc
# pkginfo -l SUNWgamin
PKGINST: SUNWgamin
NAME: Library providing the FAM File Alteration Monitor API
CATEGORY: GNOME2,application,JDS4
ARCH: i386
VERSION: 0.1.9,REV=110.0.4.2008.01.28.02.48
. . .
# fgrep SUNWgamin /var/sadm/install/contents
/usr/lib/gam_server f …
/usr/lib/libfam.so=libfam.so.0.0.0 s …
/usr/lib/libfam.so.0=libfam.so.0.0.0 s …
/usr/lib/libfam.so.0.0.0 f …
/usr/lib/libgamin-1.so=libgamin-1.so.0.1.9 s …
/usr/lib/libgamin-1.so.0=libgamin-1.so.0.1.9 s …
/usr/lib/libgamin-1.so.0.1.9 f …
/usr/lib/python2.4/vendor-packages/_gamin.so f …
/usr/lib/python2.4/vendor-packages/gamin.py f …
SunOS xeon 5.11 snv_83 i86pc i386 i86pc
# pkginfo -l SUNWgamin
PKGINST: SUNWgamin
NAME: Library providing the FAM File Alteration Monitor API
CATEGORY: GNOME2,application,JDS4
ARCH: i386
VERSION: 0.1.9,REV=110.0.4.2008.01.28.02.48
. . .
# fgrep SUNWgamin /var/sadm/install/contents
/usr/lib/gam_server f …
/usr/lib/libfam.so=libfam.so.0.0.0 s …
/usr/lib/libfam.so.0=libfam.so.0.0.0 s …
/usr/lib/libfam.so.0.0.0 f …
/usr/lib/libgamin-1.so=libgamin-1.so.0.1.9 s …
/usr/lib/libgamin-1.so.0=libgamin-1.so.0.1.9 s …
/usr/lib/libgamin-1.so.0.1.9 f …
/usr/lib/python2.4/vendor-packages/_gamin.so f …
/usr/lib/python2.4/vendor-packages/gamin.py f …
No manuals, no config files.
# strings /usr/lib/gam_server
. . .
/.gaminrc
/etc/gamin/mandatory_gaminrc
/etc/gamin/gaminrc
. . .
/.gaminrc
/etc/gamin/mandatory_gaminrc
/etc/gamin/gaminrc
From Gamin project page:
Gamin is a file and directory monitoring system defined to be a subset of the FAM (File Alteration Monitor) system. This is a service provided by a library which allows to detect when a file or a directory has been modified.
This is the description of the config file: Gamin config
Now, how to fix the problem
- Create /etc/gamin directory:
# mkdir /etc/gamin
- Create file /etc/gamin/gaminrc. It may contain the following lines (this is just an example, you can set your own polling intervals):
fsset nfs poll 15
fsset ufs poll 15
fsset lofs poll 15
fsset zfs poll 15 - Restart gam_server (let me know if there is a better way):
# pkill gam_server; rm -rf /tmp/gam_*
Voila! That should be done in all zones.
Update 2008-07-07 @00:06:24: i did not see this behaviour in snv_92. However, do not install snv_92 because of otehr bugs. Try snv_93.
Thanks for this. I’ve posted a link and the same procedure on my blog. I’d recommend the following minor changes for opensolaris 2008.05:
Step 2 should have the following additional line:
fsset zfs poll 15
Step 3 is more graceful if you don’t kill -9 and kill gam_server instead of fam_server:
pkill gam_server;rm -rf /tmp/gam_*
Thanks Bnitz! I’ve updated my post using your recommendations.
Thank you very much, at first glance, this appears to have worked very well.