Huge I/O wait while load testing KDC

Ken Raeburn raeburn at MIT.EDU
Mon Jan 21 17:44:22 EST 2008


On Jan 21, 2008, at 16:52, Shivakeshav Santi wrote:
>     I have an MIT KDC installed on multiprocessor machine with  
> RHEL-4. I
> noticed two things:
>
> a) I see > 80% time spent in i/o (based on sar output)
>
>       The only major i/o would be logs and replay cache (most of  
> the i/o
> was writes). I was wondering if there was a way to turn of logging  
> and/or
> replay cache. I am looking for runtime options or any suggestions to
> improve replay cache i/o performance.

The replay cache does consume a lot of time if there are a lot of  
entries, and if you're load-testing it, there will be a lot of  
entries, as it basically lists the requests from the last N minutes.   
In most cases, however, it's not actually of significant security  
benefit to the KDC, compared with other applications.  Try giving the  
command-line option "-R none:" to disable it, if the version in  
RHEL-4 supports that.  ("-R" specifies a replay cache name; the  
"none" type that doesn't really do anything was added a while back  
for just this case.)

We've also kicked around a few ideas for improving replay cache  
performance in general, some involving changes to the on-disk format,  
some just changing how it's managed in memory, but aside from the KDC  
case we haven't had enough complaints about the performance to put  
that high on the priority list just yet.

> b) I also noticed that kerberos was using only one processor, is  
> there a
> recommended way to configure KDC on a multi processor machine so  
> that I
> could use other processors.

We have received patches for multi-threaded support in some parts of  
the KDC (mainly, allowing multiple requests to be blocked waiting for  
data from the KDC's database, which could be especially slow if it's  
in a remote LDAP server), but unfortunately I haven't had a lot of  
time to test them out so far, being busy instead with various bits of  
non-coding work.  If you'd like to try it out, and can do not just  
some regular stress testing but also exercise it with tools like  
valgrind (and especially its "helgrind" tool), the assistance would  
be appreciated, and could speed up the integration into our source  
tree.  Though if your goal is just to meet some performance criteria,  
disabling the replay cache is probably the biggest benefit.

Ken



More information about the krbdev mailing list