Up to Main Index                          Up to Journal for February, 2021

                    JOURNAL FOR SUNDAY 28TH FEBRUARY, 2021

SUBJECT: Chit-chat and progressing network changes
   DATE: Mon  1 Mar 02:11:48 GMT 2021

Time for one last journal entry before the end of the month. This is good as
the entries this month have been few. I’ve spent some more time on the chat
server experiments. While the experiments seem to have been progressing quite
well, I’ve not been touching the WolfMUD code for what seems like ages. The
Raspberry Pi 4 I’ve roped in for testing is still fan-less and running hot[1],
Some of my free time has been spent on providing some private Go tutoring,
which I have enjoyed doing a lot.

So, WolfMUD. I sometimes look at your code and it seems to be so ugly. I see
flaws in both design and implementation. Yet, I love my little project all the
same and strive to improve you, to make you a thing of beauty.

Currently I’ve parked the experiments on the chat server. The good bits I’ve
been merging into WolfMUD and had 10,000+ and even 20,000+ clients connected:

  With 10,241 clients:
    U[752Mb  +67Mb] A[ +8806341] O[ 7750371  +1361390] T[10513 +0] G[20509 +0]
    U[509Mb -243Mb] A[ +8734228] O[ 1904936  -5845435] T[10513 +0] G[20509 +0]
    U[551Mb  +42Mb] A[ +8392318] O[ 3010142  +1105206] T[10513 +0] G[20509 +0]
    U[589Mb  +38Mb] A[ +8417220] O[ 4113964  +1103822] T[10513 +0] G[20509 +0]
    U[624Mb  +34Mb] A[ +8150093] O[ 4984656   +870692] T[10513 +0] G[20509 +0]
    U[657Mb  +33Mb] A[ +7855822] O[ 5605698   +621042] T[10513 +0] G[20509 +0]

  With 20,481 clients:
    U[ 1Gb  +334Mb] A[+45977594] O[14375050 +11009769] T[20753 +0] G[40989 +0]
    U[ 1Gb  -262Mb] A[+43631596] O[ 6017973  -8357077] T[20753 +0] G[40989 +0]
    U[ 1Gb  +240Mb] A[+41719675] O[13508112  +7490139] T[20753 +0] G[40989 +0]
    U[ 1Gb  +175Mb] A[+40110186] O[19594274  +6086162] T[20753 +0] G[40989 +0]
    U[ 1Gb  -361Mb] A[+39259455] O[ 7923765 -11670509] T[20753 +0] G[40989 +0]
    U[ 1Gb   +94Mb] A[+37105589] O[11115726  +3191961] T[20753 +0] G[40989 +0]

      U=memory usage, A=allocations/sec, O=objects, T=things, G=goroutines

In both cases this was run without any network tuning and a backlog of 1024
messages per client. A backlog of 1024 was chosen at random, being quite large
accounts for the increase in memory usage. All client commands completed
within a few seconds, no messages dropped and the server stays responsive.

I still need to do some tuning to reduce memory usage. There is also an issue
which I think is due to the network connections not being taken down cleanly.

My plan is to give this until next weekend. If I can’t sort out all of the
issues then I will either release ‘as is’ or hide the new functionality behind
a feature flag in the server configuration.

Go 1.16 was released on 16th February which turns on module mode by default.

This means I need to get the latest version of WolfMUD out sooner rather than
later. On the 18th February there was a blog post[2] that stated: “We plan to
drop support for GOPATH mode in Go 1.17”. Hrm[3]…


  [1] The plan is to remove the fan from the shroud it comes with. It seems a
      nice enough fan that can be temperature controlled using the gpio-fan
      overlay without any fuss or extra components.

  [2] The Go Blog, New module changes in Go 1.16:

  [3] How that does not break the compatibility guarantee “that programs
      written to the Go 1 specification will continue to compile and run
      correctly, unchanged, over the lifetime of that specification”? I have
      no idea. The post also says “If you have projects that do not build in
      module-aware mode, now is the time to migrate”. The compiles and runs
      unchanged seems to be at odds with the need to migrate…

  Up to Main Index                          Up to Journal for February, 2021