NLS/strerror efficiency

Kostik Belousov kostikbel at gmail.com
Tue Jan 19 21:20:26 UTC 2010


Hi,
r189765 enabled NLS support for libc. Now, any strerror(3) call causes
4 (!) failing stat(2) calls. I think this is untolerable.

Catopen() does not cache the catalog descriptor, at least for libc,
at least for the case where the open failed.

On the active web server, these msgcat activities easily become
dominant in the CPU time of the web server process.

  1715 nginx    CALL  open(0x804004bc0,O_RDONLY,<unused>0)
  1715 nginx    NAMI  "/usr/home/guests/xenos/var/rvs/docroot/1/l/101/6/g"
  1715 nginx    RET   open -1 errno 2 No such file or directory
  1715 nginx    CALL  stat(0x7fffffffd9b0,0x7fffffffd930)
  1715 nginx    NAMI  "/usr/share/nls/C/libc.cat"
  1715 nginx    RET   stat -1 errno 2 No such file or directory
  1715 nginx    CALL  stat(0x7fffffffd9b0,0x7fffffffd930)
  1715 nginx    NAMI  "/usr/share/nls/libc/C"
  1715 nginx    RET   stat -1 errno 2 No such file or directory
  1715 nginx    CALL  stat(0x7fffffffd9b0,0x7fffffffd930)
  1715 nginx    NAMI  "/usr/local/share/nls/C/libc.cat"
  1715 nginx    RET   stat -1 errno 2 No such file or directory
  1715 nginx    CALL  stat(0x7fffffffd9b0,0x7fffffffd930)
  1715 nginx    NAMI  "/usr/local/share/nls/libc/C"
  1715 nginx    RET   stat -1 errno 2 No such file or directory
  1715 nginx    CALL  write(0x46,0x7fffffffdec0,0x109)
  1715 nginx    GIO   fd 70 wrote 265 bytes
       "2010/01/19 14:41:09 [error] 1715#0: *40673092 open() "/usr/home/guests\
   /xenos/var/rvs/docroot/1/l/101/6/g" failed (2: No such file or directo\
   ry), client: YYY.YYY.YYY.YYY, server: do.not.say.this, reque\
   st: "GET /1/l/101/6/g HTTP/1.1", host: "XXX.XXX.XXX.XXX"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20100119/df1120f6/attachment.pgp


More information about the freebsd-current mailing list