FiloSottile / age

A simple, modern and secure encryption tool (and Go library) with small explicit keys, no config options, and UNIX-style composability.
https://age-encryption.org
BSD 3-Clause "New" or "Revised" License
16.83k stars 492 forks source link

Add armv7 to age builds #198

Closed katanacrimson closed 3 years ago

katanacrimson commented 3 years ago

armv7 is currently used in the raspberry pi 4 series to an extent; while its hardware supports arm64 (to my knowledge), distribution support is not yet complete. having armv7 distributions also available will better support low-power hardware like the pi4 better.

as a side-effect, the arm version needs to also be distinguished in the artifact name. resulting artifacts would now be named "armv6" or "armv7" instead of just "arm".

brunobord commented 3 years ago

Oh I'd love to see this merged, my raspberry PI is awaiting for me to share secrets with it! ;o)

FiloSottile commented 3 years ago

Is there a meaningful performance difference between the armv6 and the armv7 builds?

katanacrimson commented 3 years ago

I don't have any particular stats ready offhand. Any suggestions for a computationally stressful operation w/in age to use to compare? I've got a sample size of 4 pi 4Bs in my cluster that I can run against.

FiloSottile commented 3 years ago

Encrypting and decrypting a 100MB file with 20 recipients should give a good empiric benchmark. For decryption use the identity for the last recipient, so that they all have to be tried first.

katanacrimson commented 3 years ago

Sounds good to me. Let me see what I can throw together. How's a sample size of 100 each sound?

katanacrimson commented 3 years ago

Presuming 100 samples, but it's going to work out more like 400; I'm going to run this benchmark against my pi cluster, which is 4 Pi4Bs.

Should work out something like:

--- pi01 pi02 pi03 pi04
armv6 100 100 100 100
armv7 100 100 100 100

Variables I really can't account for at this time are going to be:

Pretty sure I never dropped haveged on these guys as a direct package, but if it is on there, it's going to be on all of them due to them being collectively managed via ansible.

Probably going to take a bit to pull all the data together, but once I do I'll slap down the analysis and benchmark script together.

age was compiled from commit 56a3f8cce3dc18e60877c6bd04068a585b0922bc - or the HEAD of this PR's branch, using ubuntu:20.04 running within WSL2.

Compile command:

docker run --rm -v "$PWD":/mnt -w /mnt -e GOOS=linux -e GOARCH=arm -e GOARM=6 golang:1.15 go build -o . ./cmd/...
FiloSottile commented 3 years ago

Closing for now, but happy to reopen if the benchmarking numbers suggest there is a significant difference.