diff options
| -rw-r--r-- | about/resources.html | 206 | ||||
| -rw-r--r-- | gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.html | 116 | ||||
| -rw-r--r-- | gemfeed/atom.xml | 120 | ||||
| -rw-r--r-- | index.html | 2 | ||||
| -rw-r--r-- | uptime-stats.html | 2 |
5 files changed, 337 insertions, 109 deletions
diff --git a/about/resources.html b/about/resources.html index 554d80ee..f622b0df 100644 --- a/about/resources.html +++ b/about/resources.html @@ -50,112 +50,112 @@ <span>In random order:</span><br /> <br /> <ul> -<li>The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible</li> -<li>97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly</li> -<li>Pro Puppet; James Turnbull, Jeffrey McCune; Apress</li> +<li>Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt </li> <li>Raku Fundamentals; Moritz Lenz; Apress</li> -<li>Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly</li> -<li>Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers </li> -<li>Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook</li> -<li>Data Science at the Command Line; Jeroen Janssens; O'Reilly</li> +<li>Site Reliability Engineering; How Google runs production systems; O'Reilly</li> +<li>C++ Programming Language; Bjarne Stroustrup;</li> <li>Funktionale Programmierung; Peter Pepper; Springer</li> -<li>The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton</li> -<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li> -<li>100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications</li> -<li>Polished Ruby Programming; Jeremy Evans; Packt Publishing</li> -<li>Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson</li> -<li>Leanring eBPF; Liz Rice; O'Reilly</li> -<li>The Docker Book; James Turnbull; Kindle</li> -<li>Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt </li> -<li>Seeking SRE: Conversations About Running Production Systems at Scale; David N. Blank-Edelman; eBook</li> -<li>Java ist auch eine Insel; Christian Ullenboom; </li> -<li>Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly</li> +<li>Perl New Features; Joshua McAdams, brian d foy; Perl School</li> +<li>Pro Puppet; James Turnbull, Jeffrey McCune; Apress</li> +<li>Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly</li> <li>DNS and BIND; Cricket Liu; O'Reilly</li> -<li>Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly</li> -<li>Ultimate Go Notebook; Bill Kennedy</li> -<li>Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press</li> +<li>Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications</li> +<li>Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly</li> +<li>The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional</li> +<li>Leanring eBPF; Liz Rice; O'Reilly</li> <li>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</li> -<li>Terraform Cookbook; Mikael Krief; Packt Publishing</li> -<li>Perl New Features; Joshua McAdams, brian d foy; Perl School</li> -<li>C++ Programming Language; Bjarne Stroustrup;</li> +<li>Concurrency in Go; Katherine Cox-Buday; O'Reilly</li> +<li>Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press</li> +<li>Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson</li> +<li>Higher Order Perl; Mark Dominus; Morgan Kaufmann</li> <li>The Pragmatic Programmer; David Thomas; Addison-Wesley</li> <li>Developing Games in Java; David Brackeen and others...; New Riders</li> -<li>Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications</li> -<li>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</li> +<li>Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf</li> +<li>Ultimate Go Notebook; Bill Kennedy</li> +<li>Effective awk programming; Arnold Robbins; O'Reilly</li> +<li>Java ist auch eine Insel; Christian Ullenboom; </li> +<li>The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton</li> <li>Modern Perl; Chromatic ; Onyx Neon Press</li> -<li>21st Century C: C Tips from the New School; Ben Klemens; O'Reilly</li> +<li>100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications</li> +<li>Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly</li> +<li>Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly</li> +<li>Seeking SRE: Conversations About Running Production Systems at Scale; David N. Blank-Edelman; eBook</li> +<li>97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly</li> <li>Systemprogrammierung in Go; Frank Müller; dpunkt</li> -<li>Effective Java; Joshua Bloch; Addison-Wesley Professional</li> -<li>Effective awk programming; Arnold Robbins; O'Reilly</li> -<li>Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press</li> -<li>Concurrency in Go; Katherine Cox-Buday; O'Reilly</li> -<li>Higher Order Perl; Mark Dominus; Morgan Kaufmann</li> -<li>Site Reliability Engineering; How Google runs production systems; O'Reilly</li> -<li>The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional</li> <li>Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers</li> +<li>The Docker Book; James Turnbull; Kindle</li> +<li>Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers </li> +<li>Terraform Cookbook; Mikael Krief; Packt Publishing</li> +<li>Polished Ruby Programming; Jeremy Evans; Packt Publishing</li> +<li>The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible</li> +<li>Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press</li> +<li>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</li> +<li>Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook</li> +<li>Effective Java; Joshua Bloch; Addison-Wesley Professional</li> <li>Raku Recipes; J.J. Merelo; Apress</li> -<li>Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf</li> -<li>Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly</li> -<li>Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly</li> <li>Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner</li> +<li>21st Century C: C Tips from the New School; Ben Klemens; O'Reilly</li> +<li>Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly</li> +<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li> +<li>Data Science at the Command Line; Jeroen Janssens; O'Reilly</li> </ul><br /> <h2 style='display: inline' id='technical-references'>Technical references</h2><br /> <br /> <span>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:</span><br /> <br /> <ul> -<li>Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly</li> -<li>Go: Design Patterns for Real-World Projects; Mat Ryer; Packt</li> +<li>Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley</li> <li>Implementing Service Level Objectives; Alex Hidalgo; O'Reilly</li> -<li>Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly</li> <li>Relayd and Httpd Mastery; Michael W Lucas</li> -<li>BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley</li> +<li>Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly</li> +<li>Go: Design Patterns for Real-World Projects; Mat Ryer; Packt</li> <li>The Linux Programming Interface; Michael Kerrisk; No Starch Press </li> -<li>Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley</li> +<li>BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley</li> +<li>Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly</li> </ul><br /> <h2 style='display: inline' id='self-development-and-soft-skills-books'>Self-development and soft-skills books</h2><br /> <br /> <span>In random order:</span><br /> <br /> <ul> -<li>Stop starting, start finishing; Arne Roock; Lean-Kanban University </li> -<li>Atomic Habits; James Clear; Random House Business</li> -<li>The Joy of Missing Out; Christina Crook; New Society Publishers</li> -<li>Getting Things Done; David Allen</li> +<li>The Power of Now; Eckhard Tolle; Yellow Kite</li> <li>Ultralearning; Anna Laurent; Self-published via Amazon</li> -<li>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li> -<li>Digital Minimalism; Cal Newport; Portofolio Penguin</li> -<li>The Software Engineer's Guidebook: Navigating senior, tech lead, and staff engineer positions at tech companies and startups; Gergely Orosz; Audiobook </li> -<li>Slow Productivity; Cal Newport; Penguin Random House</li> <li>Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook</li> -<li>Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing</li> -<li>97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook</li> -<li>Eat That Frog; Brian Tracy</li> -<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</li> -<li>The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK</li> -<li>Psycho-Cybernetics; Maxwell Maltz; Perigee Books</li> -<li>Never Split the Difference; Chris Voss, Tahl Raz; Random House Business</li> -<li>The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook</li> -<li>Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook</li> -<li>Ultralearning; Scott Young; Thorsons</li> -<li>Influence without Authority; A. Cohen, D. Bradford; Wiley</li> -<li>Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly</li> -<li>Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne</li> +<li>Getting Things Done; David Allen</li> <li>The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books</li> +<li>Meditation for Mortals, Oliver Burkeman, Audiobook</li> <li>The Bullet Journal Method; Ryder Carroll; Fourth Estate</li> +<li>Ultralearning; Scott Young; Thorsons</li> +<li>Soft Skills; John Sommez; Manning Publications</li> <li>The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd</li> -<li>The Power of Now; Eckhard Tolle; Yellow Kite</li> -<li>Deep Work; Cal Newport; Piatkus</li> +<li>97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook</li> +<li>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li> <li>The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)</li> +<li>The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select</li> <li>So Good They Can't Ignore You; Cal Newport; Business Plus</li> +<li>Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook</li> +<li>101 Essays that change the way you think; Brianna Wiest; Audiobook</li> <li>The Courage to Be Disliked; Ichiro Kishimi and Fumitake Koga; Audiobook</li> -<li>Soft Skills; John Sommez; Manning Publications</li> +<li>Stop starting, start finishing; Arne Roock; Lean-Kanban University </li> +<li>Atomic Habits; James Clear; Random House Business</li> +<li>Digital Minimalism; Cal Newport; Portofolio Penguin</li> +<li>The Software Engineer's Guidebook: Navigating senior, tech lead, and staff engineer positions at tech companies and startups; Gergely Orosz; Audiobook </li> <li>Eat That Frog!; Brian Tracy; Hodder Paperbacks</li> -<li>Meditation for Mortals, Oliver Burkeman, Audiobook</li> -<li>101 Essays that change the way you think; Brianna Wiest; Audiobook</li> +<li>The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook</li> +<li>Never Split the Difference; Chris Voss, Tahl Raz; Random House Business</li> +<li>Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly</li> +<li>The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK</li> +<li>Eat That Frog; Brian Tracy</li> +<li>Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne</li> <li>The Good Enough Job; Simone Stolzoff; Ebury Edge</li> -<li>The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select</li> -<li>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li> +<li>The Joy of Missing Out; Christina Crook; New Society Publishers</li> +<li>Slow Productivity; Cal Newport; Penguin Random House</li> +<li>Deep Work; Cal Newport; Piatkus</li> +<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</li> +<li>Influence without Authority; A. Cohen, D. Bradford; Wiley</li> +<li>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li> +<li>Psycho-Cybernetics; Maxwell Maltz; Perigee Books</li> +<li>Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing</li> </ul><br /> <a class='textlink' href='../notes/index.html'>Here are notes of mine for some of the books</a><br /> <br /> @@ -164,31 +164,31 @@ <span>Some of these were in-person with exams; others were online learning lectures only. In random order:</span><br /> <br /> <ul> +<li>Ultimate Go Programming; Bill Kennedy; O'Reilly Online</li> <li>Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online</li> -<li>MySQL Deep Dive Workshop; 2-day on-site training</li> +<li>Functional programming lecture; Remote University of Hagen</li> +<li>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)</li> +<li>Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon</li> +<li>Protocol buffers; O'Reilly Online</li> +<li>Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training</li> +<li>The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online</li> <li>The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online</li> +<li>Structure and Interpretation of Computer Programs; Harold Abelson and more...; </li> +<li>MySQL Deep Dive Workshop; 2-day on-site training</li> <li>Developing IaC with Terraform (with Live Lessons); O'Reilly Online</li> -<li>Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon</li> <li>AWS Immersion Day; Amazon; 1-day interactive online training </li> -<li>Protocol buffers; O'Reilly Online</li> -<li>Functional programming lecture; Remote University of Hagen</li> -<li>F5 Loadbalancers Training; 2-day on-site training; F5, Inc. </li> <li>Scripting Vim; Damian Conway; O'Reilly Online</li> -<li>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)</li> -<li>Structure and Interpretation of Computer Programs; Harold Abelson and more...; </li> <li>Apache Tomcat Best Practises; 3-day on-site training</li> -<li>Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training</li> -<li>The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online</li> -<li>Ultimate Go Programming; Bill Kennedy; O'Reilly Online</li> +<li>F5 Loadbalancers Training; 2-day on-site training; F5, Inc. </li> </ul><br /> <h2 style='display: inline' id='technical-guides'>Technical guides</h2><br /> <br /> <span>These are not whole books, but guides (smaller or larger) which I found very useful. in random order:</span><br /> <br /> <ul> -<li>How CPUs work at https://cpu.land</li> -<li>Advanced Bash-Scripting Guide </li> <li>Raku Guide at https://raku.guide </li> +<li>Advanced Bash-Scripting Guide </li> +<li>How CPUs work at https://cpu.land</li> </ul><br /> <h2 style='display: inline' id='podcasts'>Podcasts</h2><br /> <br /> @@ -197,61 +197,61 @@ <span>In random order:</span><br /> <br /> <ul> +<li>Hidden Brain</li> +<li>BSD Now [BSD]</li> +<li>Backend Banter</li> <li>Deep Questions with Cal Newport</li> +<li>Maintainable</li> +<li>The ProdCast (Google SRE Podcast)</li> <li>Dev Interrupted</li> <li>The Pragmatic Engineer Podcast</li> -<li>Hidden Brain</li> -<li>The Changelog Podcast(s)</li> -<li>The ProdCast (Google SRE Podcast)</li> -<li>Wednesday Wisdom</li> -<li>Fork Around And Find Out</li> <li>Modern Mentor</li> -<li>Maintainable</li> -<li>Pratical AI</li> -<li>Cup o' Go [Golang]</li> +<li>Fork Around And Find Out</li> +<li>Wednesday Wisdom</li> <li>Fallthrough [Golang]</li> -<li>BSD Now [BSD]</li> -<li>Backend Banter</li> +<li>The Changelog Podcast(s)</li> +<li>Cup o' Go [Golang]</li> +<li>Pratical AI</li> </ul><br /> <h3 style='display: inline' id='podcasts-i-liked'>Podcasts I liked</h3><br /> <br /> <span>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.</span><br /> <br /> <ul> -<li>Java Pub House</li> -<li>CRE: Chaosradio Express [german]</li> <li>FLOSS weekly</li> +<li>CRE: Chaosradio Express [german]</li> +<li>Ship It (predecessor of Fork Around And Find Out)</li> <li>Go Time (predecessor of fallthrough)</li> <li>Modern Mentor</li> -<li>Ship It (predecessor of Fork Around And Find Out)</li> +<li>Java Pub House</li> </ul><br /> <h2 style='display: inline' id='newsletters-i-like'>Newsletters I like</h2><br /> <br /> <span>This is a mix of tech and non-tech newsletters I am subscribed to. In random order:</span><br /> <br /> <ul> -<li>The Imperfectionist</li> -<li>Register Spill</li> -<li>Applied Go Weekly Newsletter</li> +<li>Changelog News</li> <li>The Valuable Dev</li> <li>byteSizeGo</li> +<li>VK Newsletter</li> <li>Ruby Weekly</li> +<li>Monospace Mentor</li> <li>Golang Weekly</li> <li>The Pragmatic Engineer</li> -<li>VK Newsletter</li> -<li>Changelog News</li> <li>Andreas Brandhorst Newsletter (Sci-Fi author)</li> -<li>Monospace Mentor</li> +<li>Register Spill</li> +<li>Applied Go Weekly Newsletter</li> +<li>The Imperfectionist</li> </ul><br /> <h2 style='display: inline' id='magazines-i-liked'>Magazines I like(d)</h2><br /> <br /> <span>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:</span><br /> <br /> <ul> -<li>freeX (not published anymore)</li> -<li>Linux Magazine</li> <li>Linux User</li> <li>LWN (online only)</li> +<li>freeX (not published anymore)</li> +<li>Linux Magazine</li> </ul><br /> <h1 style='display: inline' id='formal-education'>Formal education</h1><br /> <br /> diff --git a/gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.html b/gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.html index 35a60ed0..b680efac 100644 --- a/gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.html +++ b/gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.html @@ -13,7 +13,7 @@ </p> <h1 style='display: inline' id='f3s-kubernetes-with-freebsd---part-4-rocky-linux-bhyve-vms'>f3s: Kubernetes with FreeBSD - Part 4: Rocky Linux Bhyve VMs</h1><br /> <br /> -<span class='quote'>Published at 2025-04-04T23:21:01+03:00</span><br /> +<span class='quote'>Published at 2025-04-04T23:21:01+03:00, updated Fri 26 Dec 08:51:06 EET 2025</span><br /> <br /> <span>This is the fourth blog post about the f3s series for self-hosting demands in a home lab. f3s? The "f" stands for FreeBSD, and the "3s" stands for k3s, the Kubernetes distribution used on FreeBSD-based physical machines.</span><br /> <br /> @@ -54,6 +54,13 @@ <li>⇢ ⇢ <a href='#freebsd-host-ubench-benchmark'>FreeBSD host <span class='inlinecode'>ubench</span> benchmark</a></li> <li>⇢ ⇢ <a href='#freebsd-vm--bhyve-ubench-benchmark'>FreeBSD VM @ Bhyve <span class='inlinecode'>ubench</span> benchmark</a></li> <li>⇢ ⇢ <a href='#rocky-linux-vm--bhyve-ubench-benchmark'>Rocky Linux VM @ Bhyve <span class='inlinecode'>ubench</span> benchmark</a></li> +<li>⇢ <a href='#update-improving-disk-io-performance-for-etcd'>Update: Improving Disk I/O Performance for etcd</a></li> +<li>⇢ ⇢ <a href='#the-problem'>The Problem</a></li> +<li>⇢ ⇢ <a href='#the-solution-switch-to-nvme-emulation'>The Solution: Switch to NVMe Emulation</a></li> +<li>⇢ ⇢ <a href='#step-1-prepare-the-guest-os'>Step 1: Prepare the Guest OS</a></li> +<li>⇢ ⇢ <a href='#step-2-update-the-bhyve-configuration'>Step 2: Update the Bhyve Configuration</a></li> +<li>⇢ ⇢ <a href='#benchmark-results'>Benchmark Results</a></li> +<li>⇢ ⇢ <a href='#important-notes'>Important Notes</a></li> <li>⇢ <a href='#conclusion'>Conclusion</a></li> </ul><br /> <h2 style='display: inline' id='introduction'>Introduction</h2><br /> @@ -587,6 +594,113 @@ Apr <font color="#000000">4</font> <font color="#000000">23</font>:<font color= <br /> <span>Unfortunately, I wasn't able to find <span class='inlinecode'>ubench</span> in any of the Rocky Linux repositories. So, I skipped this test.</span><br /> <br /> +<h2 style='display: inline' id='update-improving-disk-io-performance-for-etcd'>Update: Improving Disk I/O Performance for etcd</h2><br /> +<br /> +<span class='quote'>Updated: Fri 26 Dec 08:51:23 EET 2025</span><br /> +<br /> +<span>After running k3s for some time, I noticed frequent etcd leader elections and "apply request took too long" warnings in the logs. Investigation revealed that etcd's sync writes were extremely slow - around 250 kB/s with the default <span class='inlinecode'>virtio-blk</span> disk emulation. etcd requires fast sync writes (ideally under 10ms fsync latency) for stable operation.</span><br /> +<br /> +<h3 style='display: inline' id='the-problem'>The Problem</h3><br /> +<br /> +<span>The k3s logs showed etcd struggling with disk I/O:</span><br /> +<br /> +<pre> +{"level":"warn","msg":"apply request took too long","took":"4.996516657s","expected-duration":"100ms"} +{"level":"warn","msg":"slow fdatasync","took":"1.328469363s","expected-duration":"1s"} +</pre> +<br /> +<span>A simple sync write benchmark confirmed the issue:</span><br /> +<br /> +<!-- Generator: GNU source-highlight 3.1.9 +by Lorenzo Bettini +http://www.lorenzobettini.it +http://www.gnu.org/software/src-highlite --> +<pre>[root@r0 ~]<i><font color="silver"># dd if=/dev/zero of=/tmp/test bs=4k count=2000 oflag=dsync</font></i> +<font color="#000000">8192000</font> bytes copied, <font color="#000000">31.7058</font> s, <font color="#000000">258</font> kB/s +</pre> +<br /> +<h3 style='display: inline' id='the-solution-switch-to-nvme-emulation'>The Solution: Switch to NVMe Emulation</h3><br /> +<br /> +<span>Bhyve's NVMe emulation provides significantly better I/O performance than <span class='inlinecode'>virtio-blk</span>.</span><br /> +<br /> +<h3 style='display: inline' id='step-1-prepare-the-guest-os'>Step 1: Prepare the Guest OS</h3><br /> +<br /> +<span>Before changing the disk type, the guest needs NVMe drivers in the initramfs and LVM must be configured to scan all devices (not just those recorded during installation):</span><br /> +<br /> +<!-- Generator: GNU source-highlight 3.1.9 +by Lorenzo Bettini +http://www.lorenzobettini.it +http://www.gnu.org/software/src-highlite --> +<pre>[root@r0 ~]<i><font color="silver"># cat > /etc/dracut.conf.d/nvme.conf << EOF</font></i> +add_drivers+=<font color="#808080">" nvme nvme_core "</font> +hostonly=no +EOF + +[root@r0 ~]<i><font color="silver"># sed -i 's/# use_devicesfile = 1/use_devicesfile = 0/' /etc/lvm/lvm.conf</font></i> +[root@r0 ~]<i><font color="silver"># dracut -f</font></i> +[root@r0 ~]<i><font color="silver"># shutdown -h now</font></i> +</pre> +<br /> +<span>The <span class='inlinecode'>hostonly=no</span> setting ensures the initramfs includes drivers for hardware not currently present. The <span class='inlinecode'>use_devicesfile = 0</span> tells LVM to scan all block devices rather than only those recorded in <span class='inlinecode'>/etc/lvm/devices/system.devices</span> - this is important because the device path changes from <span class='inlinecode'>/dev/vda</span> to <span class='inlinecode'>/dev/nvme0n1</span>.</span><br /> +<br /> +<h3 style='display: inline' id='step-2-update-the-bhyve-configuration'>Step 2: Update the Bhyve Configuration</h3><br /> +<br /> +<span>On the FreeBSD host, update the VM configuration to use NVMe:</span><br /> +<br /> +<!-- Generator: GNU source-highlight 3.1.9 +by Lorenzo Bettini +http://www.lorenzobettini.it +http://www.gnu.org/software/src-highlite --> +<pre>paul@f0:~ % doas vm stop rocky +paul@f0:~ % doas vm configure rocky +</pre> +<br /> +<span>Change <span class='inlinecode'>disk0_type</span> from <span class='inlinecode'>virtio-blk</span> to <span class='inlinecode'>nvme</span>:</span><br /> +<br /> +<pre> +disk0_type="nvme" +</pre> +<br /> +<span>Then start the VM:</span><br /> +<br /> +<!-- Generator: GNU source-highlight 3.1.9 +by Lorenzo Bettini +http://www.lorenzobettini.it +http://www.gnu.org/software/src-highlite --> +<pre>paul@f0:~ % doas vm start rocky +</pre> +<br /> +<h3 style='display: inline' id='benchmark-results'>Benchmark Results</h3><br /> +<br /> +<span>After switching to NVMe emulation, the sync write performance improved dramatically:</span><br /> +<br /> +<!-- Generator: GNU source-highlight 3.1.9 +by Lorenzo Bettini +http://www.lorenzobettini.it +http://www.gnu.org/software/src-highlite --> +<pre>[root@r0 ~]<i><font color="silver"># dd if=/dev/zero of=/tmp/test bs=4k count=2000 oflag=dsync</font></i> +<font color="#000000">8192000</font> bytes copied, <font color="#000000">0.330718</font> s, <font color="#000000">24.8</font> MB/s +</pre> +<br /> +<span>That's approximately **100x faster** than before (24.8 MB/s vs 258 kB/s).</span><br /> +<br /> +<span>The etcd metrics also showed healthy fsync latencies:</span><br /> +<br /> +<pre> +etcd_disk_wal_fsync_duration_seconds_bucket{le="0.001"} 347 +etcd_disk_wal_fsync_duration_seconds_bucket{le="0.002"} 396 +etcd_disk_wal_fsync_duration_seconds_bucket{le="0.004"} 408 +</pre> +<br /> +<span>Most fsyncs now complete in under 1ms, and there are no more "slow fdatasync" warnings in the logs. The k3s cluster is now stable without spurious leader elections.</span><br /> +<br /> +<h3 style='display: inline' id='important-notes'>Important Notes</h3><br /> +<br /> +<ul> +<li>Do NOT use <span class='inlinecode'>disk0_opts="nocache,direct"</span> with NVMe emulation - in my testing this actually made performance worse.</li> +<li>The guest OS must have NVMe drivers in the initramfs before switching, otherwise it won't boot.</li> +<li>LVM's devices file feature (enabled by default in RHEL 9 / Rocky Linux 9) must be disabled to allow booting from a different device path.</li> +</ul><br /> <h2 style='display: inline' id='conclusion'>Conclusion</h2><br /> <br /> <span>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.</span><br /> diff --git a/gemfeed/atom.xml b/gemfeed/atom.xml index ad53209f..994c89f9 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-12-26T01:27:25+02:00</updated> + <updated>2025-12-26T08:51:40+02:00</updated> <title>foo.zone feed</title> <subtitle>To be in the .zone!</subtitle> <link href="https://foo.zone/gemfeed/atom.xml" rel="self" /> @@ -9601,7 +9601,7 @@ __ejm\___/________dwb`---`______________________ <title>f3s: Kubernetes with FreeBSD - Part 4: Rocky Linux Bhyve VMs</title> <link href="https://foo.zone/gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.html" /> <id>https://foo.zone/gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.html</id> - <updated>2025-04-04T23:21:01+03:00</updated> + <updated>2025-04-04T23:21:01+03:00, updated Fri 26 Dec 08:51:06 EET 2025</updated> <author> <name>Paul Buetow aka snonux</name> <email>paul@dev.buetow.org</email> @@ -9611,7 +9611,7 @@ __ejm\___/________dwb`---`______________________ <div xmlns="http://www.w3.org/1999/xhtml"> <h1 style='display: inline' id='f3s-kubernetes-with-freebsd---part-4-rocky-linux-bhyve-vms'>f3s: Kubernetes with FreeBSD - Part 4: Rocky Linux Bhyve VMs</h1><br /> <br /> -<span class='quote'>Published at 2025-04-04T23:21:01+03:00</span><br /> +<span class='quote'>Published at 2025-04-04T23:21:01+03:00, updated Fri 26 Dec 08:51:06 EET 2025</span><br /> <br /> <span>This is the fourth blog post about the f3s series for self-hosting demands in a home lab. f3s? The "f" stands for FreeBSD, and the "3s" stands for k3s, the Kubernetes distribution used on FreeBSD-based physical machines.</span><br /> <br /> @@ -9652,6 +9652,13 @@ __ejm\___/________dwb`---`______________________ <li>⇢ ⇢ <a href='#freebsd-host-ubench-benchmark'>FreeBSD host <span class='inlinecode'>ubench</span> benchmark</a></li> <li>⇢ ⇢ <a href='#freebsd-vm--bhyve-ubench-benchmark'>FreeBSD VM @ Bhyve <span class='inlinecode'>ubench</span> benchmark</a></li> <li>⇢ ⇢ <a href='#rocky-linux-vm--bhyve-ubench-benchmark'>Rocky Linux VM @ Bhyve <span class='inlinecode'>ubench</span> benchmark</a></li> +<li>⇢ <a href='#update-improving-disk-io-performance-for-etcd'>Update: Improving Disk I/O Performance for etcd</a></li> +<li>⇢ ⇢ <a href='#the-problem'>The Problem</a></li> +<li>⇢ ⇢ <a href='#the-solution-switch-to-nvme-emulation'>The Solution: Switch to NVMe Emulation</a></li> +<li>⇢ ⇢ <a href='#step-1-prepare-the-guest-os'>Step 1: Prepare the Guest OS</a></li> +<li>⇢ ⇢ <a href='#step-2-update-the-bhyve-configuration'>Step 2: Update the Bhyve Configuration</a></li> +<li>⇢ ⇢ <a href='#benchmark-results'>Benchmark Results</a></li> +<li>⇢ ⇢ <a href='#important-notes'>Important Notes</a></li> <li>⇢ <a href='#conclusion'>Conclusion</a></li> </ul><br /> <h2 style='display: inline' id='introduction'>Introduction</h2><br /> @@ -10185,6 +10192,113 @@ Apr <font color="#000000">4</font> <font color="#000000">23</font>:<font color= <br /> <span>Unfortunately, I wasn't able to find <span class='inlinecode'>ubench</span> in any of the Rocky Linux repositories. So, I skipped this test.</span><br /> <br /> +<h2 style='display: inline' id='update-improving-disk-io-performance-for-etcd'>Update: Improving Disk I/O Performance for etcd</h2><br /> +<br /> +<span class='quote'>Updated: Fri 26 Dec 08:51:23 EET 2025</span><br /> +<br /> +<span>After running k3s for some time, I noticed frequent etcd leader elections and "apply request took too long" warnings in the logs. Investigation revealed that etcd's sync writes were extremely slow - around 250 kB/s with the default <span class='inlinecode'>virtio-blk</span> disk emulation. etcd requires fast sync writes (ideally under 10ms fsync latency) for stable operation.</span><br /> +<br /> +<h3 style='display: inline' id='the-problem'>The Problem</h3><br /> +<br /> +<span>The k3s logs showed etcd struggling with disk I/O:</span><br /> +<br /> +<pre> +{"level":"warn","msg":"apply request took too long","took":"4.996516657s","expected-duration":"100ms"} +{"level":"warn","msg":"slow fdatasync","took":"1.328469363s","expected-duration":"1s"} +</pre> +<br /> +<span>A simple sync write benchmark confirmed the issue:</span><br /> +<br /> +<!-- Generator: GNU source-highlight 3.1.9 +by Lorenzo Bettini +http://www.lorenzobettini.it +http://www.gnu.org/software/src-highlite --> +<pre>[root@r0 ~]<i><font color="silver"># dd if=/dev/zero of=/tmp/test bs=4k count=2000 oflag=dsync</font></i> +<font color="#000000">8192000</font> bytes copied, <font color="#000000">31.7058</font> s, <font color="#000000">258</font> kB/s +</pre> +<br /> +<h3 style='display: inline' id='the-solution-switch-to-nvme-emulation'>The Solution: Switch to NVMe Emulation</h3><br /> +<br /> +<span>Bhyve's NVMe emulation provides significantly better I/O performance than <span class='inlinecode'>virtio-blk</span>.</span><br /> +<br /> +<h3 style='display: inline' id='step-1-prepare-the-guest-os'>Step 1: Prepare the Guest OS</h3><br /> +<br /> +<span>Before changing the disk type, the guest needs NVMe drivers in the initramfs and LVM must be configured to scan all devices (not just those recorded during installation):</span><br /> +<br /> +<!-- Generator: GNU source-highlight 3.1.9 +by Lorenzo Bettini +http://www.lorenzobettini.it +http://www.gnu.org/software/src-highlite --> +<pre>[root@r0 ~]<i><font color="silver"># cat > /etc/dracut.conf.d/nvme.conf << EOF</font></i> +add_drivers+=<font color="#808080">" nvme nvme_core "</font> +hostonly=no +EOF + +[root@r0 ~]<i><font color="silver"># sed -i 's/# use_devicesfile = 1/use_devicesfile = 0/' /etc/lvm/lvm.conf</font></i> +[root@r0 ~]<i><font color="silver"># dracut -f</font></i> +[root@r0 ~]<i><font color="silver"># shutdown -h now</font></i> +</pre> +<br /> +<span>The <span class='inlinecode'>hostonly=no</span> setting ensures the initramfs includes drivers for hardware not currently present. The <span class='inlinecode'>use_devicesfile = 0</span> tells LVM to scan all block devices rather than only those recorded in <span class='inlinecode'>/etc/lvm/devices/system.devices</span> - this is important because the device path changes from <span class='inlinecode'>/dev/vda</span> to <span class='inlinecode'>/dev/nvme0n1</span>.</span><br /> +<br /> +<h3 style='display: inline' id='step-2-update-the-bhyve-configuration'>Step 2: Update the Bhyve Configuration</h3><br /> +<br /> +<span>On the FreeBSD host, update the VM configuration to use NVMe:</span><br /> +<br /> +<!-- Generator: GNU source-highlight 3.1.9 +by Lorenzo Bettini +http://www.lorenzobettini.it +http://www.gnu.org/software/src-highlite --> +<pre>paul@f0:~ % doas vm stop rocky +paul@f0:~ % doas vm configure rocky +</pre> +<br /> +<span>Change <span class='inlinecode'>disk0_type</span> from <span class='inlinecode'>virtio-blk</span> to <span class='inlinecode'>nvme</span>:</span><br /> +<br /> +<pre> +disk0_type="nvme" +</pre> +<br /> +<span>Then start the VM:</span><br /> +<br /> +<!-- Generator: GNU source-highlight 3.1.9 +by Lorenzo Bettini +http://www.lorenzobettini.it +http://www.gnu.org/software/src-highlite --> +<pre>paul@f0:~ % doas vm start rocky +</pre> +<br /> +<h3 style='display: inline' id='benchmark-results'>Benchmark Results</h3><br /> +<br /> +<span>After switching to NVMe emulation, the sync write performance improved dramatically:</span><br /> +<br /> +<!-- Generator: GNU source-highlight 3.1.9 +by Lorenzo Bettini +http://www.lorenzobettini.it +http://www.gnu.org/software/src-highlite --> +<pre>[root@r0 ~]<i><font color="silver"># dd if=/dev/zero of=/tmp/test bs=4k count=2000 oflag=dsync</font></i> +<font color="#000000">8192000</font> bytes copied, <font color="#000000">0.330718</font> s, <font color="#000000">24.8</font> MB/s +</pre> +<br /> +<span>That's approximately **100x faster** than before (24.8 MB/s vs 258 kB/s).</span><br /> +<br /> +<span>The etcd metrics also showed healthy fsync latencies:</span><br /> +<br /> +<pre> +etcd_disk_wal_fsync_duration_seconds_bucket{le="0.001"} 347 +etcd_disk_wal_fsync_duration_seconds_bucket{le="0.002"} 396 +etcd_disk_wal_fsync_duration_seconds_bucket{le="0.004"} 408 +</pre> +<br /> +<span>Most fsyncs now complete in under 1ms, and there are no more "slow fdatasync" warnings in the logs. The k3s cluster is now stable without spurious leader elections.</span><br /> +<br /> +<h3 style='display: inline' id='important-notes'>Important Notes</h3><br /> +<br /> +<ul> +<li>Do NOT use <span class='inlinecode'>disk0_opts="nocache,direct"</span> with NVMe emulation - in my testing this actually made performance worse.</li> +<li>The guest OS must have NVMe drivers in the initramfs before switching, otherwise it won't boot.</li> +<li>LVM's devices file feature (enabled by default in RHEL 9 / Rocky Linux 9) must be disabled to allow booting from a different device path.</li> +</ul><br /> <h2 style='display: inline' id='conclusion'>Conclusion</h2><br /> <br /> <span>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.</span><br /> @@ -13,7 +13,7 @@ </p> <h1 style='display: inline' id='hello'>Hello!</h1><br /> <br /> -<span class='quote'>This site was generated at 2025-12-26T01:27:25+02:00 by <span class='inlinecode'>Gemtexter</span></span><br /> +<span class='quote'>This site was generated at 2025-12-26T08:51:39+02:00 by <span class='inlinecode'>Gemtexter</span></span><br /> <br /> <span>Welcome to the foo.zone!</span><br /> <br /> diff --git a/uptime-stats.html b/uptime-stats.html index fbad8eab..e6307ca5 100644 --- a/uptime-stats.html +++ b/uptime-stats.html @@ -13,7 +13,7 @@ </p> <h1 style='display: inline' id='my-machine-uptime-stats'>My machine uptime stats</h1><br /> <br /> -<span class='quote'>This site was last updated at 2025-12-26T01:27:25+02:00</span><br /> +<span class='quote'>This site was last updated at 2025-12-26T08:51:39+02:00</span><br /> <br /> <span>The following stats were collected via <span class='inlinecode'>uptimed</span> on all of my personal computers over many years and the output was generated by <span class='inlinecode'>guprecords</span>, the global uptime records stats analyser of mine.</span><br /> <br /> |
