[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#997989: ITP: golang-github-hodgesds-perf-utils -- Perf Utilities for Go



X-Debbugs-CC: debian-devel@lists.debian.org, debian-go@lists.debian.org
Package: wnpp
Severity: wishlist
Owner: Benjamin Drung <benjamin.drung@ionos.com>

* Package name    : golang-github-hodgesds-perf-utils
  Version         : 0.3.1-1
  Upstream Author : Daniel Hodges
* URL             : https://github.com/hodgesds/perf-utils
* License         : Expat
  Programming Lang: Go
  Description     : Perf Utilities for Go

 This package is a Go library for interacting with the perf subsystem in Linux.
 This library allows you to do things like see how many CPU instructions a
 function takes (roughly), profile a process for various hardware events, and
 other interesting things. Note that because the Go scheduler can schedule a
 goroutine across many OS threads it becomes rather difficult to get an exact
 profile of an individual goroutine. However, a few tricks can be used; first a
 call to runtime.LockOSThread (https://golang.org/pkg/runtime/#LockOSThread) to
 lock the current goroutine to an OS thread. Second a call to
 unix.SchedSetaffinity
 (https://godoc.org/golang.org/x/sys/unix#SchedSetaffinity), with a CPU set
 mask set. Note that if the pid argument is set 0 the calling thread is used
 (the thread that was just locked). Before using this library you should
 probably read the perf_event_open man page which this library uses heavily.
 See the kernel guide https://perf.wiki.kernel.org/index.php/Tutorial for a
 tutorial how to use perf and some of the limitations.
 .
 If you are looking to interact with the perf subsystem directly with
 perf_event_open syscall than this library is most likely for you. A large
 number of the utility methods in this package should only be used for testing
 and/or debugging performance issues. This is due to the nature of the Go
 runtime being extremely tricky to profile on the goroutine level, with the
 exception of a long running worker goroutine locked to an OS thread.
 Eventually this library could be used to implement many of the features of
 perf but in pure Go. Currently this library is used in node_exporter
 (https://github.com/prometheus/node_exporter) as well as perf_exporter
 (https://github.com/hodgesds/perf_exporter), which is a Prometheus exporter
 for perf related metrics.

This package was vendored in prometheus-node-exporter and is packages now
separately. I will maintain this package as part of the Go team.

-- 
Benjamin Drung

Senior DevOps Engineer and Debian & Ubuntu Developer
Compute Platform Operations

1&1 IONOS SE | Greifswalder Str. 207 | 10405 Berlin | Deutschland
E-Mail: benjamin.drung@ionos.com | Web: www.ionos.de

Hauptsitz Montabaur, Amtsgericht Montabaur, HRB 24498

Vorstand: Hüseyin Dogan, Dr. Martin Endreß, Claudia Frese, Henning
Kettler, Arthur Mai, Matthias Steinberg, Achim Weiß
Aufsichtsratsvorsitzender: Markus Kadelke


Member of United Internet


Reply to: