Date: Sat, 18 Mar 2006 17:01:53 GMT From: Robert Watson <rwatson@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 93511 for review Message-ID: <200603181701.k2IH1r5x004312@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=93511 Change 93511 by rwatson@rwatson_peppercorn on 2006/03/18 17:01:32 When pulling the global audit queue's contents into a thread-local queue, generate one low water mark transition signal, rather than many, and generate it only if actually crossing the transition point, rather than every time we notice we're below it. Affected files ... .. //depot/projects/trustedbsd/audit3/sys/security/audit/audit.c#21 edit Differences ... ==== //depot/projects/trustedbsd/audit3/sys/security/audit/audit.c#21 (text+ko) ==== @@ -555,7 +555,7 @@ struct ucred *audit_cred; struct thread *audit_td; struct vnode *audit_vp; - int error; + int error, lowater_signal; AUDIT_PRINTF(("audit_worker starting\n")); @@ -607,13 +607,16 @@ * our own clustering, if the lower layers aren't doing it * automatically enough. */ + lowater_signal = 0; while ((ar = TAILQ_FIRST(&audit_q))) { TAILQ_REMOVE(&audit_q, ar, k_q); audit_q_len--; - if (audit_q_len <= audit_qctrl.aq_lowater) - cv_broadcast(&audit_commit_cv); + if (audit_q_len == audit_qctrl.aq_lowater) + lowater_signal++; TAILQ_INSERT_TAIL(&ar_worklist, ar, k_q); } + if (lowater_signal) + cv_broadcast(&audit_commit_cv); mtx_unlock(&audit_mtx); while ((ar = TAILQ_FIRST(&ar_worklist))) {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200603181701.k2IH1r5x004312>