Geekices

Some statistics for Userrepository

You might have noticed that Userrepository uses Cloudflare. I chose it for two main reasons: their ability to help mitigate (D)DoS attacks and to help hiding the IP address for the VM from script kiddies.

It’s not that I think Userrepository will ever be a target for a (D)DoS attack, but better safe than sorry. Also, I have more than enough automated failed SSH authentication attempts without revealing the IP: 441 blocked IPs and counting for one fail2ban ssh rule and 2 for another fail2ban ssh rule. I intend to tighten these rules in the near future.

A third (lesser) reason is their analytics. This allows me to evaluate, from time to time, if the repository is of interest for Arch and Arch-based Linux distribution users.

Although the analytics part is not the best-in-breed, it lets me take a look at the stats for the last 30 days. For example, in this time frame, at the time of writing of this blog post, I had 1486 unique visitors and 17622 total requests to userrepository.eu. I honestly expected around half that number at best.

Most of these unique visitors (and hopefully users), from first to last, come from France, Germany, Italy and USA. My country, Portugal, still hasn’t reached the 500 unique requests.

In terms of bandwidth statistics, the numbers are low: 10.14GB in the last 30 days, with only 878.35kB of cached content. This is expected because I doubt they would cache compressed files, but they’re probably caching the 01-README.txt file with the instructions to add the repository to your /etc/pacman.conf file.

The numbers, I must admit, are not what I wanted but they are more than I expected and that’s a strong motivation to keep the project running, hoping it will help other users.

One last thing: please become a Patron if you want to support userrepository.eu. Even €1 will help cover the monthly expenses, just over €15. If I get enough patrons, I’ll be able to upgrade the virtual machine to one with better specs, which will allow a higher package compression level, shorter build times and maybe even packaged kernels. Thank you!


Geekices

Status on userrepository changes

It took me a while to update you about the latest changes to my Arch and Arch-compatible Linux distributions repository. But first, let me apologize for the delay: work, personal life and, for about 3 weeks now, a horrible back pain (that just doesn’t stop, even with an handful of medication) have kept me from doing this in the time frame I expected.

First on the “agenda”, I experimented with increasing the zstd compression level for the packages like I said I would do in my last post about the repository. The trade-off was not worth it: the increase in packaging time was far superior to the small decrease in package size. So, I’ll keep the zstd compression level to “-12” in the foreseeable future.

Also, up to a few days ago, I would manually update the packages and, from time to time, do a full build. Now, I’m using a cron job and pueue to manage the tasks and it always does a full build.

If you don’t know pueue, this application is a command-line task management tool for sequential and parallel execution of long-running tasks. Besides adding tasks, you can watch the logs for them, the exit codes and even follow what the task is doing (just like using “tail -f /destination/file“). But pueue can do much more. Go check it out at Github.

Userrepository.eu also has a few more packages. For example: vimtips, wego, wttr, plymouth and performance-tweaks. All of them are at AUR and at the Git repository where I have userrepository.eu sources, if you want to take a look at the commits (just ignore some of the commit messages, because I can be lazy with them at times ^^’).

One last thing: please become a Patron if you want to support userrepository.eu. Even €1 will help cover the monthly expenses, just over €15. If I get enough patrons, I’ll be able to upgrade the virtual machine to one with better specs, which will allow a higher package compression level, shorter build times and maybe even packaged kernels. Thank you!


Geekices

Updates on userrepository

Since the last post about my Arch (and Arch-compatible distributions) binary repository, I’ve added a few more packages. Some examples are the Mullvad VPN desktop client and nimdow, a window manager written in the Nim programming language. Or Emptty, an amazing display manager that I encourage you to try.

Despite adding more packages, the compilation and compression time only had a small increase and I’m still below the 5 hour mark. And I’ve kept the zstd “-12” compression level.

Right now, I’m doing a full build to time it again. If it keeps below the 5 hour mark, I’ll try to increase the compression level to “-15” to see if the trade-off is worth it. If so, you’ll have smaller packages, allowing you to save bandwidth.

I’ll keep you updated as soon as I make the change. But that might take a few days, because work and stuff.

