Skip to content

Instantly share code, notes, and snippets.

@hashbrowncipher
hashbrowncipher / hfsc-shape.sh
Created January 13, 2018 00:44 — forked from eqhmcow/hfsc-shape.sh
HFSC - linux traffic shaping's best kept secret
#!/bin/bash
# As the "bufferbloat" folks have recently re-discovered and/or more widely
# publicized, congestion avoidance algorithms (such as those found in TCP) do
# a great job of allowing network endpoints to negotiate transfer rates that
# maximize a link's bandwidth usage without unduly penalizing any particular
# stream. This allows bulk transfer streams to use the maximum available
# bandwidth without affecting the latency of non-bulk (e.g. interactive)
# streams.
@hashbrowncipher
hashbrowncipher / s3_imager
Last active December 30, 2017 12:01
An imager based on s3gof3r, for reimaging EC2 nodes without losing their instance store
#!/bin/bash
set -x
set -o errexit
set -o nounset
set -o pipefail
#------- end of header (relevant for root/kernel.sh, below)
readonly INITRD_DIR=initrd
readonly SSH_KEY="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIyK5qcNzv65trF8pdiLZbnBS6NLJqiHhGSQo6veOswH"
@hashbrowncipher
hashbrowncipher / build.sh
Created December 22, 2017 16:44
builds a gof3r-based image installer
#!/bin/bash
set -x
set -o errexit
set -o nounset
set -o pipefail
readonly INITRD_DIR=initrd
base() {
debootstrap \
#include <linux/hrtimer.h>
#include <linux/module.h>
#include <linux/kernel.h>
static struct hrtimer timer;
enum hrtimer_restart yell_rick( struct hrtimer *timer )
{
ktime_t time;
printk(KERN_INFO "I turned myself into a logger morty! I'm dmesg RIIIICK!\n");
diff --git a/src/main/java/com/tagtraum/perf/gcviewer/view/renderer/TotalTenuredRenderer.java b/src/main/java/com/tagtraum/perf/gcviewer/view/renderer/TotalTenuredRenderer.java
index 344965d..f8e31a0 100644
--- a/src/main/java/com/tagtraum/perf/gcviewer/view/renderer/TotalTenuredRenderer.java
+++ b/src/main/java/com/tagtraum/perf/gcviewer/view/renderer/TotalTenuredRenderer.java
@@ -49,6 +49,8 @@ public class TotalTenuredRenderer extends PolygonChartRenderer {
polygon.addPoint(0, (double)tenured.getTotal());
}
polygon.addPoint(tenured.getTimestamp() - model.getFirstPauseTimeStamp() + event.getPause(),
+ lastTotal);
+ polygon.addPoint(tenured.getTimestamp() - model.getFirstPauseTimeStamp() + event.getPause(),
package com.josnyder;
import java.lang.management.ManagementFactory;
import javax.management.InstanceAlreadyExistsException;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.apache.cassandra.service.CassandraDaemon;
class HotspotMBeanCassandraDaemon extends CassandraDaemon {
protected void setup() {
$ sudo ./ocperf.py stat -e cpu_clk_thread_unhalted.ref_xclk,cpu_clk_thread_unhalted.ref_xclk_any,cpu_clk_unhalted.one_thread_active -a -- sleep 5
perf stat -e cpu/event=0x3c,umask=0x1,name=cpu_clk_thread_unhalted_ref_xclk/,cpu/event=0x3c,umask=0x1,any=1,name=cpu_clk_thread_unhalted_ref_xclk_any/,cpu/event=0x3c,umask=0x2,name=cpu_clk_unhalted_one_thread_active/ -a -- sleep 5
Performance counter stats for 'system wide':
295,538,267 cpu_clk_thread_unhalted_ref_xclk [100.00%]
579,495,176 cpu_clk_thread_unhalted_ref_xclk_any [100.00%]
283,950,270 cpu_clk_unhalted_one_thread_active
5.000637559 seconds time elapsed
@hashbrowncipher
hashbrowncipher / parallel_find
Last active October 28, 2016 16:57
A parallel version of find(1), implementing a DFS-ish over cwd.
//A parallel version of find(1), implementing a DFS-ish over cwd.
//Compile with -lpthread
#include <dirent.h>
#include <fcntl.h>
#include <pthread.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
@hashbrowncipher
hashbrowncipher / latency.markdown
Created October 26, 2016 21:16 — forked from hellerbarde/latency.markdown
Latency numbers every programmer should know

Latency numbers every programmer should know

L1 cache reference ......................... 0.5 ns
Branch mispredict ............................ 5 ns
L2 cache reference ........................... 7 ns
Mutex lock/unlock ........................... 25 ns
Main memory reference ...................... 100 ns             
Compress 1K bytes with Zippy ............. 3,000 ns  =   3 µs
Send 2K bytes over 1 Gbps network ....... 20,000 ns  =  20 µs
SSD random read ........................ 150,000 ns  = 150 µs

Read 1 MB sequentially from memory ..... 250,000 ns = 250 µs

Eden Sizing
There are limits to the size that Eden is allowed to be. Those limits are calculated in calculate_default_min_length:
G1YoungGenSizer::recalculate_min_max_young_length -> G1YoungGenSizer::calculate_default_min_length
G1CollectorPolicy::update_young_list_target_length is responsible for
determining the actual size of the young list. If doing a young GC, it will
call G1CollectorPolicy::calculate_young_list_target_length. This function
attempts to find the largest eden size that will allow (predicted) GC pauses to
remain under the pause time target. Presumably after a certain eden size, there