3. ● Frank Wessels
○ Software dev in medical imaging
○ CT & MR
○ 2D & 3D / GPU
● Last couple of years in Cloud Computing
● Now with Minio
4. ● S3 Compatible Object Storage Server
● Written in Golang / Apache License 2.0
● Founder: Anand Babu Periasamy
○ Formerly GlusterFS
■ Distributed File System
■ Now part of Red Hat
5. 1 BINARY / 3 FLAVORS
FS backend
$ minio server /dir
XL backend with Erasure code & bitrot protection
$ minio server /disk1 /disk2 /disk3 /disk4 ... /disk16
Distributed up to 16 servers
$ minio server host1:/disk host2:/disk host3:/disk ... host16:/disk
6.
7. ‘Pseudo’ assembly language
Generalized instructions like MOV, ADD, CMP
Actual instructions are generated platform specifically (obviously)
Mostly this translation is self-explanatory/logical, sometimes it is not
Some architecture aspects shine through
Data flows from left to right
Eg: MOV R1, R2 // R2 = R1
Some ‘pseudo’ registers
8. Benefits
Fast compilation
Enhanced execution speed
No need for `cgo` dependency
Avoid runtime call stack saving overhead etc.
Allows to take advantage of SIMD (Intel) or NEON (ARM) capabilities
Single Instruction Multiple Data
You are (or will be) a bit on your own… 😀
9. GO COMPILER WILL SELECT APPROPRIATE ARCHITECTURE.
USING FILE EXTENSIONS, EG.
_arm64.s
_amd64.s
10. Have the functionality available in (high-level) Golang
Step-by-step translate more of the program into assembly
Check the results as you make progress
Start simple
Load arguments, write results
Gradually add more
Look at e.g. commit history of minio/blake2b-simd
11. Developed as part of blake2b-simd
Uses YASM behind the scenes
Support for use within defines
Works nicely together with asmfmt
Check out: github.com/minio/asm2plan9s
Adding ARM support (in progress)
// VPADDQ XMM0,XMM1,XMM8
LONG $0xd471c1c4; BYTE $0xc0 // VPADDQ XMM0,XMM1,XMM8
$ asm2plan9s example.s
14. BLAKE2b hash
SHA3 competition contender
Characteristics: speed, simplicity, and security
Optimized for 64-bit platforms (BLAKE2b)
github.com/minio/blake2b-simd
SIMD accelerated pure Go implementation using
Go Assembly
Three flavors: AVX2, AVX and SSE
Golang Hashing Speed
19. ACCELERATE SHA256 USING GOLANG ASSEMBLY
100x SPEED UP FOR ARM : USING ARM SHA EXTENSIONS
https://blog.minio.io/accelerating-sha256-by-100x-in-golang-on-arm
INTEL AVX2 / AVX / SSE
34. You may have just saved us about 48 hours of configuration hell. Thanks to
you and the whole Minio team! - @jacobgadikian
@minio looks very promising! I have a term for it: Apple of object storage.
Not only it just works but it’s beautiful. - @dharmeshkakadia
@minio it's YOU who deserve the thanks for all your support of the Go
community in the open and behind the scenes. - @bketelsen
Look at @minio. They look for people with passion and who are excited about
the tech they are building. Tech can be learned, passion can't.
- @goinggodotnet
I don't cry... Be positive. It's a time to upgrade Deis v2. Bye Ceph. Hello Minio.
- @monamour555
COMMUNITY
35. 16 FULL TIME + 2 INTERNS
GITHUB COMMITTERS GITTER MEMBERS
5310
GitHub Stars
757
Community Members
129
Committers