Maintained by: NLnet Labs

Stats Shared Memory

Luiz Fernando Softov
Sat Mar 25 03:13:11 CET 2017


Sorry for the delay, I had personal problems for some days.

Thank you for include my patch. This will be very usefull.

I had read the modifications you have made. This is great. :)

For me, I don't need to reset the memory.

Because the SHM isn't like stats, even stats_noreset. There is no known in
unbound (daemon), that someone is reading the memory (I think).

And, SHM will be always the current stats info (total + worker[]). So, if
someone reset stats, using 'unbound-control stats', SHM will be reseted to.


We just need this 2, for SHM in read 'client side'
Both are in /daemon/stats.h

struct server_stats
struct stats_info

Maybe, when compiling this file can go to system include files.
In FreeBSD, the .h file goes to /usr/local/include/

Then
/usr/local/include/unbound_stats.h

Or something like this.

SHM, is to be used in the same machine, with the same struct.

So, when I change unbound, I need to recompile my daemon.
It's the price. And I pay smiling.

Best regards, Softov

2017-02-23 8:09 GMT-04:00 W.C.A. Wijngaards via Unbound-users <
unbound-users at unbound.net>:

> Hi Luiz,
>
> Thank you for your patch.  I have included it (but not in 1.6.1, but it
> is in the code repository for 1.6.2).
>
> Modified the patch a bit to clean it up and I added unbound-control
> stats_shm, that makes unbound-control print out the normal stats output
> from it, but using shm to get the information.
>
> I also added shm-enable and shm-key to unbound.conf.  Disabled by default.
>
> Not sure when to reset the memory, so I didn't.  I guess unbound-control
> could reset the memory after printing out the results (unless 'noreset')?
>
> The .h file is harder, unbound.h that gets installed is the obvious
> choide, but not sure how to deal with version changes, and different
> statistics output...
>
> Best regards, Wouter
>
> On 14/02/17 10:57, Luiz Fernando Softov via Unbound-users wrote:
> > ​Hi,
> > I don't know if it's relevant, but in January i have sent a message to
> > the mailing list
> > about this.
> >
> > http://unbound.net/pipermail/unbound-users/2017-January/004626.html
> >
> >> Yes, I would like to get the diff file for that patch.  Lower CPU usage
> >> is nice, and SHM is an interesting construction.  Can you send me the
> >> diff; or link to the github pull/push thingy that contains the diff (or
> >> the newest diff if you updated it recently)?
> > . . .
> > I put my changes here. https://github.com/softov/unbound
> >
> > This branch is 1 commit ahead, 12 commits behind NLnetLabs:master.
> >
> > But, if you need, I can make the update.
> >
> >>​ ​Depending on how invasive this is, I can put it in the mainline code
> >>​ ​(optional) or it can be a patch that is available to other users in
> the
> >>​ ​contrib directory.
> >
> > As I said before.
> >
> > This make 2 SHM instances and I am using the timer to stats-interval to
> > fill the memory.
> >
> > I have​ some​ ​daemons, reading this stats​ ​with shmget​ ​each second.
> > It's been a few​ ​weeks​ since I launched​ ​the last​ ​release​ ​with​ ​
> > this changes for my clients.
> >
> > I have ~2400 clients running my SO, called FreeBRS - Free BrByte Routing
> > System.
> > Which is a release based on FreeBSD.
> > For those clients, the average of requests are between 50 and 1500 per
> > second.
> >
> > I all clientes, the CPU consume is 0%, while using my own daemon,
> >  who use ssl in a tcp connection like unbound-control.
> > The CPU increase ~3% in my daemon and ~2,5% in unbound.
> > -- -- -- -- -- -- -- -- -- -- -- --
> >
> >> Although there may be an rc3 because of pkg-config vs autoconf problems,
> >> I don't want to introduce features in rc3; so it'd be there for the
> >> subsequent release.
> >
> > I thing there is more to do about, like.
> > 1 - setting variables in conf (I don't know how)
> > * shm-key: number
> > * shm-enabled: yes or no
> > Maybe
> > * shm-interval: number, if 0 or null shm will be filled in the timer
> >  of stat-interval, like i have made, > 0 will be created a reserved timer
> >  and I don't know how to interact with the base or how much I can change
> >  because, you know using threads, this can create problems
> >
> > 2 - reset shared memory - zerofill values
> > 3 - A header file.h to be referenced in the binary who is reading this
> info
> > like a file with the struct and etc.
> >
> > For now, I only need the conf options, and I don't know how to make
> those.
> >
> > It will be my pleasure to help you in some way.
> > The Unbound have been helping the community a lot.
> > Here in Brazil, its used by about 80% of the ISPs.
> >
> > Thanks for the reply.
> > Best regards, Softov
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://unbound.nlnetlabs.nl/pipermail/unbound-users/attachments/20170324/49906fc0/attachment.html>