Golang Internals Part 1: Autogenerated functions (and how to get rid of them)

Maybe if you are like us at Min [https://github.com/minio/minio]IO, you have every now and then come across ‘autogenerated’ functions in your Golang call stacks and wondered what they are all about? We had a case the other day where the call stack showed something like the following: cmd.retryStorage.ListDir(0x12847c0, 0xc420402e70, 0x1, ...) minio/cmd/

Read more...

Debugging Go Routine leaks

Before beginning with Debugging Goroutines leaks, let me give a small introduction of some fundamentals which will give you a broader perspective of the problem. Concurrent Programming. * Concurrent programming deals with concurrent execution of a program wherein multiple sequential streams of execution run at a time resulting in faster execution of your computations. * It helps in better utilization of multicore

Read more...

Fast hashing in Golang using BLAKE2

In this blog we would like to present an optimized implementation, blake2b-simd [https://github.com/minio/blake2b-simd] , in pure Go for the BLAKE2 [https://blake2.net/] hashing algorithm that takes advantage of SIMD instructions. It gives up to a 4x speed increase over the (non-assembly) Go implementation and can achieve hashing speeds close to 1 GB/sec per core on

Read more...