One last thing: please become a Patron if you want to support userrepository.eu. Even €1 will help cover the monthly expenses, just over €15. If I get enough patrons, I’ll be able to upgrade the virtual machine to one with better specs, which will allow a higher package compression level, shorter build times and maybe even packaged kernels. Thank you! 🙂


Geekices

Userrepository.eu is back (in beta)

After a small forced hiatus, userrepository.eu is back. The Covid-19 pandemic made a hit in my income and the wife’s income, so I had to temporarily suspend non-priority expenses. During this period, I had time to consider a few things about the future of the project and decided to change the provider from Scaleway to Hetzner, mostly because the Arch image they’re using is essentially abandonware.

If you’re reading this, you’ll probably know that Arch Linux changed the default package compression to ZSTD. In order to update or install any package, you’ll need a pacman version that supports this compression and up-to-date libraries. These requirements aren’t met in older Arch images, like the one used by Scaleway, so the only two solutions were installing another distribution, chrooting into it and hack an Arch install (the solution presented to me by Scaleway support) or change provider. The second option was the less time-consuming one.

Hetzner doesn’t provide Arch by default when creating a virtual manchine, but after creating it the user can boot it in rescue mode and run the installimage script that makes the process almost a breeze. After running the script, I advise you to manually chroot and temporarily allow root logins for the SSH daemon in order to be able to login remotely after booting the VM normally.

The virtual machine configuration I chose has similar specs to the previous one with Scaleway: 4vCPUs and 8GB of RAM. In the first few hours of use, I noticed a small improvement in package compile times – but this is just my perception; I have yet to time the build times. But even things like refreshing the repository package list is faster, way faster, and that’s really noticeable.

For the time being, I’ll consider userrepository.eu in beta state, so use it with some degree of carefulness. The source is the same, but I changed the provider and I’m evaluation the virtual machine and network performance. Let’s see how it goes.


Geekices

Improving boot time

Today, I’ve decided to try and improve the boot time of my laptop, running EndeavourOS. There was no special reason for it other than “Why not?”.

The first thing I made was disabling or masking the following systemd services:

  • systemd-resolved disabled
  • tlp disabled
  • NetworkManager-wait-online disabled
  • lvm2-monitor masked
  • org.cups.cupsd disabled
  • packagekit masked
  • bluetooth disabled (I rarely use the laptop’s bluetooth)
  • blueman-mechanism disabled

With this, I was able to save a few milliseconds and decrease the enabled systemd units to 15, but the impact was negligible.

brunomiguel@kepler: ~
└─ $: systemctl list-unit-files --state=enabled --no-pager
UNIT FILE STATE VENDOR PRESET
autovt@.service enabled disabled
avahi-daemon.service enabled disabled
dbus-org.freedesktop.Avahi.service enabled disabled
dbus-org.freedesktop.nm-dispatcher.service enabled disabled
display-manager.service enabled disabled
getty@.service enabled enabled
haveged.service enabled disabled
NetworkManager-dispatcher.service enabled disabled
NetworkManager.service enabled disabled
sddm.service enabled disabled
systemd-swap.service enabled disabled
unbound.service enabled disabled
avahi-daemon.socket enabled disabled
remote-fs.target enabled enabled
roothints.timer enabled disabled

15 unit files listed.

To further improve the boot time, I tested bfq, kyber and mq-deadline I/O schedulers. From the three, the last one allowed to shave off another few milliseconds to the boot time. Next, and last, I changed the mkinitcpio ramdisk compression to lz4 with the default compression options.

With this changes, I went from 17.040 to 15.511 seconds, decreasing a bit more than one and an half seconds in the boot time.

brunomiguel@kepler: ~
└─ $: systemd-analyze time
Startup finished in 10.145s (firmware) + 1.616s (loader) + 2.027s (kernel) + 3.250s (userspace) = 17.040s
graphical.target reached after 2.934s in userspace

brunomiguel@kepler: ~
└─ $: systemd-analyze time
Startup finished in 10.175s (firmware) + 686ms (loader) + 2.041s (kernel) + 2.608s (userspace) = 15.511s
graphical.target reached after 2.529s in userspace

In the future, I might replace GRUB2 with systemd-boot, possibly decreasing the boot time even more.

This was tested in a AMD A9-9420 CPU with the linux-zen kernel. Your mileage may vary depending on your hardware.