Hi, (I'm not subscribed to the list, so please CC me in replies.)
Several people reported seeing excessive getpid(2) calls in Firefox (thousands per second). Mark Johnston did a quick dtrace profile, which pointed to libnss3.so`PK11_DigestFinal+0xf6. I dug a little in the NSS source code. While there is nothing too obvious in PK11_DigestFinal itself, I located a probable culprit: the fork detection logic in "softtokens." The codebase can detect forks using either pthread_atfork(3) or repeatedly checking getpid(2). Unfortunately, today it only uses the more efficient pthread_atfork(3) approach on glibc-based operating systems. The good news is that FreeBSD implements pthread_atfork(3), and (as suggested as required by a nearby code comment) deregisters callbacks located in dlclose(3)ed shared objects. So it should be possible to enable CHECK_FORK_PTHREAD for FreeBSD in NSS, eliminating one source of slowdown in NSS and Firefox. I've filed a Mozilla bug tracking this here: https://bugzilla.mozilla.org/show_bug.cgi?id=1335284 Note that I haven't actually tested Firefox with this change, so I wouldn't go ahead and commit anything just yet. Konstantin suggested I email this list in case there is some interest in testing / driving this change at Mozilla. Thanks, Conrad _______________________________________________ [email protected] mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-gecko To unsubscribe, send any mail to "[email protected]"
