STFN

Testing the performance of an NVMe HAT in BOINC

15 minutes

In the previous post I talked about getting an NVME HAT for my Pi 5. After seeing how much faster the Pi 5 became when ditching the SD card, I thought I might see if the new storage makes any difference in BOINC.

In short, BOINC is a framework that allows scientists in need of processing power to send work to volunteers. The computers of the volunteers then crunch the work units and send back the results back to the scientists for further analysis. This way ordinary people can help push science forward, by sharing their mostly idling computers. I’ve been participating in BOINC for almost four years now.

I talked more about BOINC in My thoughts as I reach 100 million points in BOINC and I reached 150 million points in BOINC blog posts.

A year ago I got my Pi 5 and tested its performance in BOINC against the Pi 4B. The results have shown that the Pi5 is indeed much faster than the previous generation of the popular SBC:

RPi 4b vs RPi 5 benchmark in BOINC - Einstein@Home

RPi 4b vs RPi 5 benchmark in BOINC - Asteroids@Home

RPi 4b vs RPi 5 benchmark in BOINC - Universe@Home

Now it’s time to see if the NVMe HAT will make the Pi 5 even faster.

And the tl;dr answer is: it depends on the project.

Maybe not the cleanest setup, but hey, it worked

Test Setup

The test was done using a Raspberry Pi 5, with the active cooler, official Rpi 5 power supply, and with an NVMe hat from Pineboards. The NVMe drive is a KIOXIA 512GB 2242 SSD. I also added a 80mm fan powered from the Pi’s USB port for enhanced cooling. Throughout the test, the Pi’s CPU temperature stayed at around 60C.

I crunched on all four cores. I did not overclock the Pi’s CPU.

Einstein@Home

In Einstein@Home, the HAT does make a difference of around 30 minutes per task. There were no problems with the cooling, the slowly turning 80mm fan combined with the active cooler resulted in a quiet and cool operation of the testing rig. Not much else to report, so here are the diagrams:

Average tasks time

For the 4b, the average tasks time was 16353 seconds (4 hours, 32 minutes and 33 seconds). For the Pi 5, the average task time was 10858 seconds (3 hours and 58 seconds), a decrease of around 33%. The average task time for the Pi 5 + NVMe was 8055 seconds (2 hours, 14 minutes and 15 seconds), around 30% faster in comparison with the Pi 5, and 67% faster than the Pi 4.

Minimum task time

For the 4b, the shortest task took 13866 seconds (3 hours, 51 minutes and 6 seconds). For the Pi 5, the shortest task time took 10207 seconds (2 hours, 50 minutes and 7 seconds), a decrease of around 26%. The minimum task time for the Pi 5 + NVMe was 7673 seconds (2 hours, 7 minutes and 53 seconds), around 28% faster in comparison with the Pi 5, and 57% faster than the Pi 4.

Maximum task time

For the 4b, the longest task took 17148 seconds (4 hours, 45 minutes and 48 seconds). For the Pi 5, the longest task took 11370 seconds (3 hours, 9 minutes and 30 seconds), a decrease of around 33%. The maximum task time for the Pi 5 + NVMe was 8624 seconds (2 hours, 23 minutes and 44 seconds), around 27% faster in comparison with the Pi 5, and 66% faster than the Pi 4.

Average tasks per day

A day has 86400 seconds. Both Pi 4 and Pi 5 have four cores, so they have 345600 core-seconds per day. Dividing that number by the average task time, the results are 21 tasks per day for the Pi4 and 31 tasks per day for the Pi 5, the Pi 5 can crunch 47% more tasks per day than the Pi 4. For the Pi 5 with NVMe, the result is 42 tasks per day, 30% more than the Pi 5, and two times more than the Pi 4.

Asteroids@Home

After finishing with Einstein@Home, I switched to another projects which also supports ARM tasks: Asteroids@Home.

As previously, I started with the default settings, added the project in BOINC Manager, and the Pi 5 began churning through the tasks.

The first thing I spotted is that I had to pump up the cooling, as the temperatures on the CPU rose quickly, and the Pi’s active cooler sped up to become very audible. To mitigate this, I switched the 80mm fan from using the 5V USB, to a 12V barrel jack power brick. That kept both the temperatures and the noise under control, an 80mm fan running at high speed is much more acceptable in terms of noise than a 40mm one.

After crunching around 40 workunits I realized that there is basically no difference in the runtime. The runtimes were around 3% shorter than when using the SD card.

Another thing that raised my curiosity was that the application version differed from the one I crunched a year ago. I asked in the project’s forums if those two are actually comparable, and the answer was that yes, they are similar. However, there is a new, optimized version of the crunching application, which should give much better performance. It should be already provided to all users, but somehow that was not the case. But I could switch to it manually. This would not only allow to squeeze even more performance from the Pi, but also ensure that I am really comparing apples to apples. Or raspberries to raspberries.

Switching to the optimized version of the application was very simple, all it took was adding an app_info.xml file in the project’s folder (/var/lib/boinc/projects/asteroidsathome.net_boinc for Linux) and downloading the app file. Note that the BOINC folder belongs to the root user, so you will need root permissions to do so. Here’s my app_info.xml file in full:

<app_info>

<app>
<name>period_search</name>
<user_friendly_name>Period Search Application</user_friendly_name>
<non_cpu_intensive>0</non_cpu_intensive>
</app>


<file>
<name>period_search_10220_aarch64-unknown-linux-gnu</name>
<executable/>
</file>


<app_version>
<app_name>period_search</app_name>
<version_num>10220</version_num>
<platform>aarch64-unknown-linux-gnu</platform>
<avg_ncpus>1.000000</avg_ncpus>
<api_version>7.17.0</api_version>
<file_ref>
<file_name>period_search_10220_aarch64-unknown-linux-gnu</file_name>
<main_program/>
</file_ref>
</app_version>

Here’s the link to the forum thread.

Thank you ahorek’s team and Keith Myers for all your help! :)

And so I crunched the optimized version as well, both with and without the NVMe HAT, and the results were identical: there is no significant difference when switching the storage type.

So, here are the results for the average task time:

I strongly suspect, that in contrast to Einstein’s application, the Asteroids’ one does much less disk I/O during operation, and so does not depend on the speed of the storage. The increased thermal load on the CPU would also suggest that it is much more utilized, and therefore is the biggest bottleneck here.

Universe@Home?

Sadly, U@H is still suspended and it’s future is unknown.

Final Words

Here are the detailed benchmark results in ODS file format:

Asteroids@Home

Einstein@Home

So, should you buy the NVMe HAT?

If you use your Pi 5 not only as a BOINC cruncher: a strong yes. As I wrote in the previous blog post, it makes a large difference in the Pis overall responsiveness and performance.

If you use your PI 5 only as a BOINC cruncher: It depends. If you are a fan of E@H and only crunch that project, then I would say go for it, a 30% improvement in crunching speed is a lot. If you prefer Asteroids, it won’t make any difference. And I hope that one day I will be able to again crunch Universe@Home and see how it fares with better storage.

I think that for now it’s the end of benchmarking the Pi 5. The SBC will now wait for me recreating my astrophotography setup, and once it is done, it will go atop my mount to control the acquisition process. And that will be a topic of another blog post.

P.S. Just before publishing this post, Pineboards.io announced that they will be releasing an NVMe + PoE HAT, and that makes me double excited, as I am planning to dive into the world of Power of Ethernet when I build a new iteration of my homelab.

Thanks for reading!

If you enjoyed this post, please consider helping me make new projects by supporting me on the following crowdfunding sites:

And if you are looking for a cheap and stable VPS, please consider using my RackNerd affiliate link