Top all-time · #5313
Tanel Poder
Personal blog · tanelpoder.com/posts · on HN as tanelpodersystemsdata
Tanel Poder's personal blog at tanelpoder.com covers systems and data. Since 2020, 14 different Hacker News readers have linked it 105 times, most often “Why SELECT * is bad for SQL performance (2020)”. It is still writing: the last post was on 2026-04-10, and you can follow it by feed.
- Linux, Oracle, SQL performance tuning and troubleshooting training & writing.
Most-linked posts?
- Why SELECT * is bad for SQL performance (2020)5 people · 6 mentions · first linked 2020-11-25
- Achieving 11M IOPS and 66 GB/S IO on a Single ThreadRipper Workstation4 people · 6 mentions · first linked 2021-01-29
- Measuring process CPU scheduling latency on Linux2 people · 3 mentions · first linked 2021-01-23
- Peeking into Linux kernel-land using /proc filesystem for quick troubleshooting2 people · 2 mentions · first linked 2021-01-20
- Visualizing SQL Plan Execution Time with FlameGraphs (2018)2 people · 2 mentions · first linked 2021-02-15
What Hacker News says?
Yes, can confirm, the book is great. I was also happy to see that the author correctly (in my mind) used the term “embedding vectors” vs. “vector embeddings” that most others seem to use… Some more context about my pet peeve: https://tanelpoder.com/posts/embedding-vectors-vs-vector-emb...
Comment linking /posts/embedding-vectors-vs-vector-embeddings/
on “The maths you need to start understanding LLMs”Submitted Achieving 11M IOPS and 66 GB/S IO on a Single ThreadRipper Workstation as a story · 497 points
HN discussionValid question! 1) Learning & researching capabilities of modern HW 2) Running RDBMS stress tests (until breaking point), Oracle, Postgres+TimescaleDB, MySQL, probably ScyllaDB soon too 3) Why? As a performance troubleshooter consultant+trainer, I regularly have to reproduce complex problems that show up only under high concurrency & load - stuff that you can't just reproduce in a VM in a laptop. 4) Fun - seeing if…
Comment linking /videos/
on “Achieving 11M IOPS and 66 GB/S IO on a Single ThreadRipper Workstation”Submitted Why SELECT * is bad for SQL performance (2020) as a story · 259 points
HN discussionGood question. I don't ever read kernel code as a starting point, only if some profiling or tracing tool points me towards an interesting function or codepath. And interesting usually is something that takes most CPU in perf output or some function call with an unusually high latency in ftrace, bcc/bpftrace script output. Or just a stack trace in a core- or crashdump. As far as mindset goes - I try to apply the deve…
Comment linking /psnapper
on “Achieving 11M IOPS and 66 GB/S IO on a Single ThreadRipper Workstation”Submitted Do not use redirection characters in your shell prompt as a story · 217 points
HN discussionSeems like you could build a workstation that runs these quesries faster and cheaper than AWS ever could on a RAIDed set of NVME drives. https://tanelpoder.com/posts/11m-iops-with-10-ssds-on-amd-th...
Comment linking /posts/11m-iops-with-10-ssds-on-amd-threadripper-pro-workstation/
on “Searching the web for under $1000/month”Submitted Is Your Linux Version Hiding Interrupt CPU Usage from You? as a story · 133 points
HN discussionDo you mean arguments and the internal syscall number used for a syscall on your given platform? I recently had enough of parsing the various syscall.h files on different architectures and wrote a debugfs syscall info reader instead. That way you can see all tracepoint-instrumented syscalls and arguments available exactly on your currently running kernel on your platform: https://tanelpoder.com/posts/list-linux-syst…
Comment linking /posts/list-linux-system-call-arguments-with-syscallargs/
on “A Linux kernel syscall implementation tracker”Submitted MySQL now shows its thread names at OS level for better troubleshooting as a story · 131 points
HN discussionGreat post called "Achieving 11M IOPS & 66 GB/s IO on a Single ThreadRipper Workstation" [1, 2] that basically walks through step-by-step that your computer is just a bunch of interconnected networks. Highly recommend the post if you're into this and also sort of amazing how far single systems have come. You can basically do "big data" type things on this single box. [1] https://tanelpoder.com/posts/11m-iops-with-10…
Comment linking /posts/11m-iops-with-10-ssds-on-amd-threadripper-pro-workstation/
on “Your computer is a distributed system”Submitted When eBPF pt_regs reads return garbage on the latest Linux kernels, blame Fred as a story · 105 points
HN discussionAMD definitely has a recent high end desktop/workstation platform with its ThreadRipper Pro WX CPUs (EPYC server CPUs) that have 128 PCIe 4.0 lanes and 8 memory channels. And enough PCIe slots to actually use this throughput with the right kind of hardware, like a bunnch of PCIe4.0 NVMe SSDs [1]. Yep, the platform is 2 years old, but supports both the Zen2 and current Zen3 CPUs (but not PCIe5.0 & DDR5 as Zen 4 requi…
Comment linking /posts/11m-iops-with-10-ssds-on-amd-threadripper-pro-workstation/
on “The death of the PCIe expansion card”Submitted New Tool: lsds – List All Linux Block Devices and Settings in One Place as a story · 101 points
HN discussionSometime ago I posted this: https://tanelpoder.com/2009/03/14/the-real-history-of-oracle... probably not true, but fun to think about.
Comment linking /2009/03/14/the-real-history-of-oracle-database-revealed/
on “Oracle started as a CIA project (2014)”Submitted High System Load with Low CPU Utilization on Linux? (2020) as a story · 90 points
HN discussionI wrote the CatBench vector search playground toy app exactly for this reason! [1] ("cat-similarity search for recommendation engines and cat-fraud detection"). I built it both for learning & fun, but also it's useful for demoing vector search functionality, plugged in to regular RDBMS application schemas in business context. I used cats & dogs as it's something everyone understands, instead of diving deep into some…
Comment linking /posts/catbench-vector-search-query-throughput-latency-monitoring/
on “How can AI ID a cat?”Submitted RAM is the new disk – and how to measure its performance (2015) as a story · 75 points
HN discussionI took a completely different path to visualizing embedding vectors’ physical layout [1] - mainly to explain how the data structures, data volumes and comparison would radically differ, compared to your regular btree index searches. I made sure to mention that you can’t make any conclusions based on just human eyeballing of these vector heatmaps, but the database people I’ve demoed this to, seem to have reached some…
Comment linking /posts/comparing-vectors-of-the-same-rotated-image/
on “A visual exploration of vector embeddings”Submitted I rage-converted my RTX4090 into an eGPU as a story · 46 points
HN discussionOn Linux this is not true, on an IO heavy system - with lots of synchronous I/Os done concurrently by many threads - your load average may be well over the number of CPUs, without having a CPU shortage. Say, you have 16 CPUs, load avg is 20, but only 10 threads out of 20 are in Runnable (R) mode on average, and the other 10 are in Uninterruptible sleep (D) mode. You don't have a CPU shortage in this case. Note that…
Comment linking /posts/high-system-load-low-cpu-utilization-on-linux/
on “Linux Performance Analysis (2015)”Submitted Using Postgres pg_test_fsync tool for testing low latency writes as a story · 40 points
HN discussionWhen I was looking into this, I found that just running ps (with -L option to see all threads, not just processes/thread group leaders) with some grep/sort/uniq was the easiest way to break down where does the “too high Linux system load” come from. No need to compile C code or have root access to drill down into load. And you could drill down further by sampling some additional /proc/PID/task/TID/ files, like “sysc…
Comment linking /posts/high-system-load-low-cpu-utilization-on-linux/
on “Where Linux's load average comes from in the kernel”Submitted List Any Linux Tracepoint with Their Arguments, Datatypes and Related Structs as a story · 40 points
HN discussionBy the way, JVMs also set thread names for their own housekeeping threads (on Linux at least, not sure from which version) and allow applications to name them too. I wrote an example here: https://tanelpoder.com/posts/measuring-java-jvm-thread-level...
Comment linking /posts/measuring-java-jvm-thread-level-activity-on-linux/
on “MySQL now shows its thread names at OS level for better troubleshooting”Submitted Oracle Shared Pool Internals: Allocated Chunk Status Indicators in Heap Dumps as a story · 40 points
HN discussionYup, for best results you wouldn't just dump your existing pointer-chasing and linked-list data structures to CXL (like the Optane's transparent mode was, whatever it was called). But CXL-backed memory can use your CPU caches as usual and the PCIe 5.0 lane throughput is still good, assuming that the CXL controller/DRAM side doesn't become a bottleneck. So you could design your engines and data structures to account…
Comment linking /posts/testing-oracles-use-of-optane-persistent-memory/
on “GigaByte CXL memory expansion card with up to 512GB DRAM”Submitted Optimizing eBPF I/O latency accounting when running 37M IOPS, on 384 CPUs as a story · 22 points
HN discussionThe title says Database Protocols, but the author writes only about MySQL and Postgres. There are other databases out there, for example Oracle that I’m the most familiar with and it has had a break/reset mechanism built in to its protocol for at least 30 years [1]. Its a 2 step operation (2 roundtrips), one sending an error back to the client instead of the expected result and the second step will reset “current ca…
Comment linking /2008/04/10/sqlnet-breakreset-to-client/
on “Database Protocols Are Underwhelming”Submitted Catbench Vector Search Demo Has Postgres SQL Throughput, Latency Monitoring Now as a story · 18 points
HN discussion