pics
go-profiler-notes
pics | go-profiler-notes | |
---|---|---|
12 | 14 | |
10,313 | 3,483 | |
0.3% | 0.4% | |
7.4 | 1.5 | |
3 months ago | about 2 months ago | |
Assembly | Jupyter Notebook | |
- | Creative Commons Attribution Share Alike 4.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.
pics
- Hello, PNG
-
can’t be the only one
Using this framework, you can started with some excercises or dig into some file formats if you want something different (many file format have segments with variable length so the header will provide either offset or length which makes a good execercise for understanding pointer arithmetic).
- Binary Posters
-
How to generate an object file (and later an exe) from assembly
And this is not official, but you'll probably like it: https://github.com/corkami/pics/tree/master/binary/pe101
-
An MP4 file first draft
Author's github: https://github.com/corkami/pics
He works on things like hash collisions, image files that contain an image of their own hash, "polyglot" files and such like.
I think this is intended as a "minimum viable mp4 file" to show what the required binary parts are.
- Computing Posters
- ELF 101 a Linux Executable Walkthrough by Ange Albertini [pdf]
-
Fantastic Symbols and Where to Find Them - Part 1
ELF Executable and Linkable Format diagram by Ange Albertini
go-profiler-notes
- The Busy Developer's Guide to Go Profiling, Tracing and Observability
-
Dwarf-Based Stack Walking Using eBPF
Thanks!
As @brancz mentioned, Delve uses DWARF unwind information to produce backtraces (they are stored in the .debug_frame section for Go).
You are right, Go enabled frame pointers for all architectures as of 1.17 [0]. This is enabled to allow profilers to work well, without having to use to techniques such as the one we describe in our post.
When it gets funny is that there's `gopclntab`, a 3rd option in Go to unwind stacks, used by `panic` and I believe other parts of the runtime. If you are interested in more details, Felix Geisendörfer's repo contains way more details [1]
[0]: https://go.dev/doc/go1.17
[1]: https://github.com/DataDog/go-profiler-notes/blob/main/stack...
- Resources to Learn Profiling and Benchmarking
- go-profiler-notes/README.md at main · DataDog/go-profiler-notes
- Fantastic Symbols and Where to Find Them - Part 1
-
Share your must-know Go development tips
this is a good read about pprof https://github.com/DataDog/go-profiler-notes/blob/main/guide/README.md
- The Busy Developers's Guide to Go Profiling, Tracing and Observability
What are some alternatives?
pdftilecut - pdftilecut lets you sub-divide a PDF page(s) into smaller pages so you can print them on small form printers.
fgprof - 🚀 fgprof is a sampling Go profiler that allows you to analyze On-CPU as well as Off-CPU (e.g. I/O) time together.
Plex-Movie-Poster-Display - Scraps the Plex sessions page to display the current playing movie or TV show poster on a screen.
parca - Continuous profiling for analysis of CPU and memory usage, down to the line number and throughout time. Saving infrastructure cost, improving performance, and increasing reliability.
parca-agent - eBPF based always-on profiler auto-discovering targets in Kubernetes and systemd, zero code changes or restarts needed!
MP4Inspector - A Chrome extension to help you inspect Mp4 video content and find irregularities in video streams.
goimpl.nvim - Generate stub for interface on a type
GpxTrackPoster - Create a visually appealing poster from your GPX tracks
gotests - Automatically generate Go test boilerplate from your source code.
basis_universal - Basis Universal GPU Texture Codec
nvim