Skip to content

Instantly share code, notes, and snippets.

View chendotjs's full-sized avatar

Chen Yaqi chendotjs

  • Shanghai
  • 00:50 (UTC +08:00)
View GitHub Profile
@chendotjs
chendotjs / latency.txt
Created March 29, 2024 01:48 — forked from jboner/latency.txt
Latency Numbers Every Programmer Should Know
Latency Comparison Numbers (~2012)
----------------------------------
L1 cache reference 0.5 ns
Branch mispredict 5 ns
L2 cache reference 7 ns 14x L1 cache
Mutex lock/unlock 25 ns
Main memory reference 100 ns 20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy 3,000 ns 3 us
Send 1K bytes over 1 Gbps network 10,000 ns 10 us
Read 4K randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD
#!/bin/bash
VERSION=${1#"v"}
if [ -z "$VERSION" ]; then
echo "Please specify the Kubernetes version: e.g."
echo "./download-deps.sh v1.21.0"
exit 1
fi
set -euo pipefail
package main
import (
"context"
"flag"
"fmt"
"log"
"path/filepath"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@chendotjs
chendotjs / bpfman
Last active September 17, 2023 07:33
#/bin/bash
if [[ $# -lt 1 ]]; then
ctags -R -x --kinds-C=pd /usr/include/bpf/
else
funcline=$(ctags -R -x --kinds-C=pd /usr/include/bpf/ | grep $1)
echo $funcline | awk '{printf("%s %s\n", $4, $3)}' | if read -r src linenum; then
ag -B 1 -A 5 "$1\(" $src
fi
fi
@chendotjs
chendotjs / sysctl.conf
Created April 1, 2021 07:50 — forked from voluntas/sysctl.conf
Sysctl configuration for high performance
### KERNEL TUNING ###
# Increase size of file handles and inode cache
fs.file-max = 2097152
# Do less swapping
vm.swappiness = 10
vm.dirty_ratio = 60
vm.dirty_background_ratio = 2
@chendotjs
chendotjs / simple-drop-kp.bt
Last active January 14, 2021 06:05 — forked from florianl/flow.bt
simple bpftrace script to print out drop packet
#!/bin/bpftrace
#include <linux/skbuff.h>
#include <linux/ip.h>
BEGIN
{
printf("follow the white rabbit\n");
}
@chendotjs
chendotjs / l3.png
Last active May 11, 2020 04:10
network-stack-callvis
l3.png
kind: Deployment
apiVersion: apps/v1
metadata:
name: simple-http
spec:
replicas: 2
selector:
matchLabels:
app: simple-http
template:
@chendotjs
chendotjs / skbtracer.c
Last active November 30, 2023 14:36
ebpf-skbtracer
#include <bcc/proto.h>
#include <uapi/linux/ip.h>
#include <uapi/linux/ipv6.h>
#include <uapi/linux/icmp.h>
#include <uapi/linux/tcp.h>
#include <uapi/linux/udp.h>
#include <uapi/linux/icmpv6.h>
#include <net/inet_sock.h>
#include <linux/netfilter/x_tables.h>
function e() {
set -eu
ns=${2-"default"}
pod=`kubectl -n $ns describe pod $1 | grep -A10 "^Containers:" | grep -Eo 'docker://.*$' | head -n 1 | sed 's/docker:\/\/\(.*\)$/\1/'`
pid=`docker inspect -f {{.State.Pid}} $pod`
echo "entering pod netns for $ns/$1"
cmd="nsenter -n --target $pid"
echo $cmd
$cmd
}