Skip to content

Instantly share code, notes, and snippets.

View ziwon's full-sized avatar
🗿
?!

Yeongpil Y. ziwon

🗿
?!
View GitHub Profile
@ziwon
ziwon / min-char-rnn.py
Created July 20, 2023 09:00 — forked from karpathy/min-char-rnn.py
Minimal character-level language model with a Vanilla Recurrent Neural Network, in Python/numpy
"""
Minimal character-level Vanilla RNN model. Written by Andrej Karpathy (@karpathy)
BSD License
"""
import numpy as np
# data I/O
data = open('input.txt', 'r').read() # should be simple plain text file
chars = list(set(data))
data_size, vocab_size = len(data), len(chars)
@ziwon
ziwon / gist:15e94adc1b62854319fe6726b53db7c8
Created September 23, 2023 08:28 — forked from chanks/gist:7585810
Turning PostgreSQL into a queue serving 10,000 jobs per second

Turning PostgreSQL into a queue serving 10,000 jobs per second

RDBMS-based job queues have been criticized recently for being unable to handle heavy loads. And they deserve it, to some extent, because the queries used to safely lock a job have been pretty hairy. SELECT FOR UPDATE followed by an UPDATE works fine at first, but then you add more workers, and each is trying to SELECT FOR UPDATE the same row (and maybe throwing NOWAIT in there, then catching the errors and retrying), and things slow down.

On top of that, they have to actually update the row to mark it as locked, so the rest of your workers are sitting there waiting while one of them propagates its lock to disk (and the disks of however many servers you're replicating to). QueueClassic got some mileage out of the novel idea of randomly picking a row near the front of the queue to lock, but I can't still seem to get more than an an extra few hundred jobs per second out of it under heavy load.

So, many developers have started going straight t

@ziwon
ziwon / sysctl.conf
Created January 12, 2024 07:23 — forked from maprangzth/sysctl.conf
ubuntu sysctl performance tuning
# Kernel sysctl configuration file for Linux
#
# Version 1.12 - 2015-09-30
# Michiel Klaver - IT Professional
# http://klaver.it/linux/ for the latest version - http://klaver.it/bsd/ for a BSD variant
#
# This file should be saved as /etc/sysctl.conf and can be activated using the command:
# sysctl -e -p /etc/sysctl.conf
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and sysctl.conf(5) for more details.

Links for Nisght tools and tutorials

Download center

Installing Nsight compute from command-line:

# Download .run file from website and accept the terms and conditions.
sudo ./nsight-compute-linux-2020.1.1.8-28506821.run --nox11
@ziwon
ziwon / mlnx_sriov.sh
Created April 16, 2025 11:13 — forked from krono/mlnx_sriov.sh
Script to enable SRIOV virtual functions on Mellanox cards
#!/bin/bash
set -eu
# Hat tip to https://gist.github.com/koallen/32709a244d77a2c0f8e17ed79a4092ed
MLNX_SRIOV_DEVICES=""
[ -e /etc/default/mlnx_sriov ] && . /etc/default/mlnx_sriov
# params
# - device sys path (e.g. /sys/class/infiniband/mlx5_0)