[OpenAFS-port-freebsd] Patch to set thread title for pthreaded viced

Matt W. Benjamin matt@linuxbox.com
Sat, 2 Apr 2011 17:55:19 -0400 (EDT)


Hi,

Do mean, relative to the fs request threads?  I have changesets which create thread pools for various background and on-demand processing tasks, and I think they are effective.

Matt

----- "Garrett Wollman" <wollman@csail.mit.edu> wrote:

> Some operating systems (at least FreeBSD and OpenBSD) have the
> pthread_set_name_np(3) interface to set the thread title.  Although
> the manual page says:
> 
>      This is a debugging interface and using it on a day-by-day basis
> makes no
>      sense.
> 
> ...this is fact wrong: the thread title is pushed into the kernel,
> where it can be observed by ps(1) and top(1), among others.  Here's a
> patch that makes the threads started by viced itself set names for
> themselves.  (Note that this has no effect on the threads that are
> started through the Rx server API, but that's probably a good thing,
> since the only thing it could say is "fileserver worker #42".)  There
> are other operating systems that allow threads to set an
> application-specific identifier (string or numeric) so perhaps this
> function should actually be abstracted out into a common library.
> 
> I actually don't think that the current threading model used in the
> fileserver actually makes much sense; I'll have more comments on that
> when I've collected some actual data.
> 
> -GAWollman
> 
> 
> ---
>  acinclude.m4      |    8 ++++++++
>  src/viced/viced.c |    6 ++++++
>  2 files changed, 14 insertions(+), 0 deletions(-)
> 
> diff --git a/acinclude.m4 b/acinclude.m4
> index 7452cbc..d4005de 100644
> --- a/acinclude.m4
> +++ b/acinclude.m4
> @@ -1230,6 +1230,7 @@ AC_CHECK_HEADERS([ \
>  		   ncurses.h \
>  		   netdb.h \
>  		   netinet/in.h \
> +		   pthread_np.h \
>  		   pwd.h \
>  		   regex.h \
>  		   resolv.h \
> @@ -1499,6 +1500,13 @@ else
>      AC_MSG_RESULT(no)
>  fi
>  
> +if test "$ac_cv_header_pthread_np_h" = "yes"; then
> +	openafs_old_LIBS="$LIBS"
> +	LIBS="$LIBS $PTHREAD_LIBS"
> +	AC_CHECK_FUNCS(pthread_set_name_np)
> +	LIBS="$openafs_old_LIBS"
> +fi
> +
>  AC_TYPE_SIGNAL
>  OPENAFS_RETSIGTYPE
>  AC_CHECK_SIZEOF(void *)
> diff --git a/src/viced/viced.c b/src/viced/viced.c
> index ce327e5..c5c3196 100644
> --- a/src/viced/viced.c
> +++ b/src/viced/viced.c
> @@ -87,6 +87,9 @@
>  #include "host.h"
>  #ifdef AFS_PTHREAD_ENV
>  #include <afs/softsig.h>
> +#ifdef HAVE_PTHREAD_NP_H
> +#include <pthread_np.h>
> +#endif /* HAVE_PTHREAD_NP_H */
>  #endif
>  #if defined(AFS_SGI_ENV)
>  #include "sys/schedctl.h"
> @@ -431,6 +434,9 @@ setThreadId(char *s)
>      /* set our 'thread-id' so that the host hold table works */
>      pthread_setspecific(rx_thread_id_key,
>  			(void *)(intptr_t)rx_NewThreadId());
> +#ifdef HAVE_PTHREAD_SET_NAME_NP
> +    pthread_set_name_np(pthread_self(), s);
> +#endif
>      ViceLog(0,
>  	    ("Set thread id %p for '%s'\n",
>  	     pthread_getspecific(rx_thread_id_key), s));
> -- 
> 1.7.4.1
> _______________________________________________
> port-freebsd mailing list
> port-freebsd@openafs.org
> https://lists.openafs.org/mailman/listinfo/port-freebsd

-- 

Matt Benjamin

The Linux Box
206 South Fifth Ave. Suite 150
Ann Arbor, MI  48104

http://linuxbox.com

tel. 734-761-4689
fax. 734-769-8938
cel. 734-216-5309