Re: Watch Performance

Amy Griffis
2006-04-11T16:11:41Z

On Tue, Apr 11, 2006 at 06:26:26AM -0400, Steve Grubb wrote:
> On Monday 10 April 2006 23:51, Amy Griffis wrote:
> > 1) what audit rules did you use?
>
> I used the lspp rules to get the 1st 10, and the rest were against files
> in /etc/test.

I took a look at the rules lists in the tarball you sent. The rules
are not specified in a way that makes sense with what you are
measuring.

The watches are added with the -w syntax. In auditctl, this
translates to setting an "all" syscall rule.

> -w /etc/sysconfig/console
> -w /etc/sysconfig/pm
> -w /etc/sysconfig/system-config-users
> -w /etc/sysconfig/init
> -w /etc/sysconfig/hwconf
> -w /etc/sysconfig/netdump
> -w /etc/sysconfig/selinux
> -w /etc/sysconfig/hsqldb
> -w /etc/sysconfig/system-config-securitylevel
> -w /etc/sysconfig/mouse
> -w /etc/sysconfig/saslauthd.rpmnew
> -w /etc/sysconfig/netdump_id_dsa.pub
> -w /etc/sysconfig/clock
> -w /etc/sysconfig/grub
> -w /etc/sysconfig/wpa_supplicant
> ...

So for your worst-case, you have added 80 syscall rules that apply to
the access system call. It is not surprising that this would
significantly affect the performance of access().

IIRC, these rules were supposed to apply to watches.

> -a entry,possible -S chmod -S fchmod -S chown -S fchown -S lchown
> -a entry,possible -S creat -S open -S truncate -S ftruncate
> -a entry,possible -S mkdir -S rmdir
> -a entry,possible -S unlink -S rename -S link -S symlink

In the present implementation, the equivalent to the above groups is
(per each watch):

-a exit,always -S chmod -S fchmod -S chown -S fchown -S lchown
-S creat -S open -S truncate -S ftruncate -S mkdir -S rmdir -S unlink
-S rename -S link -S symlink -F watch=/etc/sysconfig/console

Now you don't have any rules for access(), so using it as the test
case is much more interesting.

> -a entry,always -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr
> -a entry,always -S mknod
> -a entry,always -S mount
> -a entry,always -S adjtimex -S settimeofday

Ideally, these would be a single rule.

> > 2) what system call(s) did you measure?
>
> access("/usr/include", 0);
>
> The watch rules were never triggered because I wanted to measure the overhead
> where no audit events occur. The syscall exercises the file system without
> doing any IO, which would complicate things, too.
>
> -Steve
>