Oracle Linux GPG encryption on ARMv8

I had previously used AMD Epyc Rome then Epyc Milan for my GPG encryption workload and noticed a speed improvement generation over generation.

When using x86 for this workload with NVMe block storage I was able to max out all cores full CPU utilization all the time.

Then I start using ARMv8 (Ampere) cores and while a 2.8GHz they where 25% faster than Epyc Malian at 3.35GHz.

Now the ask: with all this extra performance, which I might add I now get for free, yes I get 8 of these Ampere ARMv8 Cores and 24GB of DDR4 for free with my Always Free Eligible account over at Oracle Cloud. I have notices these cores never get above 75% utilization and mostly sits around 50% CPU utilization.

Does anyone have any suggestions of how to get these 8 cores running at 100% CPU Utilization, any maybe get the gpg workload to 75 to 100% faster on ARM v’s x86.

How can I optimize?

1 Like

I would start by analyzing the underutilization. Is the disk not feeding fast enough? Are you running out of memory?

You haven’t given a whole lot of details on your workflow, so I can’t really say. If you can share more details about what the process looks like, I can probably give you some more targeted recommendations.

Sounds like you might have maxed-out the crypto accelerator extensions of the ARMv8s, while the rest of the CPU is still somewhat idle.

Crypto extensions listed on page 27-28

It’s also possible your server is running low on entropy and blocking on reading from /dev/urandom. There are ways to seed the PRNG, hardware random number generators, and userland alternatives like EGD and PRNGD which will certainly have different performance than the kernel.

1 Like