BIND 10 Team Call: 2011-11-01



Memory leak in logging

Jinmei: Tried to fix memory leak in xfrin. But memory footprint of xfrin grew again and again. In 8 hours it increased from 15MB to >80MB. Replaced logging with dummy functions and the leak went away (mostly). Still saw some increase. Don't know the cause - footprint increase is much smaller if logging disabled.

Stephen: Quick test on logger_example using valgrind. Did not see any leak in the C++ logging code. Is this a leak in the python wrapper code?

Jinmei: Found suggestion on web that there is are memory leaks in log4cplus. If this is the case, may need to think about we keep using it.

Jelte: Discussion on the web page is not clear if they were leaks or just a loss of statically initialized memory.

Stephen: Found claim that log4cplus has cleaned up latest release.

Michal: Regarding memory leaks in general. Apache serves certain amount of requests, then child is dropped and a new child started. Could do this from time to time for the components. Not solve memory leak itself, but would mitigate it.

Stephen: Suggest we raise a ticket to investigate problem in C++ library/log4cplus. If negative, raise a ticket to investigate logging in python wrapper. But do we see problem in auth/resolver (C++ based) or only Python code (xfrin etc.)

Jinmei: Don't know.

Michal: Could this be thread-based, as xfrin starts a lot of threads.

Jinmei: Opened tickets and put them in net-sprint-proposed queue (#1359 and #1360).

Jelte: Suggest we put clean-up code in wrappers to help used of valgrind and as part of tackling these tickets.

Boss module configuration

Default to empty, or to a standard set (like the one we have now)?

Michal: If we consider BIND 10 to be DNS server only, logical to provide default configuration (e.g. auth). If a framework, suggest we start nothing.

Jelte: Idea to provide several different default profiles (auth, resolver etc.) with the distribution.

Stephen: Bit problem is that you can't set the configuration unless you start BIND 10?

Michal: That's true.

Stephen: How do we get them to set the default profile.

Jelte: Suggest we enable resolver listening to local host by default.

Michal: Authoritatve server with no zones loaded is the safest.

Stephen: How about starting up bindctl and have it prompt if no configuration present?

Michal: Won't work as in many cases the startup is through the init process.

Stephen: Empty startup (only msgq etc.) is safest them. What does BIND 9 do?

Jeremy: Starts resolver.

Stephen: OK, start resolver then (same as BIND 9) - principle of least surprise.

Jinmei: Not sure if this is best - people don't start BIND 9 using a default configuration.

Stephen: How about starting with an empty configuration and using bindctl to load a configuration?

Jelte: Should we open a ticket? (Stephen - yes)

List of started components in Boss configuration, or one 'start' item in each modules own configuration?

Jelte: Suggest this be in Boss

Michal: Agree - else how does Boss know about components? Possibility that components tell Boss that they want to be started?

Stephen: How can component do this without being started?

Jinmei: This is not part of #213 - have no problems about listing components in Boss configuration. The ticket is aimed at how modules are started (e.g. command-line passed to modules). Wanted to separate how to start module from Boss.

Michal: Seems to be misunderstanding of the ticket.

Jelte: Boss should not override modules own configuration. Should not be component-specific things in Boss-specific component.

Michal: There are some things (e.g. message queue related).

Jelte: Thinking about things like port number of command/control daemon.

Stephen: Does seem to imply that Boss can't pass command-line options.

Michal: That is the aim. If something is passed over command line, can't change it at run-time. May want ability to override configuration on command line anyway.

jelte: Should also try to reduce number of environment variables.

AXFR performance

Jinmei: Noticed when trying to fix memory leak in xfrin. Tested with large zone of > 8,000,000 records. Tried BIND9 -> BIND 10 AXFR, took 9 minutes. BIND 9 -> BIND 9 transfer took 75 seconds. Didn't follow this up in detail, but looks like a bottleneck in the Python code. Also, there is the overhead of using an SQLite database backend in general. But fully optimised, the database bottleneck would still be significant. Wonder if this is feasible. Could say transfer zone out of band then use IXFR.

Jelte: If tied to backend, would say that we should use another backend.

Michal: Should not be fixing it now.

Jinmei: Agree.

Stephen: One way of chasing the problem would be to implement in MySql - better performance than SQLite and should nto require too much work.

Jinmei: Not sure if better performance is true.

Jelte: Suggest that when we do decide that we want to make another database backend that we add an extra ticket to compare performance.

Jinmei: Agreed - just a "heads up" at this point.

Statistics planning?

(We discussed something about this in the sprint meeting)

Jelte: JPRS were going to have an internal talk then report.

Fujiwara: Not discussed yet. Will talk about the issue tomorrow.


Jeremy: Plan to set up autobuilder with Clang analyser installed. Been using it for BIND 9. Should have this done next week.

Jeremy: Already old ticket about library versioning. Will create a branch for that and tackle it using libtool. Need to match up with correct libraries when we have interface changes. Made a wiki page about it. Should do this before every release.

Jeremy: FreeBSD box has been complaining because code was installed in /usr/local. Even tests run from source tree matched on the .0 version. Details are in the wiki page.

Stephen: Question - can we submit own builds into build-bots.

Jeremy: Yes and no. Will send an email about it.

Jelte: What happens if we merge a branch - do we have to do anything?

Jeremy: No - one time entry in the queue.

Last modified 6 years ago Last modified on Nov 1, 2011, 4:08:18 PM