Posts
530
Following
100
Followers
117
A relatively new professional kernel hacker, born in August 6, 2000, and living in Korea (South!).

- Linux Kernel Developer @ Oracle (Linux Kernel MM) (2025.02 ~ Present)
- Reviewer for the Linux Slab & Reverse Mapping subsystem
- Former Intern @ NVIDIA, SK Hynix, Panmnesia (Security, MM and CXL)
- B.Sc. in Computer Science & Engineering, Chungnam National University (Class of 2025)

Opinions are my own.

My interests are:
Memory Management,
Computer Architecture,
Circuit Design,
Virtualization

Prototype for type-based partitioning of Linux kernel slab caches: https://discourse.llvm.org/t/rfc-a-framework-for-allocator-partitioning-hints/87434/24?u=melver

Compiler seems to be doing a good-enough job of inferring allocated types per /proc/slabinfo. With the diagnostic -Rpass=alloc-token I can see about 965 allocation sites where it failed to infer the allocated type, but most of them are "bag of bytes", and only few with complex sizeof calculations like struct_size that are too opaque right now (but can be fixed).

1
3
1

Harry (Hyeonggon) Yoo

Edited 8 days ago
Working on saving 8 or 16 bytes per slab object in certain slab caches that fall into special cases, most notably 0.7%-0.8% or 1.5%-1.6% (depending on the configuration) memory savings for the inode cache (ext4 and xfs).

When memory cgroup and memory allocation profiling are enabled (the former being very common in production and the latter less so), the kernel allocates two pointers per object: one for the memory cgroup to which it belongs, and another for the code location that requested the allocation.

In two special cases, this overhead can be eliminated by allocating slabobj_ext metadata from unused space within a slab page:
- Case 1. The "leftover" space after the last slab object is larger than the size of an array of slabobj_ext.
- Case 2. The per-object alignment padding is larger than sizeof(struct slabobj_ext).

Thanks to @vbabka who suggested an excellent general approach to cover Case 1 and 2 with a minimal performance impact on the memory cgroup charging code (more details in the cover letter)

For these two cases, one or two pointers can be saved per slab object. Examples include the ext4 inode cache (case 1) and the xfs inode cache (case 2). That results in approximately 0.7-0.8% (memcg) or 1.5-1.6% (memcg + mem profiling) of the total inode cache size.

https://lore.kernel.org/linux-mm/20250827113726.707801-1-harry.yoo@oracle.com/
0
1
2
@ptesarik @ljs

Hopefully, the rise of the physical world comes without the return-to-office :P
0
0
2

Harry (Hyeonggon) Yoo

Edited 21 days ago
I should have been a photographer ?!
1
0
3
@ljs yay, this means I was weak and now I'm getting stronger!
0
0
1

Harry (Hyeonggon) Yoo

Edited 25 days ago
@ljs And while on a diet, I can't eat like I used to before so I've been taking 3-4 teas a day like a Brit to calm down my stomach
0
0
2
@ljs It's really sore that I'm starting to worry lol
1
0
1

Harry (Hyeonggon) Yoo

I didn't really work on my legs much before, but ever since I started PT, my legs hurt with every move I make
0
0
1

Harry (Hyeonggon) Yoo

On diet day 3
0
0
1
@oleksandr
lol man I'd rather stay AI-illiterate (if possible)
1
1
1
@oleksandr and then misread LLM output!
1
0
0

Harry (Hyeonggon) Yoo

Uh I don't want to misread code
1
0
0
@ljs Hail gym! blobcatblankiescared
0
0
2

Harry (Hyeonggon) Yoo

First day of PT, quite tired.
…now my trainer says only two sandwiches are allowed every day. Oh no!
0
0
2

Jonathan Corbet

For a while now, the kernel's configuration and build systems have been an area of concern for me. Almost nobody truly understands those complex subsystems, which were handled by a single maintainer.

That maintainer, Masahiro Yamada, has just stepped down after eight years on the job:

https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8d6841d5cb20

Happily, Nathan Chancellor and Nicolas Schier have agreed to pick up the build system. The configuration system, instead, is now unmaintained. That ... seems less than optimal.

Thanks to Masahiro for doing this work all these years, and to Nathan and Nicolas for stepping up!
4
22
51
@ptesarik Thanks for the answer!
Yeah, that’s the tricky part, deciding to ignore (or not) when statistics don’t tell us anything about it.
0
0
2

Harry (Hyeonggon) Yoo

Edited 1 month ago
By the way, if you're using mmtests for benchmarking, some results are marked significant (with asterisks) and some are not.

not significant: 17.74 ( -3.72%)
significant: 132.26 * -15.92%*

I assumed the asterisk would have some meaning, but didn't exactly know what it is until I read the code: "significant" means their (baseline and new) confidence intervals do not overlap.

When the variance is high and the number of observations is low, many results may not be marked as significant. However, that doesn’t necessarily mean the results can simply be ignored (?)
1
0
2

Harry (Hyeonggon) Yoo

Edited 1 month ago
Still digesting it, and may be slightly incorrect, but a summary of what I've learned: properly using statistics to compare the performance of computer systems [1] [2].

0. When you get a sample and calculate sample mean, it is likely different from the population mean. Simply comparing two sample means from different computer systems may therefore lead to misleading conclusions, since the observed difference could be due to random sampling variation rather than a real performance difference (especially when the variance is high).

1. Central Limit Theorem indicates that, regardless of the underlying distribution, the sampling distribution of the mean tends to follow normal distribution when the sample size is sufficiently large (typically n >= 30). But to apply CLT, the observations should be independent and collected from the same distribution.

2. Based on the CLT, we can estimate how close the sample mean (to be precise, any population parameter) is likely to be to the population mean. A confidence interval [x, y] with a confidence level of p% means that if we repeated the sampling process many times under the same conditions, about p% of those intervals would contain the population mean.

3. To compare two distributions, confidence intervals can help determine whether the difference between mean values is statistically significant. This can be done by:

- Checking whether the confidence intervals of the two samples do not overlap, or
- Examining the confidence interval for the mean of the differences to check if it does not include 0.

4. Caveat: The CLT assumes that the data is collected independently, meaning one observation does not affect another. In computer systems, this assumption usually does not hold. Caches, memory layout, scheduling decisions etc. can introduce some degree of dependencies between observations.

This can be mitigated by 1) reducing dependence between experiments as much as possible or 2) by applying the bootstrapping method [3].

[1] Jan Kara, Measuring performance regressions, https://youtu.be/HAHhW13ofrg?si=drgegMwXUDegHsQf
[2] Dev Jain, The Art of Computer Systems Performance Analysis: Techniques for Experimental Design, Measurement, Simulation, and Modeling, https://www.amazon.com/Art-Computer-Systems-Performance-Analysis/dp/0471503363
[3] https://en.wikipedia.org/wiki/Bootstrapping_(statistics)
1
1
3
@vbabka @ljs @wagi

right, no matter how many transistors you throw into a cache.
0
0
3
Show older