summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--about/resources.gmi188
-rw-r--r--gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.gmi28
-rw-r--r--gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.gmi.tpl28
-rw-r--r--gemfeed/atom.xml30
-rw-r--r--index.gmi2
-rw-r--r--uptime-stats.gmi2
6 files changed, 148 insertions, 130 deletions
diff --git a/about/resources.gmi b/about/resources.gmi
index 8d104b72..46c8dea4 100644
--- a/about/resources.gmi
+++ b/about/resources.gmi
@@ -36,102 +36,102 @@ You won't find any links on this site because, over time, the links will break.
In random order:
-* 100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications
-* 97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly
-* Terraform Cookbook; Mikael Krief; Packt Publishing
-* Java ist auch eine Insel; Christian Ullenboom;
+* Modern Perl; Chromatic ; Onyx Neon Press
* Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly
-* The Pragmatic Programmer; David Thomas; Addison-Wesley
-* The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional Pro Git; Scott Chacon, Ben Straub; Apress
-* Effective Java; Joshua Bloch; Addison-Wesley Professional
-* 21st Century C: C Tips from the New School; Ben Klemens; O'Reilly
-* Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf
-* Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press
-* The Kubernetes Book; Nigel Poulton; Unabridged Audiobook
-* Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers
-* Polished Ruby Programming; Jeremy Evans; Packt Publishing
* Raku Fundamentals; Moritz Lenz; Apress
-* Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications
* Raku Recipes; J.J. Merelo; Apress
* Higher Order Perl; Mark Dominus; Morgan Kaufmann
-* Developing Games in Java; David Brackeen and others...; New Riders
-* Perl New Features; Joshua McAdams, brian d foy; Perl School
-* Site Reliability Engineering; How Google runs production systems; O'Reilly
-* Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt
-* Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly
-* Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly
+* Java ist auch eine Insel; Christian Ullenboom;
* Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers
+* 21st Century C: C Tips from the New School; Ben Klemens; O'Reilly
+* Data Science at the Command Line; Jeroen Janssens; O'Reilly
* Pro Puppet; James Turnbull, Jeffrey McCune; Apress
-* Ultimate Go Notebook; Bill Kennedy
-* The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible
* Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson
-* Systemprogrammierung in Go; Frank Müller; dpunkt
-* Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner
+* Ultimate Go Notebook; Bill Kennedy
* The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton
-* Modern Perl; Chromatic ; Onyx Neon Press
-* Data Science at the Command Line; Jeroen Janssens; O'Reilly
-* The Docker Book; James Turnbull; Kindle
-* DNS and BIND; Cricket Liu; O'Reilly
* Concurrency in Go; Katherine Cox-Buday; O'Reilly
-* The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional
+* The Kubernetes Book; Nigel Poulton; Unabridged Audiobook
+* Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers
+* Effective Java; Joshua Bloch; Addison-Wesley Professional
+* The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional Pro Git; Scott Chacon, Ben Straub; Apress
+* Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications
+* Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner
+* Developing Games in Java; David Brackeen and others...; New Riders
+* Effective awk programming; Arnold Robbins; O'Reilly
+* Site Reliability Engineering; How Google runs production systems; O'Reilly
+* Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly
+* Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press
* Funktionale Programmierung; Peter Pepper; Springer
-* DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible
+* Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly
+* Polished Ruby Programming; Jeremy Evans; Packt Publishing
+* The Docker Book; James Turnbull; Kindle
+* The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional
+* Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly
+* 97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly
* C++ Programming Language; Bjarne Stroustrup;
-* Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly
+* Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf
* Leanring eBPF; Liz Rice; O'Reilly
-* Effective awk programming; Arnold Robbins; O'Reilly
-* Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly
+* Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly
+* Terraform Cookbook; Mikael Krief; Packt Publishing
+* DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible
+* Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt
+* Systemprogrammierung in Go; Frank Müller; dpunkt
+* The Pragmatic Programmer; David Thomas; Addison-Wesley
+* DNS and BIND; Cricket Liu; O'Reilly
+* 100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications
+* The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible
+* Perl New Features; Joshua McAdams, brian d foy; Perl School
* Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press
## Technical references
I didn't read them from the beginning to the end, but I am using them to look up things. The books are in random order:
+* Implementing Service Level Objectives; Alex Hidalgo; O'Reilly
+* Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly
* The Linux Programming Interface; Michael Kerrisk; No Starch Press
-* Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley
-* Relayd and Httpd Mastery; Michael W Lucas
* Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly
-* Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly
-* Implementing Service Level Objectives; Alex Hidalgo; O'Reilly
+* Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley
* BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley
+* Relayd and Httpd Mastery; Michael W Lucas
## Self-development and soft-skills books
In random order:
-* Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne
-* Slow Productivity; Cal Newport; Penguin Random House
-* The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)
-* Staff Engineer: Leadership beyond the management track; Will Larson; Audible
-* The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK
-* Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion
-* Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press
* Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)
-* Ultralearning; Anna Laurent; Self-published via Amazon
-* The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select
-* The Joy of Missing Out; Christina Crook; New Society Publishers
-* Stop starting, start finishing; Arne Roock; Lean-Kanban University
-* So Good They Can't Ignore You; Cal Newport; Business Plus
-* 101 Essays that change the way you think; Brianna Wiest; Audible
-* Deep Work; Cal Newport; Piatkus
-* Psycho-Cybernetics; Maxwell Maltz; Perigee Books
-* Eat That Frog!; Brian Tracy; Hodder Paperbacks
-* Influence without Authority; A. Cohen, D. Bradford; Wiley
-* Eat That Frog; Brian Tracy
+* Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly
* Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing
+* Influence without Authority; A. Cohen, D. Bradford; Wiley
+* Staff Engineer: Leadership beyond the management track; Will Larson; Audible
+* Never Split the Difference; Chris Voss, Tahl Raz; Random House Business
* The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books
-* The Power of Now; Eckhard Tolle; Yellow Kite
-* The Good Enough Job; Simone Stolzoff; Ebury Edge
-* The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd
-* Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly
+* Soft Skills; John Sommez; Manning Publications
+* Atomic Habits; James Clear; Random House Business
* The Bullet Journal Method; Ryder Carroll; Fourth Estate
+* Getting Things Done; David Allen
+* Eat That Frog!; Brian Tracy; Hodder Paperbacks
+* The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)
+* Eat That Frog; Brian Tracy
+* The Joy of Missing Out; Christina Crook; New Society Publishers
+* The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd
* Digital Minimalism; Cal Newport; Portofolio Penguin
-* The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook
-* Atomic Habits; James Clear; Random House Business
-* Never Split the Difference; Chris Voss, Tahl Raz; Random House Business
+* The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK
* Ultralearning; Scott Young; Thorsons
-* Getting Things Done; David Allen
-* Soft Skills; John Sommez; Manning Publications
+* Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press
+* The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook
+* The Power of Now; Eckhard Tolle; Yellow Kite
+* So Good They Can't Ignore You; Cal Newport; Business Plus
+* Stop starting, start finishing; Arne Roock; Lean-Kanban University
+* Deep Work; Cal Newport; Piatkus
+* Slow Productivity; Cal Newport; Penguin Random House
+* Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion
+* 101 Essays that change the way you think; Brianna Wiest; Audible
+* Ultralearning; Anna Laurent; Self-published via Amazon
+* The Good Enough Job; Simone Stolzoff; Ebury Edge
+* Psycho-Cybernetics; Maxwell Maltz; Perigee Books
+* Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne
+* The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select
=> ../notes/index.gmi Here are notes of mine for some of the books
@@ -139,30 +139,30 @@ In random order:
Some of these were in-person with exams; others were online learning lectures only. In random order:
-* Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training
-* Functional programming lecture; Remote University of Hagen
-* AWS Immersion Day; Amazon; 1-day interactive online training
+* Ultimate Go Programming; Bill Kennedy; O'Reilly Online
* Developing IaC with Terraform (with Live Lessons); O'Reilly Online
+* Scripting Vim; Damian Conway; O'Reilly Online
+* Protocol buffers; O'Reilly Online
+* Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online
* Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon
+* F5 Loadbalancers Training; 2-day on-site training; F5, Inc.
* MySQL Deep Dive Workshop; 2-day on-site training
+* Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training
+* Functional programming lecture; Remote University of Hagen
+* Red Hat Certified System Administrator; Course + certification (Although I had the option, I decided not to take the next course as it is more effective to self learn what I need)
* Structure and Interpretation of Computer Programs; Harold Abelson and more...;
-* The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online
+* AWS Immersion Day; Amazon; 1-day interactive online training
* Apache Tomcat Best Practises; 3-day on-site training
* The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online
-* Protocol buffers; O'Reilly Online
-* F5 Loadbalancers Training; 2-day on-site training; F5, Inc.
-* Scripting Vim; Damian Conway; O'Reilly Online
-* Ultimate Go Programming; Bill Kennedy; O'Reilly Online
-* Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online
-* Red Hat Certified System Administrator; Course + certification (Although I had the option, I decided not to take the next course as it is more effective to self learn what I need)
+* The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online
## Technical guides
These are not whole books, but guides (smaller or larger) which I found very useful. in random order:
-* How CPUs work at https://cpu.land
* Advanced Bash-Scripting Guide
* Raku Guide at https://raku.guide
+* How CPUs work at https://cpu.land
## Podcasts
@@ -170,55 +170,55 @@ These are not whole books, but guides (smaller or larger) which I found very use
In random order:
+* Deep Questions with Cal Newport
* The Changelog Podcast(s)
-* Fork Around And Find Out
-* The ProdCast (Google SRE Podcast)
-* Dev Interrupted
* Fallthrough [Golang]
-* Hidden Brain
+* Fork Around And Find Out
* Backend Banter
-* Cup o' Go [Golang]
+* Hidden Brain
* The Pragmatic Engineer Podcast
-* Maintainable
-* Deep Questions with Cal Newport
+* Cup o' Go [Golang]
+* Dev Interrupted
+* The ProdCast (Google SRE Podcast)
* BSD Now
+* Maintainable
### Podcasts I liked
I liked them but am not listening to them anymore. The podcasts have either "finished" (no more episodes) or I stopped listening to them due to time constraints or a shift in my interests.
-* Ship It (predecessor of Fork Around And Find Out)
-* FLOSS weekly
-* CRE: Chaosradio Express [german]
-* Modern Mentor
* Go Time (predecessor of fallthrough)
+* Modern Mentor
* Java Pub House
+* FLOSS weekly
+* CRE: Chaosradio Express [german]
+* Ship It (predecessor of Fork Around And Find Out)
## Newsletters I like
This is a mix of tech and non-tech newsletters I am subscribed to. In random order:
* The Valuable Dev
-* The Pragmatic Engineer
-* Golang Weekly
+* byteSizeGo
* The Imperfectionist
-* Monospace Mentor
-* Andreas Brandhorst Newsletter (Sci-Fi author)
-* Changelog News
-* Ruby Weekly
* Applied Go Weekly Newsletter
* VK Newsletter
+* Monospace Mentor
+* Ruby Weekly
* Register Spill
-* byteSizeGo
+* Changelog News
+* The Pragmatic Engineer
+* Andreas Brandhorst Newsletter (Sci-Fi author)
+* Golang Weekly
## Magazines I like(d)
This is a mix of tech I like(d). I may not be a current subscriber, but now and then, I buy an issue. In random order:
* LWN (online only)
-* Linux Magazine
* Linux User
* freeX (not published anymore)
+* Linux Magazine
# Formal education
diff --git a/gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.gmi b/gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.gmi
index fc4201b2..38811e7b 100644
--- a/gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.gmi
+++ b/gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.gmi
@@ -108,7 +108,9 @@ NAME DATASTORE LOADER CPU MEMORY VNC AUTO STATE
As guest VMs I decided to use Rocky Linux.
-Using Rocky Linux 9 as a VM-based OS is beneficial primarily because of its long-term support and stable release cycle. This ensures a reliable environment that receives security updates and bug fixes for an extended period, reducing the need for frequent upgrades. Rocky Linux is community-driven and aims to be fully compatible with enterprise Linux, making it a solid choice for consistency and performance in various deployment scenarios.
+Using Rocky Linux 9 as a VM-based OS is beneficial primarily because of its long-term support and stable release cycle. This ensures a reliable environment that receives security updates and bug fixes for an extended period, reducing the need for frequent upgrades.
+
+Rocky Linux is community-driven and aims to be fully compatible with enterprise Linux, making it a solid choice for consistency and performance in various deployment scenarios.
=> https://rockylinux.org/
@@ -122,6 +124,7 @@ paul@f0:~ % doas vm iso \
/zroot/bhyve/.iso/Rocky-9.5-x86_64-minimal.iso 1808 MB 4780 kBps 06m28s
paul@f0:/bhyve % doas vm create rocky
```
+
### VM configuration
The default Bhyve VM configuration looks like this now:
@@ -139,7 +142,7 @@ uuid="1c4655ac-c828-11ef-a920-e8ff1ed71ca0"
network0_mac="58:9c:fc:0d:13:3f"
```
-The `uuid` and the `network0_mac` differ for each of the three VMs.
+The `uuid` and the `network0_mac` differ for each of the three VMs (the ones being installed on `f0`, `f1` and `f2`).
But to make Rocky Linux boot it (plus some other adjustments, e.g. as we intend to run the majority of the workload in the k3s cluster running on those Linux VMs, we give them beefy specs like 4 CPU cores and 14GB RAM). So we run `doas vm configure rocky` and modified it to:
@@ -181,7 +184,7 @@ Port 5900 now also opens for VNC connections, so I connected it with a VNC clien
### Increase of the disk image
-By default, the VM disk image is only 20G, which is a bit small for our purposes, so I stopped the VMs again, ran `truncate` on the image file to enlarge them to 100G, and re-started the installation:
+By default, the VM disk image is only 20G, which is a bit small for our purposes, so we have to stop the VMs again, run `truncate` on the image file to enlarge them to 100G, and restart the installation:
```sh
paul@f0:/bhyve/rocky % doas vm stop rocky
@@ -205,7 +208,7 @@ I primarily selected the default settings (auto partitioning on the 100GB drive
## After install
-We perform the following steps for all 3 VMs. In the following, the examples are all executed on `f0` (the VM `r0` running on `f0`):
+We perform the following steps for all three VMs. In the following, the examples are all executed on `f0` (the VM `r0` running on `f0`):
### VM auto-start after host reboot
@@ -228,7 +231,7 @@ rocky default uefi 4 14G 0.0.0.0:5900 Yes [1] Running (2063)
### Static IP configuration
-After that, we change the network configuration of the VMs to be static (from DHCP) here. As per the previous post of this series, the 3 FreeBSD hosts were already in my `/etc/hosts` file:
+After that, we change the network configuration of the VMs to be static (from DHCP) here. As per the previous post of this series, the three FreeBSD hosts were already in my `/etc/hosts` file:
```
192.168.1.130 f0 f0.lan f0.lan.buetow.org
@@ -274,13 +277,13 @@ As these VMs aren't directly reachable via SSH from the internet, we enable `ro
Once done, we reboot the VM by running `reboot` inside the VM to test whether everything was configured and persisted correctly.
-After reboot, I copied my public key from my Laptop to the 3 VMs:
+After reboot, we copy a public key over. E.g. I did this from my Laptop as follows:
```sh
% for i in 0 1 2; do ssh-copy-id root@r$i.lan.buetow.org; done
```
-Then, I edited the `/etc/ssh/sshd_config` file again on all 3 VMs and configured `PasswordAuthentication no` to only allow SSH key authentication from now on.
+Then, we edit the `/etc/ssh/sshd_config` file again on all three VMs and configure `PasswordAuthentication no` to only allow SSH key authentication from now on.
### Install latest updates
@@ -374,13 +377,14 @@ cpu: Intel(R) N100
BenchmarkCPUSilly1-4 1000000000 0.4347 ns/op
BenchmarkCPUSilly2-4 1000000000 0.4345 ns/op
```
+
The Linux benchmark is slightly slower than the FreeBSD one. The Go version is also a bit older. I tried the same with the up-to-date version of Go (1.24.x) with similar results. There could be a slight Bhyve overhead, or FreeBSD is just slightly more efficient in this benchmark. Overall, this shows that Bhyve performs excellently.
### Silly FreeBSD VM @ Bhyve benchmark
But as I am curious and don't want to compare apples with bananas, I decided to install a FreeBSD Bhyve VM to run the same silly benchmark in it. I am not going through the details of how to install a FreeBSD Bhyve VM here; you can easily look it up in the documentation.
-But here are the results running the same silly benchmark in a FreeBSD Bhyve VM with the same FreeBSD and Go versions as the host system (I have the VM 4 vCPUs and 14GB of RAM; the benchmark won't use as many CPUs anyway):
+But here are the results running the same silly benchmark in a FreeBSD Bhyve VM with the same FreeBSD and Go versions as the host system (I have the VM 4 vCPUs and 14GB of RAM; the benchmark won't use as many CPUs (and memory) anyway):
```sh
root@freebsd:~/git/sillybench # go test -bench=.
@@ -398,7 +402,7 @@ It's a bit better than Linux! I am sure that this is not really a scientific ben
## Benchmarking with `ubench`
-Let's run another, more sophisticated benchmark using `ubench`, the Unix Benchmark Utility available for FreeBSD. It was installed by simply running `doas pkg install ubench`. It can benchmark CPU and memory performance. Here, we limit it to one CPU for the first run with `-s`, and then let it run at full speed in the second run.
+Let's run another, more sophisticated benchmark using `ubench`, the Unix Benchmark Utility available for FreeBSD. It was installed by simply running `doas pkg install ubench`. It can benchmark CPU and memory performance. Here, we limit it to one CPU for the first run with `-s`, and then let it run at full speed (using all available CPUs in parallel) in the second run.
### FreeBSD host `ubench` benchmark
@@ -450,6 +454,8 @@ Ubench Single MEM: 852757 (0.48s)
Ubench Single AVG: 762774
```
+Wow, the CPU in the VM was a tiny bit faster than on the host! So this was probably just a glitch in the matrix. Memory seems slower, though.
+
All CPUs:
```sh
@@ -482,7 +488,7 @@ Also, during the benchmark, I noticed the `bhyve` process on the host was consta
7449 root 14 20 0 14G 78M kqread 2 2:12 399.81% bhyve
```
-Overall, Bhyve has a small overhead, but the CPU performance difference is negligible. The FreeBSD host is slightly faster than the FreeBSD VM running on Bhyve, but the difference is small enough for our use cases. The memory benchmark seems slightly off, but I don't know whether to trust it. Do you have an idea?
+Overall, Bhyve has a small overhead, but the CPU performance difference is negligible. The FreeBSD host is slightly faster than the FreeBSD VM running on Bhyve, but the difference is small enough for our use cases. The memory benchmark seems slightly off, but I'm not sure whether to trust it, especially due to the swap errors. Does `ubench`'s memory benchmark use swap space for the memory test? That wouldn't make sense and might explain the difference to some degree, though. Do you have any ideas?
### Rocky Linux VM @ Bhyve `ubench` benchmark
@@ -490,7 +496,7 @@ Unfortunately, I wasn't able to find `ubench` in any of the Rocky Linux reposito
## Conclusion
-Having Linux VMs running inside FreeBSD's Bhyve is a solid move for future F3s hosting in my home lab. Bhyve provides a reliable way to manage VMs without much hassle. With Linux VMs, I can tap into all the cool stuff (e.g., Kubernetes) in the Linux world while keeping the steady reliability of FreeBSD.
+Having Linux VMs running inside FreeBSD's Bhyve is a solid move for future f3s hosting in my home lab. Bhyve provides a reliable way to manage VMs without much hassle. With Linux VMs, I can tap into all the cool stuff (e.g., Kubernetes, eBPF, systemd) in the Linux world while keeping the steady reliability of FreeBSD.
Future uses (out of scope for this blog series) would be additional VMs for different workloads. For example, how about a Windows or NetBSD VM to tinker with?
diff --git a/gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.gmi.tpl b/gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.gmi.tpl
index 48104d1a..62bea7d7 100644
--- a/gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.gmi.tpl
+++ b/gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.gmi.tpl
@@ -80,7 +80,9 @@ NAME DATASTORE LOADER CPU MEMORY VNC AUTO STATE
As guest VMs I decided to use Rocky Linux.
-Using Rocky Linux 9 as a VM-based OS is beneficial primarily because of its long-term support and stable release cycle. This ensures a reliable environment that receives security updates and bug fixes for an extended period, reducing the need for frequent upgrades. Rocky Linux is community-driven and aims to be fully compatible with enterprise Linux, making it a solid choice for consistency and performance in various deployment scenarios.
+Using Rocky Linux 9 as a VM-based OS is beneficial primarily because of its long-term support and stable release cycle. This ensures a reliable environment that receives security updates and bug fixes for an extended period, reducing the need for frequent upgrades.
+
+Rocky Linux is community-driven and aims to be fully compatible with enterprise Linux, making it a solid choice for consistency and performance in various deployment scenarios.
=> https://rockylinux.org/
@@ -94,6 +96,7 @@ paul@f0:~ % doas vm iso \
/zroot/bhyve/.iso/Rocky-9.5-x86_64-minimal.iso 1808 MB 4780 kBps 06m28s
paul@f0:/bhyve % doas vm create rocky
```
+
### VM configuration
The default Bhyve VM configuration looks like this now:
@@ -111,7 +114,7 @@ uuid="1c4655ac-c828-11ef-a920-e8ff1ed71ca0"
network0_mac="58:9c:fc:0d:13:3f"
```
-The `uuid` and the `network0_mac` differ for each of the three VMs.
+The `uuid` and the `network0_mac` differ for each of the three VMs (the ones being installed on `f0`, `f1` and `f2`).
But to make Rocky Linux boot it (plus some other adjustments, e.g. as we intend to run the majority of the workload in the k3s cluster running on those Linux VMs, we give them beefy specs like 4 CPU cores and 14GB RAM). So we run `doas vm configure rocky` and modified it to:
@@ -153,7 +156,7 @@ Port 5900 now also opens for VNC connections, so I connected it with a VNC clien
### Increase of the disk image
-By default, the VM disk image is only 20G, which is a bit small for our purposes, so I stopped the VMs again, ran `truncate` on the image file to enlarge them to 100G, and re-started the installation:
+By default, the VM disk image is only 20G, which is a bit small for our purposes, so we have to stop the VMs again, run `truncate` on the image file to enlarge them to 100G, and restart the installation:
```sh
paul@f0:/bhyve/rocky % doas vm stop rocky
@@ -177,7 +180,7 @@ I primarily selected the default settings (auto partitioning on the 100GB drive
## After install
-We perform the following steps for all 3 VMs. In the following, the examples are all executed on `f0` (the VM `r0` running on `f0`):
+We perform the following steps for all three VMs. In the following, the examples are all executed on `f0` (the VM `r0` running on `f0`):
### VM auto-start after host reboot
@@ -200,7 +203,7 @@ rocky default uefi 4 14G 0.0.0.0:5900 Yes [1] Running (2063)
### Static IP configuration
-After that, we change the network configuration of the VMs to be static (from DHCP) here. As per the previous post of this series, the 3 FreeBSD hosts were already in my `/etc/hosts` file:
+After that, we change the network configuration of the VMs to be static (from DHCP) here. As per the previous post of this series, the three FreeBSD hosts were already in my `/etc/hosts` file:
```
192.168.1.130 f0 f0.lan f0.lan.buetow.org
@@ -246,13 +249,13 @@ As these VMs aren't directly reachable via SSH from the internet, we enable `ro
Once done, we reboot the VM by running `reboot` inside the VM to test whether everything was configured and persisted correctly.
-After reboot, I copied my public key from my Laptop to the 3 VMs:
+After reboot, we copy a public key over. E.g. I did this from my Laptop as follows:
```sh
% for i in 0 1 2; do ssh-copy-id root@r$i.lan.buetow.org; done
```
-Then, I edited the `/etc/ssh/sshd_config` file again on all 3 VMs and configured `PasswordAuthentication no` to only allow SSH key authentication from now on.
+Then, we edit the `/etc/ssh/sshd_config` file again on all three VMs and configure `PasswordAuthentication no` to only allow SSH key authentication from now on.
### Install latest updates
@@ -346,13 +349,14 @@ cpu: Intel(R) N100
BenchmarkCPUSilly1-4 1000000000 0.4347 ns/op
BenchmarkCPUSilly2-4 1000000000 0.4345 ns/op
```
+
The Linux benchmark is slightly slower than the FreeBSD one. The Go version is also a bit older. I tried the same with the up-to-date version of Go (1.24.x) with similar results. There could be a slight Bhyve overhead, or FreeBSD is just slightly more efficient in this benchmark. Overall, this shows that Bhyve performs excellently.
### Silly FreeBSD VM @ Bhyve benchmark
But as I am curious and don't want to compare apples with bananas, I decided to install a FreeBSD Bhyve VM to run the same silly benchmark in it. I am not going through the details of how to install a FreeBSD Bhyve VM here; you can easily look it up in the documentation.
-But here are the results running the same silly benchmark in a FreeBSD Bhyve VM with the same FreeBSD and Go versions as the host system (I have the VM 4 vCPUs and 14GB of RAM; the benchmark won't use as many CPUs anyway):
+But here are the results running the same silly benchmark in a FreeBSD Bhyve VM with the same FreeBSD and Go versions as the host system (I have the VM 4 vCPUs and 14GB of RAM; the benchmark won't use as many CPUs (and memory) anyway):
```sh
root@freebsd:~/git/sillybench # go test -bench=.
@@ -370,7 +374,7 @@ It's a bit better than Linux! I am sure that this is not really a scientific ben
## Benchmarking with `ubench`
-Let's run another, more sophisticated benchmark using `ubench`, the Unix Benchmark Utility available for FreeBSD. It was installed by simply running `doas pkg install ubench`. It can benchmark CPU and memory performance. Here, we limit it to one CPU for the first run with `-s`, and then let it run at full speed in the second run.
+Let's run another, more sophisticated benchmark using `ubench`, the Unix Benchmark Utility available for FreeBSD. It was installed by simply running `doas pkg install ubench`. It can benchmark CPU and memory performance. Here, we limit it to one CPU for the first run with `-s`, and then let it run at full speed (using all available CPUs in parallel) in the second run.
### FreeBSD host `ubench` benchmark
@@ -422,6 +426,8 @@ Ubench Single MEM: 852757 (0.48s)
Ubench Single AVG: 762774
```
+Wow, the CPU in the VM was a tiny bit faster than on the host! So this was probably just a glitch in the matrix. Memory seems slower, though.
+
All CPUs:
```sh
@@ -454,7 +460,7 @@ Also, during the benchmark, I noticed the `bhyve` process on the host was consta
7449 root 14 20 0 14G 78M kqread 2 2:12 399.81% bhyve
```
-Overall, Bhyve has a small overhead, but the CPU performance difference is negligible. The FreeBSD host is slightly faster than the FreeBSD VM running on Bhyve, but the difference is small enough for our use cases. The memory benchmark seems slightly off, but I don't know whether to trust it. Do you have an idea?
+Overall, Bhyve has a small overhead, but the CPU performance difference is negligible. The FreeBSD host is slightly faster than the FreeBSD VM running on Bhyve, but the difference is small enough for our use cases. The memory benchmark seems slightly off, but I'm not sure whether to trust it, especially due to the swap errors. Does `ubench`'s memory benchmark use swap space for the memory test? That wouldn't make sense and might explain the difference to some degree, though. Do you have any ideas?
### Rocky Linux VM @ Bhyve `ubench` benchmark
@@ -462,7 +468,7 @@ Unfortunately, I wasn't able to find `ubench` in any of the Rocky Linux reposito
## Conclusion
-Having Linux VMs running inside FreeBSD's Bhyve is a solid move for future F3s hosting in my home lab. Bhyve provides a reliable way to manage VMs without much hassle. With Linux VMs, I can tap into all the cool stuff (e.g., Kubernetes) in the Linux world while keeping the steady reliability of FreeBSD.
+Having Linux VMs running inside FreeBSD's Bhyve is a solid move for future f3s hosting in my home lab. Bhyve provides a reliable way to manage VMs without much hassle. With Linux VMs, I can tap into all the cool stuff (e.g., Kubernetes, eBPF, systemd) in the Linux world while keeping the steady reliability of FreeBSD.
Future uses (out of scope for this blog series) would be additional VMs for different workloads. For example, how about a Windows or NetBSD VM to tinker with?
diff --git a/gemfeed/atom.xml b/gemfeed/atom.xml
index 409914d0..99661636 100644
--- a/gemfeed/atom.xml
+++ b/gemfeed/atom.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
- <updated>2025-04-04T23:27:14+03:00</updated>
+ <updated>2025-04-04T23:43:38+03:00</updated>
<title>foo.zone feed</title>
<subtitle>To be in the .zone!</subtitle>
<link href="gemini://foo.zone/gemfeed/atom.xml" rel="self" />
@@ -144,7 +144,9 @@ NAME DATASTORE LOADER CPU MEMORY VNC AUTO STATE
<br />
<span>As guest VMs I decided to use Rocky Linux.</span><br />
<br />
-<span>Using Rocky Linux 9 as a VM-based OS is beneficial primarily because of its long-term support and stable release cycle. This ensures a reliable environment that receives security updates and bug fixes for an extended period, reducing the need for frequent upgrades. Rocky Linux is community-driven and aims to be fully compatible with enterprise Linux, making it a solid choice for consistency and performance in various deployment scenarios.</span><br />
+<span>Using Rocky Linux 9 as a VM-based OS is beneficial primarily because of its long-term support and stable release cycle. This ensures a reliable environment that receives security updates and bug fixes for an extended period, reducing the need for frequent upgrades.</span><br />
+<br />
+<span>Rocky Linux is community-driven and aims to be fully compatible with enterprise Linux, making it a solid choice for consistency and performance in various deployment scenarios.</span><br />
<br />
<a class='textlink' href='https://rockylinux.org/'>https://rockylinux.org/</a><br />
<br />
@@ -161,6 +163,7 @@ http://www.gnu.org/software/src-highlite -->
/zroot/bhyve/.iso/Rocky-<font color="#000000">9.5</font>-x86_64-minimal.iso <font color="#000000">1808</font> MB <font color="#000000">4780</font> kBps 06m28s
paul@f0:/bhyve % doas vm create rocky
</pre>
+<br />
<h3 style='display: inline' id='vm-configuration'>VM configuration</h3><br />
<br />
<span>The default Bhyve VM configuration looks like this now:</span><br />
@@ -181,7 +184,7 @@ uuid=<font color="#808080">"1c4655ac-c828-11ef-a920-e8ff1ed71ca0"</font>
network0_mac=<font color="#808080">"58:9c:fc:0d:13:3f"</font>
</pre>
<br />
-<span>The <span class='inlinecode'>uuid</span> and the <span class='inlinecode'>network0_mac</span> differ for each of the three VMs.</span><br />
+<span>The <span class='inlinecode'>uuid</span> and the <span class='inlinecode'>network0_mac</span> differ for each of the three VMs (the ones being installed on <span class='inlinecode'>f0</span>, <span class='inlinecode'>f1</span> and <span class='inlinecode'>f2</span>).</span><br />
<br />
<span>But to make Rocky Linux boot it (plus some other adjustments, e.g. as we intend to run the majority of the workload in the k3s cluster running on those Linux VMs, we give them beefy specs like 4 CPU cores and 14GB RAM). So we run <span class='inlinecode'>doas vm configure rocky</span> and modified it to:</span><br />
<br />
@@ -226,7 +229,7 @@ root bhyve <font color="#000000">6079</font> <font color="#000000">8</
<br />
<h3 style='display: inline' id='increase-of-the-disk-image'>Increase of the disk image</h3><br />
<br />
-<span>By default, the VM disk image is only 20G, which is a bit small for our purposes, so I stopped the VMs again, ran <span class='inlinecode'>truncate</span> on the image file to enlarge them to 100G, and re-started the installation:</span><br />
+<span>By default, the VM disk image is only 20G, which is a bit small for our purposes, so we have to stop the VMs again, run <span class='inlinecode'>truncate</span> on the image file to enlarge them to 100G, and restart the installation:</span><br />
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
@@ -253,7 +256,7 @@ paul@f0:/bhyve/rocky % doas vm install rocky Rocky-<font color="#000000">9.5</fo
<br />
<h2 style='display: inline' id='after-install'>After install</h2><br />
<br />
-<span>We perform the following steps for all 3 VMs. In the following, the examples are all executed on <span class='inlinecode'>f0</span> (the VM <span class='inlinecode'>r0</span> running on <span class='inlinecode'>f0</span>):</span><br />
+<span>We perform the following steps for all three VMs. In the following, the examples are all executed on <span class='inlinecode'>f0</span> (the VM <span class='inlinecode'>r0</span> running on <span class='inlinecode'>f0</span>):</span><br />
<br />
<h3 style='display: inline' id='vm-auto-start-after-host-reboot'>VM auto-start after host reboot</h3><br />
<br />
@@ -281,7 +284,7 @@ rocky default uefi <font color="#000000">4</font> 14G <font color=
<br />
<h3 style='display: inline' id='static-ip-configuration'>Static IP configuration</h3><br />
<br />
-<span>After that, we change the network configuration of the VMs to be static (from DHCP) here. As per the previous post of this series, the 3 FreeBSD hosts were already in my <span class='inlinecode'>/etc/hosts</span> file:</span><br />
+<span>After that, we change the network configuration of the VMs to be static (from DHCP) here. As per the previous post of this series, the three FreeBSD hosts were already in my <span class='inlinecode'>/etc/hosts</span> file:</span><br />
<br />
<pre>
192.168.1.130 f0 f0.lan f0.lan.buetow.org
@@ -334,7 +337,7 @@ END
<br />
<span>Once done, we reboot the VM by running <span class='inlinecode'>reboot</span> inside the VM to test whether everything was configured and persisted correctly.</span><br />
<br />
-<span>After reboot, I copied my public key from my Laptop to the 3 VMs:</span><br />
+<span>After reboot, we copy a public key over. E.g. I did this from my Laptop as follows:</span><br />
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
@@ -343,7 +346,7 @@ http://www.gnu.org/software/src-highlite -->
<pre>% <b><u><font color="#000000">for</font></u></b> i <b><u><font color="#000000">in</font></u></b> <font color="#000000">0</font> <font color="#000000">1</font> <font color="#000000">2</font>; <b><u><font color="#000000">do</font></u></b> ssh-copy-id root@r$i.lan.buetow.org; <b><u><font color="#000000">done</font></u></b>
</pre>
<br />
-<span>Then, I edited the <span class='inlinecode'>/etc/ssh/sshd_config</span> file again on all 3 VMs and configured <span class='inlinecode'>PasswordAuthentication no</span> to only allow SSH key authentication from now on.</span><br />
+<span>Then, we edit the <span class='inlinecode'>/etc/ssh/sshd_config</span> file again on all three VMs and configure <span class='inlinecode'>PasswordAuthentication no</span> to only allow SSH key authentication from now on.</span><br />
<br />
<h3 style='display: inline' id='install-latest-updates'>Install latest updates</h3><br />
<br />
@@ -455,13 +458,14 @@ cpu: Intel(R) N100
BenchmarkCPUSilly1-<font color="#000000">4</font> <font color="#000000">1000000000</font> <font color="#000000">0.4347</font> ns/op
BenchmarkCPUSilly2-<font color="#000000">4</font> <font color="#000000">1000000000</font> <font color="#000000">0.4345</font> ns/op
</pre>
+<br />
<span>The Linux benchmark is slightly slower than the FreeBSD one. The Go version is also a bit older. I tried the same with the up-to-date version of Go (1.24.x) with similar results. There could be a slight Bhyve overhead, or FreeBSD is just slightly more efficient in this benchmark. Overall, this shows that Bhyve performs excellently.</span><br />
<br />
<h3 style='display: inline' id='silly-freebsd-vm--bhyve-benchmark'>Silly FreeBSD VM @ Bhyve benchmark</h3><br />
<br />
<span>But as I am curious and don&#39;t want to compare apples with bananas, I decided to install a FreeBSD Bhyve VM to run the same silly benchmark in it. I am not going through the details of how to install a FreeBSD Bhyve VM here; you can easily look it up in the documentation.</span><br />
<br />
-<span>But here are the results running the same silly benchmark in a FreeBSD Bhyve VM with the same FreeBSD and Go versions as the host system (I have the VM 4 vCPUs and 14GB of RAM; the benchmark won&#39;t use as many CPUs anyway):</span><br />
+<span>But here are the results running the same silly benchmark in a FreeBSD Bhyve VM with the same FreeBSD and Go versions as the host system (I have the VM 4 vCPUs and 14GB of RAM; the benchmark won&#39;t use as many CPUs (and memory) anyway):</span><br />
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
@@ -482,7 +486,7 @@ ok codeberg.org/snonux/sillybench <font color="#000000">0</font>.949s
<br />
<h2 style='display: inline' id='benchmarking-with-ubench'>Benchmarking with <span class='inlinecode'>ubench</span></h2><br />
<br />
-<span>Let&#39;s run another, more sophisticated benchmark using <span class='inlinecode'>ubench</span>, the Unix Benchmark Utility available for FreeBSD. It was installed by simply running <span class='inlinecode'>doas pkg install ubench</span>. It can benchmark CPU and memory performance. Here, we limit it to one CPU for the first run with <span class='inlinecode'>-s</span>, and then let it run at full speed in the second run.</span><br />
+<span>Let&#39;s run another, more sophisticated benchmark using <span class='inlinecode'>ubench</span>, the Unix Benchmark Utility available for FreeBSD. It was installed by simply running <span class='inlinecode'>doas pkg install ubench</span>. It can benchmark CPU and memory performance. Here, we limit it to one CPU for the first run with <span class='inlinecode'>-s</span>, and then let it run at full speed (using all available CPUs in parallel) in the second run.</span><br />
<br />
<h3 style='display: inline' id='freebsd-host-ubench-benchmark'>FreeBSD host <span class='inlinecode'>ubench</span> benchmark</h3><br />
<br />
@@ -543,6 +547,8 @@ Ubench Single MEM: <font color="#000000">852757</font> (<font color="#000000">
Ubench Single AVG: <font color="#000000">762774</font>
</pre>
<br />
+<span>Wow, the CPU in the VM was a tiny bit faster than on the host! So this was probably just a glitch in the matrix. Memory seems slower, though.</span><br />
+<br />
<span>All CPUs:</span><br />
<br />
<!-- Generator: GNU source-highlight 3.1.9
@@ -578,7 +584,7 @@ Apr <font color="#000000">4</font> <font color="#000000">23</font>:<font color=
7449 root 14 20 0 14G 78M kqread 2 2:12 399.81% bhyve
</pre>
<br />
-<span>Overall, Bhyve has a small overhead, but the CPU performance difference is negligible. The FreeBSD host is slightly faster than the FreeBSD VM running on Bhyve, but the difference is small enough for our use cases. The memory benchmark seems slightly off, but I don&#39;t know whether to trust it. Do you have an idea?</span><br />
+<span>Overall, Bhyve has a small overhead, but the CPU performance difference is negligible. The FreeBSD host is slightly faster than the FreeBSD VM running on Bhyve, but the difference is small enough for our use cases. The memory benchmark seems slightly off, but I&#39;m not sure whether to trust it, especially due to the swap errors. Does <span class='inlinecode'>ubench</span>&#39;s memory benchmark use swap space for the memory test? That wouldn&#39;t make sense and might explain the difference to some degree, though. Do you have any ideas?</span><br />
<br />
<h3 style='display: inline' id='rocky-linux-vm--bhyve-ubench-benchmark'>Rocky Linux VM @ Bhyve <span class='inlinecode'>ubench</span> benchmark</h3><br />
<br />
@@ -586,7 +592,7 @@ Apr <font color="#000000">4</font> <font color="#000000">23</font>:<font color=
<br />
<h2 style='display: inline' id='conclusion'>Conclusion</h2><br />
<br />
-<span>Having Linux VMs running inside FreeBSD&#39;s Bhyve is a solid move for future F3s hosting in my home lab. Bhyve provides a reliable way to manage VMs without much hassle. With Linux VMs, I can tap into all the cool stuff (e.g., Kubernetes) in the Linux world while keeping the steady reliability of FreeBSD.</span><br />
+<span>Having Linux VMs running inside FreeBSD&#39;s Bhyve is a solid move for future f3s hosting in my home lab. Bhyve provides a reliable way to manage VMs without much hassle. With Linux VMs, I can tap into all the cool stuff (e.g., Kubernetes, eBPF, systemd) in the Linux world while keeping the steady reliability of FreeBSD.</span><br />
<br />
<span>Future uses (out of scope for this blog series) would be additional VMs for different workloads. For example, how about a Windows or NetBSD VM to tinker with?</span><br />
<br />
diff --git a/index.gmi b/index.gmi
index 6e6aae86..b9c8eab7 100644
--- a/index.gmi
+++ b/index.gmi
@@ -1,6 +1,6 @@
# Hello!
-> This site was generated at 2025-04-04T23:27:14+03:00 by `Gemtexter`
+> This site was generated at 2025-04-04T23:43:38+03:00 by `Gemtexter`
Welcome to the ...
diff --git a/uptime-stats.gmi b/uptime-stats.gmi
index bca61857..b5105bee 100644
--- a/uptime-stats.gmi
+++ b/uptime-stats.gmi
@@ -1,6 +1,6 @@
# My machine uptime stats
-> This site was last updated at 2025-04-04T23:27:14+03:00
+> This site was last updated at 2025-04-04T23:43:37+03:00
The following stats were collected via `uptimed` on all of my personal computers over many years and the output was generated by `guprecords`, the global uptime records stats analyser of mine.