Skip to main content

Art of Performance

Home Network Upgrade: OPNsense Router/Firewall

# Introduction Like many others, we had the whole family working and schooling from home during the peak of the COVID-19 pandemic in 2020/2021. The performance of my home network was somewhat inconsistent during multiple video calls happening concurrently. This prompted a complete rethink of the network, helped along by the fact that we were also planning some home remodeling at the time. I am not a network engineer, but have played around enough over the years to have a good grasp of basic concepts.

Major SoCs are heterogeneous-ISA machines

A typical System-on-Chip (or SoC) in a modern smartphone, tablet, or a laptop will have a structure like this: You may have one ore more CPU cores, some number of GPU cores, a multimedia controller (for hardware accelerated video encode/decode). Modern SoCs may also include a neural network engine (NPU) for inferencing. The chip will also include one or more memory controllers (for DRAM) and several I/O controllers (for WiFi, Bluetooth, cellular modem, etc.

A Volatile Situation

As a hardware engineer, most of the code that I write is either in assembly or low-level C (apart from the shell scripts to run simulation jobs or Perl/Python to parse log files). I am therefore very familiar with the volatile type qualifier in the C language. Referring to my well-worn copy of the Kernighan and Ritchie “The C Programming Language” book, the section on volatile states: The purpose of volatile is to force an implementation to suppress optimization that could otherwise occur.

Programming in the age of AI

Recently, I had a big debate with a few friends about teaching programming to kids. I was talking to them about a Python coding exercise that I was working on with my son. Several of these friends insisted that there is no point in learning programming anymore, since AI is going to write the code. Now, these are all very smart people, some of whom are in the tech industry, and whose opinions I value a lot.

On Debug

In my very first “real” job after graduate school, a few of us who had joined recently were given an overview of the server processor chip we were going to work on. In that overview session, the principal architect of the chip said, “No matter what area you are working on, 85% of your time will be spent on debugging something that isn’t working the way it was intended. So get good at debugging to root cause.