Skip to content

Instantly share code, notes, and snippets.

View aclements's full-sized avatar

Austin Clements aclements

View GitHub Profile
package main
import (
"math/rand"
"sync/atomic"
"time"
)
const (
numGs = 10
package main
import (
"math/rand"
"runtime"
"sync/atomic"
"time"
)
const (
@aclements
aclements / sim.py
Created November 17, 2015 14:39
Symbolic bug finder for golang/go#13143
# PYTHONPATH=/home/austin/r/stp/build/bindings/python
import sys, collections
import sym
_PageSize = 8192
_PageShift = 13
_HeapAllocChunk = 1 << 20
_MaxArena32 = 2 << 30
diff --git a/benchmark/Dockerfile b/benchmark/Dockerfile
index f1c7bc4..d05de8d 100644
--- a/benchmark/Dockerfile
+++ b/benchmark/Dockerfile
@@ -8,9 +8,13 @@ RUN mkdir -p /go/src/github.com/grafana
RUN cd /go/src/github.com/grafana && \
git clone https://github.com/raintank/grafana-api-golang-client.git && \
cd grafana-api-golang-client && \
- git checkout raintank #&& \
+ git checkout raintank #&&
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@aclements
aclements / findpath.py
Created October 23, 2016 03:16
GDB Python script for Go to find a path from a GC root to an object
# Compute the object graph of a Go heap and find the path from a root
# to a target address.
import gdb
import collections
class SliceValue:
"""Wrapper for slice values."""
def __init__(self, val):
@aclements
aclements / corewithpcsp.py
Last active January 17, 2017 16:55
Clone a core file with a new PC/SP for thread 1
import gdb
import re
import tempfile
import os
import subprocess
import shutil
import struct
NOTE_HDR = struct.Struct("III")
USER_REGS = struct.Struct(27*"Q")
@aclements
aclements / popcnt_test.go
Created March 17, 2017 19:59
Benchmark of different ways to guard the POPCNT instruction
// Requires https://go-review.googlesource.com/c/38320
package popcnt
import (
"math/bits"
"testing"
)
var sink interface{}
@aclements
aclements / pacer.py
Last active July 21, 2017 00:58
Plot gcpacertrace log
# Read gcpacertrace log from stdin and plot pacing.
import sys
import subprocess
gp = subprocess.Popen(["gnuplot", "-persist", "-e", """
set xrange [0:2];
set yrange [0:1];
set xlabel "Heap ratio (h)";
set ylabel "GC CPU (u_a)";
@aclements
aclements / trigger-error.go
Created July 18, 2017 20:03
Plot GC pacer trigger error function
// Copyright 2017 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
import (
"image/color"
"math"
"os"