Releases: javierhonduco/lightswitch
Releases · javierhonduco/lightswitch
v0.3.1
Summary of changes
- Fixed a bug that resulted in stray BPF mappings not being deleted which caused a drop in sample quantities over time
- Bump maximum unwind info size to 7 million entries
- Fix DWARF PLT expresion selection
- Support for unwinding v8 using frame pointers
- Update LLVM from 16→19
- Store unwind info in dynamically sized inner maps, saving a significant amount of space in BPF maps
- Support for profiling workloads within a different process namespace
- Fixed a bug that resulted in a crash in kernels with real time patches such as RHEL9 and CentOS
- Remove memory mappings in the tracer
List of changes (excluding version bumps)
- Unify page size implementations by @javierhonduco in #278
- Do not clone mapping in
for_addressby @javierhonduco in #279 - ci: On release upload container to registry by @javierhonduco in #280
- Store unwind info in dynamically sized inner maps by @javierhonduco in #285
- Send the minimum amount of data for a sample by @javierhonduco in #286
- Reduce eviction window by @javierhonduco in #287
- Use frame pointers for v8 by @javierhonduco in #288
- Bump maximum unwind info size to 7 million entries by @javierhonduco in #289
- object: Use 2024 edition by @javierhonduco in #291
- Fetch the right pid and tid if running in a non-root PID namespace by @javierhonduco in #290
- Improve perf fd variable name by @javierhonduco in #294
- ci: Do not push image in forks by @javierhonduco in #297
- Add clang-format to prevent breaking eBPF format changes by @gmarler in #316
- Never choose PID 0 (KERNEL_PID) as eviction victim by @gmarler in #342
- Use s32/i32 as PID data type consistently by @gmarler in #344
- Add from_bytes for exec_mappings_key so we can extract PID by @gmarler in #341
- Extract unwind_info_len for each executable id when evicting unwind info by @gmarler in #348
- build: Update nixpkgs and LLVM from 16→19 by @javierhonduco in #351
- devex: Add direnv by @javierhonduco in #352
- Add DeletionScheduler implementation by @gmarler in #340
- Use the default implementation in DeletionScheduler ctor by @gmarler in #354
- Fix doc links by @javierhonduco in #375
- Do not keep inserting vDSO object by @javierhonduco in #378
- Fix BPF process mapping deletion by @javierhonduco in #379
- fmt: Wrap comments by @javierhonduco in #380
- build: Unpin blazesym by @javierhonduco in #382
- Allow clients to avoid prost dependency by @samanpa in #385
- Fix underreporting unwind map size by @javierhonduco in #386
- Make
AddProcessErrorprocfs errors more granular by @javierhonduco in #387 - Add counter for
NEED_UNWIND_INFOevent by @javierhonduco in #388 - native: Fix PLT expression selection expression by @javierhonduco in #390
- Allow generating protobuf types without requiring protoc installation by @samanpa in #383
- Rename
maybe_evict_processcondition argument by @javierhonduco in #392 - Bump version of lightswitch-proto by @samanpa in #397
- ci/release: Publish crates to crates.io by @javierhonduco in #398
- release: Prepare v0.3.1 by @javierhonduco in #399
- ci/release: Fix permissions for package publish by @javierhonduco in #400
- tracers: Remove tracked munmap by @javierhonduco in #389
New Contributors
Full Changelog: v0.3.0...v0.3.1
v0.3.0
Summary
- Samples are now sent individually rather than aggregated in the kernel, which in some cases it lead to stack quality issues. This will also allow to send per sample data such as timestamp and cpu core which will be used in future features
- Fixes on how the base address is calculated, improving unwinding success for other linkers and loaders
- Zig 🦎 is now fully supported (All the gory details in #264)
- Many other bug-fixes and smaller features
List of changes (excluding version bumps)
- Improve rate-limiting efficacy of new code regions events by @javierhonduco in #216
- docs: Update README.md with features by @javierhonduco in #221
- Improve error handling for critical BPF map ops by @javierhonduco in #217
- ci: Show nix version by @javierhonduco in #236
- Do not keep a reference to executables by @javierhonduco in #237
- Remove partially written BPF mappings on errors by @javierhonduco in #238
- Update Cargo hash by @patnebe in #222
- [Refactor] Create RawSample struct by @patnebe in #219
- Add uspace aggregation component by @patnebe in #242
- Refactor stack + key into new struct by @patnebe in #241
- Update elfutils to v0.193 by @javierhonduco in #248
- Stack storage rework by @patnebe in #245
- native-unwinder: Remove unused constants by @javierhonduco in #252
- [Trivial] Rename stack_key to stack_sample_header by @patnebe in #253
- Update Nix and fix new lints by @javierhonduco in #249
- object: Only keep executable load segments by @javierhonduco in #260
- capabilities: Detect support for variable size inner maps by @javierhonduco in #261
- build: Expose static C++ musl binary by @javierhonduco in #268
- sym: Fetch filename and line number if available by @javierhonduco in #267
- build: Update Nix by @javierhonduco in #271
- Fix load address calculation by @javierhonduco in #272
- Fully support Zig by @javierhonduco in #269
- Add support for
*($rsp + offset) + valueDWARF expressions by @javierhonduco in #273 - Add an option to flamegraph to show file and line number by @javierhonduco in #274
- Skip digest checks when reading unwind info by @javierhonduco in #275
- Show unwinding success percentage by @javierhonduco in #276
Full Changelog: v0.2.0...v0.3.0
v0.2.0
What's Changed
- [Trivial] Delete unused file by @patnebe in #175
- Bump ring from 0.17.11 to 0.17.13 by @dependabot in #176
- Implement support for an emergency killswitch by @patnebe in #174
- Add subcommands for object, system, and unwind info by @javierhonduco in #178
- Fix off-by-one in BPF pages deletion by @javierhonduco in #179
- ci: Add dependabot for GitHub Actions by @javierhonduco in #181
- build: Add rust-src and rust-analyzer by @javierhonduco in #182
- Update cargo deps by @javierhonduco in #183
- Improve error handling dealing with unwind info by @javierhonduco in #184
- Rename chunks → pages by @javierhonduco in #185
- ci: Pin actions by git revision by @javierhonduco in #186
- cli: Indicate that symbolization started by @javierhonduco in #187
- Apply config to tracers too by @javierhonduco in #188
- Add process eviction by @javierhonduco in #180
- Update Rust deps by @javierhonduco in #189
- unwind-info: Improve error handling by @javierhonduco in #191
- Add optional bearer token authentication for write requests by @javierhonduco in #193
- crate/object: Make
ExecutableIda newtype by @javierhonduco in #194 - testprogs: Add Go samples by @javierhonduco in #195
- Register metadata on new process detected by @patnebe in #177
- build: Update nixpkgs by @javierhonduco in #198
- perf-events: Use
std::io::Errorby @javierhonduco in #200 - lightswitch-proto: Use custom errors by @javierhonduco in #201
- Add support for Go by @javierhonduco in #203
- build: Add bpftool by @javierhonduco in #207
- Detect stop frames faster by @javierhonduco in #208
- Use
mmap()to write unwind info and make it 70x faster by @javierhonduco in #209 - Use
bpf_task_pt_regsif available by @javierhonduco in #210 - ci: Add dependabot configuration for Rust deps by @javierhonduco in #211
- build(deps): bump the cargo-dependencies group with 57 updates by @dependabot in #213
- Prepare for v0.2.0 by @javierhonduco in #214
Full Changelog: v0.1.1...v0.2.0
v0.1.1
What's Changed
- Do not pass the executable_id around by @javierhonduco in #147
- metadata: Use the thread group id (tgid) for the main task by @javierhonduco in #146
- Increase unwind information batch size by @javierhonduco in #148
- Increase debuginfo upload timeout by @javierhonduco in #149
- Improve naming in unwind info paging by @javierhonduco in #152
- deps: Use rustls instead of openssl by @javierhonduco in #154
- Make cache directory configurable by @javierhonduco in #155
- build: Add optimised release target by @javierhonduco in #156
- ci: Do not cancel running jobs by @javierhonduco in #158
- Fix typo on release-lto profile by @javierhonduco in #159
- Update deps + delete duplicated tests by @javierhonduco in #157
- ci: Migrate from nix magic cache to flakehub by @javierhonduco in #161
- ci: Cache Rust builds by @javierhonduco in #160
- [Trivial/CHORE] Metadata lib refactor by @patnebe in #150
- Introduce ring buffers by @javierhonduco in #163
- Find instruction before return address by @javierhonduco in #165
- Add special values to process LPM tree by @javierhonduco in #166
- Improve wording if the native unwind info is known by @javierhonduco in #167
- Kernel object improvements by @javierhonduco in #162
- native unwinder: Log when the stack is truncated by @javierhonduco in #169
- Update rust deps by @javierhonduco in #170
- metadata: Fix process metadata cache by @javierhonduco in #172
- Add helper to perform fast file identity checks by @javierhonduco in #168
- Bump lightswitch version to v0.1.1 by @javierhonduco in #173
Full Changelog: v0.1.0...v0.1.1
v0.1.0
First release.
First release
This is the first GitHub (pre) release of this project