LISA 2021 Conference
This year LISA 2021 is going to be held as a virtual event with a very modest price. Which gives an incredible opportunity to attend it for those who could do that during the previous years due to the overall price-tag, i.e. transportation + accommodation + conference + misc. costs. By flipping through the program I’ve already picked my favourites:
- 5 Years of Cgroup v2: The Future of Linux Resource Control
- BPF internals
- Computing Performance: On the Horizon
- Performance Analysis of XDP Programs
- Building Community with CentOS Stream
- How to Apply GitOps on Infrastructure (for Real)
- Organizational Design for Technical Emergency Response in Distributed Computing Systems
- Sustainable Software Engineering
- Why You Should Burn Down Your Datacenter
- Selectively Sharing Multipath Routes in BGP
- Service Mesh Up and Running with Linkerd
Upgraded to FreeBSD 13.0-RELEASE
My small FreeBSD based droplet which I run in DigitalOcean is certainly unrepresentative but nevertheless I was very pleased with the smoothness of my recent upgrade to FreeBSD 13.0-RELEASE. Just a single reboot and here I am running the latest version of FreeBSD:
[freebsd@flagword ~]$ freebsd-version
13.0-RELEASE
Canceled my booking
As of January 1st I’m no longer employed by Booking.com and surely have some mixed feeling about that. But as the saying goes – “every cloud has a silver lining” so I’m looking in to the future with a strong optimism. New Year – New Beginnings. ;-)
Advent of Code 2020 experience
This year was the very first one when I was able to follow along with the daily Advent of Code 2020 small programming puzzles. “Small” is certainly a subjective word as I still have yet to finish part 2 of days 19 and 20 but overall it has been an exciting journey that gave me a chance to learn and to improve so I look forward to the next round in 2021.
my experience with kernel lockdown and eBFP
I’m running Ubuntu Linux on Dell Latitude 7390 and was extremely baffled when suddenly I couldn’t run any of eBPF tools. Even running as root I received this:
Error creating map: '@curfreq': Operation not permitted Error creating map: '@process_mhz': Operation not permitted Error creating map: '@system_mhz': Operation not permitted Error creating printf map: Operation not permitted Creation of the required BPF maps has failed. Make sure you have all the required permissions and are not confined (e.g. like snapcraft does). `dmesg` will likely have useful output for further troubleshooting
Quick googling pointed me to the root cause – kernel lockdown, the mode which is activated by Secureboot. In the past it was still possible to disable lockdown from command line:
echo 1 > /proc/sys/kernel/sysrq echo x > /proc/sysrq-trigger
But now this option has been disabled and it’s no longer possible to turn lockdown off through sysrq-trigger. If you try these two commands today nothing would change except for the following message in dmesg:
[Sun Mar 15 14:07:19 2020] This sysrq operation is disabled from userspace.
As far as I know there are three options left:
1. Disable secure boot in UEFI
2. Use Alt+SysRq everytime after reboot
3. sudo mokutil –disable-validation
As a dirty hack I’ve used Alt+SysRq option so far. Btw, to initiate Alt+SysRq on Dell 7390 I had to:
1. Press Fn+Esc to enable function keys
2. Press Alt+PrtScr+x to disable lockdown
Check dmesg to confirm it worked:
[Sun Mar 15 14:11:28 2020] sysrq: Disabling Secure Boot restrictions [Sun Mar 15 14:11:28 2020] Lifting lockdown
Finally, I’d highly recommend to read Brendan Gregg’s comment regarding lockdown and it’s impact.
Stay cool and stay unlocked!
Christmas gifts 2020 already in house
It all started with a long awaited book by Brendan Gregg “BPF Performance Tools” that I decided to purchase directly from www.informit.com since amazon.de didn’t have it in store and it wasn’t clear at all when they would have one.
Then another day I found this in my mail box:
With a couple of cute stickers generously sent by oxide.computer and kindly packed by
Bryan Cantrill’s family
Time for learning and sticking out ;-)
My trivial Linux kernel module in Rust
Couple of weeks ago had a chance to participate in a small gig at work that offered a chance to try Rust as a language for wringing Linux kernel module. It was a steep learning experience which made it super fun. Huge shout out to folks behind linux-kernel-module-rust framework without whom nothing would be possible.
Below is the result:
In: Linux, Programming
Time to learn something OSX new
Received Volume I and II back in December 2019 and before that had been craving to own them for quite a while. The catalyst that finally motivated me to buy one was the final call or, more correctly, a tweet. I’ve quickly gleaned through the books and the depth of the material was impressive and intimidating at the same time. But for lifelong leaner like me this is the reason I bought them in the first place.
Finished “Permanent Record”
Just turned the final page of Permanent Record and, not taking into account that I haven’t read a real physical book for quite a while, must say this one was thrillingly riveting. The world would’ve been undoubtedly a better place had we had more Snowdens among us.
python-bpfcc on Ubuntu 19.10 misses PerfEventArray due to an outdated bpfcc-tools
If you, like me, follow bcc Python Developer Tutorial, to sharpen bpf skills you might hit the same snag as I did when I was trying to implement a solution for lesson 8:
Traceback (most recent call last): File "_ctypes/callbacks.c", line 315, in 'calling callback function' File "/usr/lib/python2.7/dist-packages/bcc/table.py", line 572, in raw_cb_ callback(cpu, data, size) File "./sync_perf_output.py.py", line 69, in print_event event = b["events"].event(data) AttributeError: 'PerfEventArray' object has no attribute 'event'
Lesson 7 doesn’t work and fails with the same error.
Originally, one had to use ctypes to define the event data structure in Python but this PR changed that. So now perf event data structure in Python is auto-generated. The code for leasson 8 has been updated accordingly as well
However bpf which is shipped with Ubuntu 19.10 is outdated, version 0.8.0-4 versus 0.12.0 as of this writing, and the only way around is to keep using ctypes, or build the tool chain from source due to a known bug