Posts
522
Following
98
Followers
115
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
@ljs @lkundrak @sj @vbabka

node 1 is cpuless, and
$ numactl --hardware
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11
node 0 size: 11937 MB
node 0 free: 6770 MB
node 1 cpus:
node 1 size: 23954 MB
node 1 free: 23854 MB
node distances:
node 0 1
0: 10 20
1: 20 10

I was like "wtf did I turn on fake numa?" but no.

$ cat /proc/cmdline
BOOT_IMAGE=(hd1,gpt3)/vmlinuz-6.6.0-rc4+ root=UUID=96f9e501-caa5-4c39-bc11-5d104517f08d ro rootflags=subvol=root loglevel=8
2
0
0
@ljs @lkundrak @sj @vbabka

no, I have only a 8 GB DIMM and a 32GB DIMM, and node 0 has 12GB of memory,
node 1 has 23GB of memory lol
1
0
0
@lkundrak
expert? me?
@vbabka @ljs @sj are the experts.
I am just a dumb/curious undergraduate without Ph.D nor B.S. (yet) XD

The main benefit of NUMA architecture is to distribute memory bus traffics to several memory buses instead of a single global bus, because the global bus can be bottleneck as the number of CPUs and memory capacity grows.

A set of CPUs and memory near to those CPUs is called a NUMA node. If a CPU wants to access memory not in the local node, it reads data from a remote node via interconnect (instead of the local, faster bus)

Because local (to cpu) and remote NUMA node has different access latency and bandwidth, OS tries to utilize local node's memory first (ofc that depends on NUMA memory policy of the task/VMA)

But a laptop is too cheap and small system for a single bus to be a bottleneck, so I don't get why the hardware designer decided to adopt NUMA architecture.

And it's really strange that different ranges of physical memory from a single DIMM chip belongs to different NUMA nodes. Do they really have different performance characteristics?
1
1
4
@vbabka that would have been much slower 🤣
hmm it makes no sense because it has 8GB and 32GB DIMMs and node 0 has 12GB ❓

Maybe the board designer knows why
0
0
1

Harry (Hyeonggon) Yoo

until yesterday I didn't know that my laptop has 2 NUMA nodes, but why?
2
0
3
@vbabka that's right ;)
0
0
1
@vbabka
interviewer: Throughout your career how much value did you add to Linux so far?
vbabka: I removed more than I added.
1
0
2

Harry (Hyeonggon) Yoo

Edited 1 year ago
@ljs @cwayne
hmm it might sound strange but relatively young people in Korea don't seem to care about who live on next door anymore..
1
0
2

Harry (Hyeonggon) Yoo

Edited 1 year ago
@cwayne
looks like to hate something first and then find (wrong) reason to explain it
1
0
2

Harry (Hyeonggon) Yoo

Edited 1 year ago
@cwayne
would he/she help them if they go to church :(
1
0
1

Harry (Hyeonggon) Yoo

Edited 1 year ago
Learning how to write a LAVA test definition, but the tricker thing is to decide which tests to run to verify a kernel works fine.

Candidates:
- LTP
- KUnit
- kselftests

btw it is funny that the entire LTP suite gets killed every time it runs oom testcases. and LTP takes quite long time for a lightweight testing.

hmm... maybe run only a smaller subset of them?
0
0
1
@ljs @kernellogger
it won't land on the mainline ;)
(the consensus seems to be not using static calls in __exit)
but was fun!
0
0
2
Hmm both of ways seem to be very unstable for emulated CXL memory.
Crashes very easily when the memory is actually accessed by applications or the kernel.
0
0
0

Harry (Hyeonggon) Yoo

Edited 1 year ago
Hmm I still don't get what's the point of accessing volatile CXL memory via mmap() to /dev/daxX.Y files.
0
0
0
@kernellogger
why did I read it as linux SRCU (Sleepable RCU) ;)
it's nice tool though!
1
0
2

Harry (Hyeonggon) Yoo

Edited 1 year ago
Today I learned:

CXL memory can be mapped as 'System RAM' or 'Soft Reserved' by platform firmware. Or it can be dynamically provisioned by (since v6.3) CXL region driver.

And 'Soft Reserved' or dynamically provisioned CXL RAM region can be used in two ways:

1. Applications mmap() to /dev/daxX.Y files, just like traditional persistent memory devices.
2. Kernel use it as System RAM via dax_kmem driver.

And a weird fact is that when dax_kmem onlines CXL (and other performance-differentiated like pmem) memory, to ZONE_NORMAL, not ZONE_MOVABLE.
2
0
1
@lkundrak @bagder

for a moment
was wondering whose face it is
0
0
1
Working on a series for 6.8 probably...
So far...
26 files changed, 39 insertions(+), 4375 deletions(-)
3
2
16
@djlink

looks like a horror movie poster lol
1
0
1
Show older