automaxprocs
go-licenses
Our great sponsors
automaxprocs | go-licenses | |
---|---|---|
6 | 1 | |
3,763 | 765 | |
2.7% | 3.0% | |
6.0 | 4.1 | |
2 months ago | 14 days ago | |
Go | Go | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
automaxprocs
-
Go, Containers, and the Linux Scheduler
We use https://github.com/uber-go/automaxprocs after we joyfully discovered that Go assumed we had the entire cluster's cpu count on any particular pod. Made for some very strange performance characteristics in scheduling goroutines.
-
Senior engineer here trying to pick up Go for jobs. What resources can you recommend me to cover as much ground as possible
Follow notable issues on https://github.com/golang/go to understand such things like why https://github.com/uber-go/automaxprocs was created.
-
Setting GOMAXPROCS without CPU limits in Kubernetes?
Please never set the value manually in a kubernetes production environment. Use https://github.com/uber-go/automaxprocs
-
What are goroutines and how are they scheduled?
There is an environment variable (GOMAXPROCS) that you can set which determines how many threads your go program will use simultaneously. You can use this great library from Uber to automatically set the GOMAXPROCS variable to match a Linux container CPU quota. If you are running Go workloads in Kubernetes, you should use this.
-
Shouldn't have happened: A vulnerability postmortem
AFAIK, it hasn't changed, this exact situation with cgroups is still something I have to tell fellow developers about. Some of them have started using [automaxprocs] to automatically detect and set.
[automaxprocs]: https://github.com/uber-go/automaxprocs
-
CPU throttling despite being well below the limit
For you own applications, you can use: https://github.com/uber-go/automaxprocs
go-licenses
-
Shouldn't have happened: A vulnerability postmortem
> I don't think the exact URL is the problem, it is the fact that it is so easy to include dependencies from external repository that is the problem. In Rust every non-trivial library pulls in 10s or even 100s of dependencies.
But it's also quite a lot easier to audit those dependencies, even automatically (incidentally, GitHub provides dependency scanning for free for many languages).
> Then there is the issue of licencing - how to verify that I am not using some library in violation of its licence and what happens if the licence changes down the road and I don't notice it because I am implicitly using 500 dependencies due to my 3 main libraries?
This is also an automated task. For example, https://github.com/google/go-licenses
> go-licenses analyzes the dependency tree of a Go package/binary. It can output a report on the libraries used and under what license they can be used. It can also collect all of the license documents, copyright notices and source code into a directory in order to comply with license terms on redistribution.
> Rust and Go have solved memory safety compared to C and C++ but have introduced dependency hell of yet unknown proportions.
I mean, it's been a decade and things seem to be going pretty well. Also, I don't think anyone who has actually used these languages seriously has ever characterized their dependency management as "dependency hell"; however, lots of people talk about the "dependency hell" of managing C and C++ dependencies.
> Python and other dynamically typed languages are in a league of their own in that on top of the dependency hell they also do not provide compiler checks that would allow user to see the problem before the exact conditions occur at runtime.
I won't argue with you there.
What are some alternatives?
rfcs - RFCs for changes to Rust
gitgen - Generate license and gitignore files from Go without an internet connection. It also has a convenience CLI, but can be used as a library as well
go-perfbook - Thoughts on Go performance optimization
addlicense - A program which ensures source code files have copyright license headers by scanning directory patterns recursively
sudo - Utility to execute a command as another user
JDK - JDK main-line development https://openjdk.org/projects/jdk
go-internals - A book about the internals of the Go programming language.
tiny-rust-executable - Using Rust to make a 137-byte static AMD64 Linux executable
guide - The Uber Go Style Guide.
codethesaur.us - A polyglot developer reference tool to compare programming language concepts side-by-side! Great for learning new languages or using for reference.
go101 - An up-to-date (unofficial) knowledge base for Go programming self learning
lxcfs - FUSE filesystem for LXC