Date: Wed, 7 Jul 2010 17:26:27 +0200 From: Vikash Badal <Vikash.Badal@is.co.za> To: "freebsd-threads@freebsd.org" <freebsd-threads@freebsd.org> Subject: syslog strangeness on freebsd 8.0 and 8.1-RC when using threads Message-ID: <9B425C841283E0418B1825D40CBCFA613D9E525940@ZABRYSVISEXMBX1.af.didata.local>
next in thread | raw e-mail | index | archive | help
Can someone please assist me with some strangeness on FreeBSD 8.0 and 8.1= -RC2 using a threaded test code code, I see the that freebsd 8.x seems to be u= sing more memory when using the syslog() call from a c program: Results: 7.2 without syslog =20 PID USERNAME THR PRI NICE SIZE RES STATE TIME WCPU COMMA= ND 26872 vikashb 1001 8 0 128M 14236K RUN 0:00 0.00% a.out with syslog =20 PID USERNAME THR PRI NICE SIZE RES STATE TIME WCPU COMMA= ND 26881 vikashb 1001 44 0 128M 26236K RUN 0:00 0.00% a.out 8.0-RELEASE-p3 without syslog =20 PID USERNAME THR PRI NICE SIZE RES STATE TIME WCPU COMMA= ND 61529 vikashb 1001 44 0 129M 14840K RUN 0:01 0.00% a.out with syslog =20 PID USERNAME THR PRI NICE SIZE RES STATE TIME WCPU COMMA= ND 61507 vikashb 1001 44 0 257M 42708K RUN 0:30 0.00% a.out 8.1-RC2 without syslog =20 PID USERNAME THR PRI NICE SIZE RES STATE TIME WCPU COMMA= ND 33062 vikashb 1001 44 0 129M 14804K RUN 0:00 0.00% a.out with syslog =20 PID USERNAME THR PRI NICE SIZE RES STATE TIME WCPU COMMA= ND 33056 vikashb 1001 44 0 257M 42708K RUN 0:03 0.00% a.out I have not been able to find any reasonable information via google. Why does syslog result in more memory being consumed on 8.x as opposed to= =207.2 ? <CODE> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/time.h> #include <stdarg.h> #include <errno.h> #include <syslog.h> #include <signal.h> #include <pthread.h> char *ProgramName =3D "WTF"; int loop =3D 0; int LogToSTDOUT =3D 1; void LogMessage(int debug, const char *fmt,...) { =20 extern int LogToSTDOUT; =20 char message[8192]; =20 memset(message, 0, sizeof(message)); =20 va_list args; =20 va_start(args, fmt); =20 vsnprintf(message, sizeof(message), fmt, args); =20 va_end(args); =20 if ( LogToSTDOUT ) =20 { =20 printf("%s\n", message); =20 } =20 syslog(LOG_NOTICE, "%s", message); } unsigned long int getTimeNow() { =20 struct timeval tv; =20 if ( gettimeofday(&tv, NULL) =3D=3D -1 ) =20 { =20 LogMessage(0, "ERROR(%d) %s\n", errno, strerror(errno)); =20 tv.tv_sec =3D 0; =20 } =20 return tv.tv_sec; } void HandleSignal(int sig) { =20 loop =3D 0; =20 LogMessage(0, "loop =3D %d\n", loop); =20 signal(sig, SIG_IGN); =20 usleep(1000); } void *worker(int n) { =20 while ( loop ) =20 { =20 LogMessage(0, "worker #%d logging", n); =20 usleep(1000); =20 } =20 pthread_exit(0); } int main(int argc, char* argv[]) { =20 pthread_t* tpool; =20 int workers =3D 1000, i, rc; =20 openlog(ProgramName, LOG_PID, LOG_MAIL); =20 unsigned long int duration =3D 120, StartTime, TimeNow; =20 signal(SIGINT, HandleSignal); =20 signal(SIGTERM, HandleSignal); =20 signal(SIGHUP, HandleSignal); =20 signal(SIGQUIT, HandleSignal); =20 StartTime =3D getTimeNow(); =20 tpool =3D (pthread_t*)malloc(workers * sizeof(pthread_t)); =20 if ( tpool =3D=3D NULL ) =20 { =20 LogMessage(0, "malloc failed \n"); =20 closelog(); =20 exit(-1); =20 } =20 memset(tpool, 0, sizeof(pthread_t) * workers); =20 loop =3D 1; =20 for ( i =3D 0; i < workers; i++ ) =20 { =20 rc =3D pthread_create(&tpool[i], NULL, (void *(*)(void*))&worker,= =20(void*)i); =20 if ( rc !=3D 0 ) =20 { =20 LogMessage(0, "pthread_create #%d failed\n", i ); =20 pthread_cancel(tpool[i]); =20 } =20 else =20 { =20 pthread_detach(tpool[i]); =20 } =20 } =20 LogMessage(0, "loop =3D %d\n", loop); =20 while ( loop ) =20 { =20 TimeNow =3D getTimeNow(); =20 if ( ( TimeNow - StartTime ) > duration ) =20 { =20 loop =3D 0; =20 } =20 usleep(1000); =20 } =20 for ( i =3D 0; i < workers; i++ ) =20 { =20 pthread_cancel(tpool[i]); =20 } =20 for ( i =3D 0; i < workers; i++ ) =20 { =20 pthread_join(tpool[i], NULL); =20 } =20 free(tpool); =20 closelog(); =20 exit(0); } </CODE> Please note: This email and its content are subject to the disclaimer as = displayed at the following link http://www.is.co.za/legal/E-mail+Confiden= tiality+Notice+and+Disclaimer.htm. Should you not have Web access, send a= =20mail to disclaimers@is.co.za and a copy will be emailed to you. _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "freebsd-questions-unsubscribe@freebsd.o= rg" Please note: This email and its content are subject to the disclaimer as = displayed at the following link http://www.is.co.za/legal/E-mail+Confiden= tiality+Notice+and+Disclaimer.htm. Should you not have Web access, send a= =20mail to disclaimers@is.co.za and a copy will be emailed to you.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9B425C841283E0418B1825D40CBCFA613D9E525940>